社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python如何实现数据可视化

python • 6 年前 • 553 次点击  


数据可视化

安装  Matplotlib

在Linux系统中安装matplotlib

Ubuntu17.10内置Python2版本和Python3版本,可以采用下面的方式安装Matplotlib。

$sudo apt-get install python3-matplotlib

如果你使用的是Python 2.7,执行如下命令:

$ sudo apt-get install python-matplotlib

如果你安装了pip 就可以使用下面的方式安装:

$ pip install matplotlib

如果你的安装比较慢,可以尝试这种方式来安装:

$ pip3 install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple


常用的国内源地址有:

阿里云 http://mirrors.aliyun.com/pypi/simple/
豆瓣(douban) http://pypi.douban.com/simple/
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/

测试matplotlib

#如何没有问题就是安装成功了
>>>import matplotlib
>>>


绘制简单的折线图


下面来使用 matplotlib 绘制一个简单的折线图,再对其进行定制,以实现信息更丰富的数据可视化。我们将使用平方数序列 1 、 4 、 9 、 16 和 25 来绘制折线图。

import matplotlib.pyplot as plt 
squares = [1, 4, 9, 16, 25]
plt.plot(squares)
plt.show()

plt.show() # 打开 matplotlib 查看器,并显示绘制的图形。

修改标签文字和线条粗细

图形表明数字是越来越大的,但标签文字太小,线条太细。所幸 matplotlib 让你能够调整可视化的各个方面。

import matplotlib.pyplot as plt 
squares = [1, 4, 9, 16, 25]
plt.plot(squares, linewidth=5)
# 设置图表标题,并给坐标轴加上标签
plt.title("Square Numbers", fontsize=24)
plt.xlabel("Value", fontsize=14)
plt.ylabel("Square of Value", fontsize=14)
# 设置刻度标记的大小
plt.tick_params(axis='both', labelsize=14)
plt.show()


校正图形

图形更容易阅读后,我们发现没有正确地绘制数据:折线图的终点指出 4.0 的平方为 25 !下 面来修复这个问题。

import matplotlib.pyplot as plt 
input_values = [1, 2, 3, 4, 5]
squares = [1, 4, 9, 16, 25]
plt.plot(input_values, squares, linewidth=5)
# 设置图表标题,并给坐标轴加上标签
plt.title("Square Numbers", fontsize=24)
plt.xlabel("Value", fontsize=14)
plt.ylabel("Square of Value", fontsize=14)
# 设置刻度标记的大小
plt.tick_params(axis='both', labelsize=14)
plt.show()

使用scatter()绘制散点图并设置其样式

有时候,需要绘制散点图并设置各个数据点的样式。要绘制单个点,可使用函数 scatter() ,并向它传递一对 x 和 y 坐标,它将在指定位置绘制一 个点:

import matplotlib.pyplot as plt 
plt.scatter(2, 4)
plt.show()


下面来设置输出的样式,使其更有趣:添加标题,给轴加上标签,并确保所有文本都大到能够看清:

import matplotlib.pyplot as plt 
plt.scatter(2, 4, s=200)
# 设置图表标题并给坐标轴加上标签
plt.title("Square Numbers", fontsize=24)
plt.xlabel("Value", fontsize=14)
plt.ylabel("Square of Value", fontsize=14)
# 设置刻度标记的大小
plt.tick_params(axis='both', labelsize=14)
plt.show()


使用scatter()绘制一系列点

要绘制一系列的点,可向 scatter() 传递两个分别包含 x 值和 y 值的列表,如下所示:

import matplotlib.pyplot as plt 
x_values = [1, 2, 3, 4, 5]
y_values = [1, 4, 9, 16, 25]
plt.scatter(x_values, y_values, s=100)
# 设置图表标题并给坐标轴加上标签
plt.title("Square Numbers", fontsize=24)
plt.xlabel("Value", fontsize=14)
plt.ylabel("Square of Value", fontsize=14)
# 设置刻度标记的大小
plt.tick_params(axis='both', which='major', labelsize=14)
plt.show()

自动计算数据

手工计算列表要包含的值可能效率低下,需要绘制的点很多时尤其如此。

import matplotlib.pyplot as plt 
x_values = list(range(1, 1001))
y_values = [x**2 for x in x_values]
plt.scatter(x_values, y_values, s=40)
# 设置每个坐标轴的取值范围
plt.axis([0, 1100, 0, 1100000])
plt.show()

matplotlib允许你给散点图中的各个点指定颜色。
默认为蓝色点和黑色轮廓,在散点图包含的数据点不多时效果很好。
但绘制很多点时,黑色轮廓可能会粘连在一起。
要删除数据点的轮廓,可在调用scatter()时传递实参edgecolor='none'

自定义颜色

要修改数据点的颜色,可向scatter()传递参数c,并将其设置为要使用的颜色的名称,如下所示:

plt.scatter(x_values, y_values, c='red', edgecolor='none', s=40)

你还可以使用RGB颜色模式自定义颜色。

plt.scatter(x_values, y_values, c=(0, 0, 0.8), edgecolor='none', s=40)


(0, 0, 0.8) 它们分别表示红色、绿色和蓝色分量。值越接近0,指定的颜色越深,值越接近1,指定的颜色越浅。


使用颜色映射

颜色映射(colormap)是一系列颜色,它们从起始颜色渐变到结束颜色。在可视化中,颜色映射用于突出数据的规律,例如,你可能用较浅的颜色来显示较小的值,并使用较深的颜色来显示较大的值。


import matplotlib.pyplot as plt 
x_values = list(range(1001))
y_values = [x**2 for x in x_values]
plt.scatter(x_values, y_values, c=y_values, cmap=plt.cm.Blues, edgecolor='none', s=40)


这些代码将y值较小的点显示为浅蓝色,并将y值较大的点显示为深蓝色。

自动保存图表

plt.savefig('squares_plot.png', bbox_inches='tight')


绘制随机漫步图

下面的代码将随机漫步的所有点都绘制出来:

import matplotlib.pyplot as plt 
from random_walk import RandomWalk
# 创建一个RandomWalk实例,并将其包含的点都绘制出来
rw = RandomWalk()
rw.fill_walk()
plt.scatter(rw.x_values, rw.y_values, s=15)
plt.show()


参考文献:《Python编程:从入门到实战》


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/uVtNpoddRT
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/12736
 
553 次点击