一.matplotlib是什么
matplotlib是一个在Python中将数据可视化的第三方包,和matlab中的plot指令,和gnuplot类似,都是将数据进行可视化的工具。matplotlib是一个数学绘图库,可以用它来制作折线图和散点图等的图表。
二.基础指令
折线图
1. 绘制折线图
首先导入matplotlib中的pyplot,pyplot中包含了很多画图的函数,和matlab中画图类似,需要以下几个要素:
- 绘图区域
- 横纵坐标
- 数据
因此根据这三个要素我们来绘制一幅折线图
import matplotlib.pyplot as plt #导入matplotlib
squares = [1, 4, 9, 16, 25] #数据点
plt.plot(squares) #绘制图表
plt.show() #显示图表
2. 修改标签文字和线条粗细
#导入matplotlib包
import matplotlib.pyplot as plt
from matplotlib.pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei'] # 显示中文
#设置数据点
squares = [1, 4, 9, 16, 25]
#设置图表标题
plt.title("计算平方和",fontsize = 24)
#给坐标轴添加标签
plt.xlabel("数值", fontsize = 14)
plt.ylabel("平方和", fontsize = 14)
#设置线条粗细
plt.plot(squares, linewidth = 5)
plt.show()
- title()给图表指定标题
- linewidth()设置plot()绘制的线条粗细
- xlabel()和ylabel()让你能够为每条轴设置标题
3. 矫正图形
我们发现4的平方并非是25,所出现的原因如下:我们为plot()提供一系列数字时,它的默认第一个数据点对应的x坐标值为0,但是我们第一个数据点对应的坐标值是1。为了改变这个情况,我们新建一个列表存放x轴的数据。
#导入matplotlib包
import matplotlib.pyplot as plt
from matplotlib.pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei'] # 显示中文
#设置数据点
input_value = [1, 2, 3, 4, 5]
squares = [1, 4, 9, 16, 25]
#设置图表标题
plt.title("计算平方和",fontsize = 24)
#给坐标轴添加标签
plt.xlabel("数值", fontsize = 14)
plt.ylabel("平方和", fontsize = 14)
#设置线条粗细
plt.plot(input_value, squares, linewidth = 5)
plt.show()
改变plot()中的参数,添加x轴数据,结果如下:
此时52=25是正确的。
散点图
1.绘制散点图
绘制散点图的函数是scatter(),对他传递一对x和y坐标,就可以在指定位置绘制一个点。
plt.scatter(3, 9)
plt.show()
2.绘制一系列点
思路其实与折线图一样,用两个列表分别存储x和y坐标,再用scatter()把它们绘制出来就可以了
x_value = [1, 2, 3, 4, 5]
y_value = [3, 4, 7, 9, 11]
#s=100表示点的大小
plt.scatter(x_value, y_value, s=100)
plt.show()
结果如下图所示:
3.设置坐标区间
有时候需要显示的数据点很多,但我们只需要看一个范围内的数据,我们就可以设置图表的坐标轴取值范围。
#x坐标值从1到1000
x_value = list(range(1,1001))
y_value = [x**2 for x in x_value]
#s表示点的大小
plt.scatter(x_value, y_value, s=40)
#设置每个坐标轴的取值范围
plt.axis([0, 1100, 0, 1100000])
plt.show()
- axis([横坐标起点,横坐标终点,纵坐标起点,纵坐标终点])
结果如下:
4.修改数据点颜色
要修改数据点颜色时,在scatter()中传递实参c,c是一个列表,其中包含三个0-1之间的小数值,分别表示红色、绿色和蓝色分量(类似于RGB)
- 蓝色: ‘b’ (blue)
- 绿色: ‘g’ (green)
- 红色: ‘r’ (red)
- 蓝绿色(墨绿色): ‘c’ (cyan)
- 红紫色(洋红): ‘m’ (magenta)
- 黄色: ‘y’ (yellow)
- 黑色: ‘k’ (black)
- 白色: ‘w’ (white)
- 灰度表示: e.g. 0.75 ([0,1]内任意浮点数)
- RGB表示法: e.g. ‘#2F4F4F’ 或 (0.18, 0.31, 0.31)
#x坐标值从1到1000
x_value = list(range(1,1001))
y_value = [x**2 for x in x_value]
#s表示点的大小
plt.scatter(x_value, y_value, s=40, edgecolors='none',
c = (0,1,0))
#设置每个坐标轴的取值范围
plt.axis([0, 1100, 0, 1100000])
plt.show()
5.渐变色
在数据可视化中,我们可以用较浅的颜色来表示小数值,用较深的颜色来显示较大的值。
plt.scatter(x_value, y_value, s=40, edgecolors='none',
c = y_value , cmap = plt.cm.Blues)
- 将参数c设置成了一个y值列表,并使用参数cmap告诉pyplot使用哪个颜色映射。这些代码将y值较小的点显示为浅蓝色,并将y值较大的点显示为深蓝色,结果如下
6.保存图表
savefig()可以自动将图表保存到文件中,该函数的第一个实参指定要以什么样的文件名保存图表,一般来说这个文件将存储在该代码所在的目录中;第二个实参将图表多余的空白区域裁剪掉。
7.清空图表
-
plt.cla()
-
plt.close(0)# 关闭图 0
-
plt.close(‘all’) 关闭所有图