Python数据可视化——生成数据(一)
数据可视化时通过可视化表示来探索数据,它与数据挖掘紧密相关,数据挖掘是指使用代码来探索数据集的规律和关联。
Matplotlib时一个数学绘图库,可以使用它制作简单的图表,如折线图和散点图。
1、安装matplotlib
首先,需要安装matplotlib。
1.1 Linux系统中安装matplotlib
如果使用系统自带的Python版本,可以使用系统的包管理器来安装,只需执行命令:
$ sudo apt-get install python3-matplotlib
如果安装了较新版本的Python,则要先安装matplotlib依赖的一些库,例如:
$ sudo apt-get install pythoon3.5-dev python3.5-tk tk-dev
$ sudo apt-get install libfreetype6-dev g++
再使用pip安装matplotlib:
$ pip install --user matplotlib
1.2 OS X系统中安装matplotlib
Apple的标准Python安装自带了matplotlib。要检查是否安装了matplotlib,可以打开一个终端并尝试导入matplotlib。如果没有自带,可以使用pip安装:
$ pip install --user matplotlib
注意:安装包时可能要使用pip3,而不是pip。如果命令不能顺利安装,可能需要删除标志--user。
1.3 Windows系统中安装matplotlib
在Windows系统中,同样可以使用pip命令安装:
pip install package_name
在 Anaconda虚拟环境下,还可以使用conda命令来安装:
conda activate env_name
具体教程可以参考博客:深度学习中项目的环境配置与依赖下载
1.4 验证matplotlib
安装完必要的包之后,对安装进行验证。启用终端,在Python环境下,尝试导入matplotlib:
>>> import matplotlib
>>>
如果没有出现任何错误信息,就说明安装成功。
1.5 matplotlib画廊
要查看使用matplotlib可制作的各种图表,可以访问:Matplotlib — Visualization with Python的示例,点击图表即可查看用于生成图表的代码。
2、绘制简单的折线图
只需调用matplotlib,就能实现数据可视化:
import matplotlib.pyplot as plt
squares = [1,4,9,16,25]
plt.plot(squares)
plt.show()
先导入matplotlib中的一个模块pyplot并为其指定别名plt,以免反复输入pyplot。大多程序都是这样做的。模块pyplot中包含很多用于生成图表的函数。
接着创建了一个列表存储数据,再将该列表传递给函数plot()。plt.show()打开matplotlib查看器,并显示绘制的图形。
如图所示,显示器能缩放和导航图形,以及保存图形。
2.1 修改标签文字和线条粗细
import matplotlib.pyplot as plt
from matplotlib.pyplot import tick_params
from sympy.printing.pretty.pretty_symbology import line_width
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()
代码中,参数linewidth指定了绘制的线条粗细。函数title()指定图表标题。参数fontsize指定了图表中文字的大小。函数xlabel()和ylabel()为每个轴设置轴标题。函数tick_params()设置刻度的格式,参数axis='both'表明实参同时影响x轴和y轴,并将刻度的字号设为14(labelsize=14)。
2.2 校正图形
上图中,y轴平方数结果并没有对应x轴的数,这是因为,当只向plot()函数提供一个参数(即[1,4,9,16,25])时,默认第一个数据点对应x=0的位置。
为改变这种默认,可以向函数提供两个参数:
import matplotlib.pyplot as plt
from matplotlib.pyplot import tick_params
from sympy.printing.pretty.pretty_symbology import line_width
input_value =[1,2,3,4,5]
squares = [1,4,9,16,25]
plt.plot(input_value,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()
同时提供输入和输出数据,现在可以正确绘制图形。
使用plot()函数可以指定各种实参,还可以使用众多函数对图形进行定制。
2.3 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',which='major',labelsize=14)
plt.show()
调用scatter(),并设置参数s设置点的大小.
2.4 scatter()绘制一系列点
要绘制一系列点,可以向scatter()传递两个分别包含x值和y值的列表:
import matplotlib.pyplot as plt
x_value = [1,2,3,4,5]
y_value = [1,4,9,16,25]
plt.scatter(x_value,y_value,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',which='major',labelsize=14)
plt.show()
2.5 自动计算数据
手动计算列表的值效率低下,尤其是点的数量多时。可以使用Python循环来完成这种重复计算:
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.title("square numbers",fontsize=24)
plt.xlabel("value",fontsize=14)
plt.ylabel("square of value",fontsize=14)
#设置刻度的取值范围
plt.axis([0,1100,0,1100000])
plt.show()
首先创建一个列表作为x轴的值,接着用列表表达式生成y轴的值,然后将两个列表传递给scatter()。
由于数据集很大,因此将点设置得较小,并使用函数axis()指定每个坐标轴的取值范围。函数axis()要求提供四个值:x坐标的最小值和最大值,y坐标的最小值和最大值。
2.6 删除数据点的轮廓
matplotlib允许给每个点指定颜色,默认为蓝色点和黑色轮廓,如果点数过多黑色轮廓可能粘在一起。要删除点的轮廓,可以给scatter()函数传递实参edgecolor='none':
plt.scatter(x_values,y_values,edgecolor='none',s=40)
2.7 自定义颜色
要修改数据点的颜色,可以向scatter()传递参数c,并设置要使用的颜色:
plt.scatter(x_values,y_values,c='red',edgecolor='none',s=40)
还可以自定义颜色。传递参数c并将其设置为一个元组,元组包含三个0-1之间的小数值,分别代表红,绿,蓝色分量。例如:
plt.scatter(x_values,y_values,c=(0,0,0.8),edgecolor='none',s=40)
值越接近0,指定的颜色越深;值越接近1,指定的颜色越浅。
2.8 使用颜色映射
颜色映射(colormap)是一系列颜色,从起始颜色渐变到结束颜色。在可视化中,颜色映射主要用于突出数据的规律,例如使用较浅的颜色来显示较小的值,使用较深的颜色来显示较大的值。
模块pyplot内置了一组颜色映射。要使用颜色颜色,只需告诉pyplot如何设置数据集中的每个点的颜色。
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,c=y_values,cmap=plt.cm.Blues,edgecolors='none',s=40)
#设置标题并加上标签
plt.title("square numbers",fontsize=24)
plt.xlabel("value",fontsize=14)
plt.ylabel("square of value",fontsize=14)
#设置刻度的取值范围
plt.axis([0,1100,0,1100000])
plt.show()
将参数c设置为y值列表,并使用参数cmp告诉pyplot使用哪个颜色映射。结果是将较小的y值显示为浅蓝色,将较大的y值显示为深蓝色。
要了解pyplot中的所有的颜色映射,可以访问Matplotlib — Visualization with Python,单击Examples,向下找到Color Examples,点击colormaps_reference。
2.9 自动保存图表
要让程序自动将图表保存到文件中,可以将plt.show()替换为plt.savefig():
plt.savefig('squares_plot.png',bbox_inches='tight')
第一个参数指定文件名,这个png文件将保存到程序所在文件目录中;第二个参数指定将图表多余的空白区域裁剪掉。如果要保留多余的空白区域,可以省略这个参数。
删除多余空白:
不删除空白: