参数配置
为了让图片可以显示中文,需要有必要的参数配置
plt.rcParams['font.sans-serif'] = 'SimHei' # 可以显示中文
plt.rcParams['axes.unicode_minus'] = False # 可以显示负号
1. 二维坐标画折线图
-
plt.plot(x, y)
绘制二维折线图x = np.linspace(0, 50, 500) y = np.sin(x) plt.plot(x, y) # 绘制y = sin(x)图 plt.show() # 画图展示
plt.plot(x ,y)
: 在坐标中表现为x与y的映射,所以x和y要采用相同的数据类型、相同的数据规模plt.show()
: 将绘制的图进行具体展示,如果在show方法之前使用了多个plt.plot()
则会在同一个坐标中显示多个图像
y = pd.DataFrame({'x0':[1,2,3], 'x1':[4,5,6]}) x = pd.DataFrame({'y0':[1,2,3], 'y1':[4,5,6]}) plt.plot(y,x) # 在同一张图中绘制了x0与y0 x1与y1两个函数 # 等价于同时使用多个plt.plot绘制多个函数 plt.show()
plt.plot(x, y)
绘制折线图就是将(x, y)的坐标用光滑线进行连接
-
plt.plot(x, y)
的参数设置x = np.arange(0, 10) y = x**2 plt.plot(x,y, # 传入x , y 作为绘图数据 color = "red", # 设置线为红色 linestyle = "--", # 设置绘图的线为虚线 marker = "o", # 设置数据点为实心圆 (默认不显示数据点) markersize = 5, # 设置实心圆的大小 markerfacecolor = 'blue', # 设置实心圆的内部为蓝色 markeredgecolor = "grey", # 设置实心圆的边缘为灰色 ) plt.show()
-
linestyle
用于设置线段的样式参数类型 实线 点 虚线 线点 英文参数 linestyle = ‘solid’ linestyle = ‘dotted’ linestyle = ‘dashed’ linestyle = ‘dashdot’ 符号参数 linestyle = ‘-’ linestyle = ‘:’ linestyle = ‘–’ linestyle = ‘-.’ -
marker
用于设置数据点的样式参数类型 数据点 实心圆 五角星 x形 上下左右三角形 符号参数 marker =‘.’ marker =‘o’ marker =‘*’ marker =‘x’ marker =‘^v<>’ (取其一) -
color
用于设置颜色markerfacecolor
、markeredgecolor
相同参数类型 红色 蓝色 绿色 黄色 英文 color = ‘red’ color = ‘blue’ color = ‘green’ color = ‘yellow’ 十六进制 color = ‘#FF0000’ color = ‘#0000FF’ color = ‘#008000’ color = ‘#FFFF00’ 颜色参数较多,不一一列举
-
2. 二维坐标画散点图
-
plt.scatter(x, y)
画二维散点图x = np.random.normal(0,1,1024) y = np.random.normal(0,1,1024) plt.scatter(x,y, # 传入数据 s = 5, # 设置散点的尺寸 c = 'r', # 设置散点的颜色 marker='*', # 设置散点的形状 alpha = 0.5 # 设置可见度 ) plt.show()
在散点图
plt.scatter(X, y)
中,使用s c
设置散点的大小和颜色,区别在plt.plot()
中的点的设置 -
给具体的点添加注释
plt.annotate(text="annotation", # 设置注释的文字 xy=(2, 1), # 需要注释的点的坐标 xytext=(+30, -10), # 对注释文字的位置调整 textcoords='offset points', # 配合xytext使用,加上就行 fontsize=10, # 设置注释的字体 arrowprops=dict(arrowstyle='->') # 设置注释文字的指向具体点的样式 )
plt.annotate()
添加注释,由于这个功能本身就不常用,掌握上述即可。xytext(a, b)
一般配合textcoords='offset points'
一起使用,a和b的值需要慢慢调试arrowprops=dict(arrowstyle='->')
设置指向方式,直接使用即可plt.text()
也可以添加文字,见柱状图部分
3. 二维坐标画柱状图
-
plt.bar(x, y)
绘制柱状图n = 12 x = np.arange(n) Y1 = (1 - x / n) * np.random.uniform(0.5, 1.0, n) Y2 = (1 - x / n) * np.random.uniform(0.5, 1.0, n) plt.bar(x, Y1, # 设置数据 facecolor='r', # 柱子的内部颜色 edgecolor='b', # 设置柱子的边缘颜色 width=[i/10 for i in range(1, 13)] # 设置柱子的宽度 ) for a, b in zip(x, Y1): plt.text(a, b, # 选定要添加文字的点 s='%.2f' % b) # 输入要添加的文字 plt.show()
plt.bar()
的参数x ,y
: 传入了柱状图的数据,绘制的柱状图以x为中点,width为宽度,y为高度width
:设置了柱状图的宽度,使用列表可以设置每个柱子的宽度,使用单一数据可以统一设定所有柱子的宽度。
plt.text(x, y, s)
: (x, y)是要添加文字的坐标, s是要给该坐标添加的文字,配合plt.bar()
可以实现给柱子顶端添加具体的数据。
-
plt.bar(x-width/2, y1, width=width), plt(x+width/2, y2 ,width = width)
实现分组柱状图labels = ['G1', 'G2', 'G3', 'G4', 'G5'] men_means = [20, 34, 30, 35, 27] women_means = [25, 32, 34, 20, 25] x = np.arange(5) width = 0.4 plt.bar(x-width/2 ,men_means, # 设置数据, width=width, # 柱子宽度 label = 'men_means') # 设置标签 plt.bar(x+width/2, women_means, width=width, label = 'women_means') plt.xticks(x, labels=labels) # 横坐标替换 plt.legend() # 显示图例 plt.show()
- 当需要画分组柱状图时,通过调节柱子的中点位置
(x-width/2)
和(x+width/2)
实现在同一个坐标系中画出两组柱状图
- 当需要画分组柱状图时,通过调节柱子的中点位置
4. 坐标轴的相关设置
-
折线图的属性设置
plt.title('title') # 设置图像标题 plt.xlim((-1, 4)) # 设置x轴的取值范围 plt.ylim((-2, 2)) # 设置y轴的取值范围 plt.xlabel("x_axes") # 设置x轴的标签 plt.ylabel("y_axes") # 设置y轴的标签 plt.xticks(np.arange(-1, 3),['a', 'b', 'c', 'd']) # 给x轴的刻度取别名 plt.yticks(np.arange(-1, 1), ['good', 'well']) # 给y轴的刻度取别名
plt.xlim((a, b)) plt.ylim((c, d))
设定了x轴和y轴的取值范围plt.xticks(<刻度>, <别名>)
使用这个方法时,x轴和y轴只会显示刻度对应的别名,但是本身的范围仍然是xlim()
所定义的范围
-
坐标轴的位置设置
plt.plot(x, y) ax = plt.gca() # 获取图的坐标轴对象 ax.spines['bottom'].set_position(('data', 0)) # 设置底部的坐标轴的位置为y轴为0的位置 ax.spines['bottom'].set_color('red') # 设置底部坐标轴的颜色
plt.gca()
:返回了plt图的坐标轴对象ax.spines['bottom']
:选中了底部轴set_position(('data', 0))
: 设置坐标轴的位置set_color('red')
: 设置选中的坐标轴的颜色
-
设置图例
x = np.arange(4) y = x*2+5 plt.figure() plt.plot(y,x, label = 'y = f(x)') # 用 label给图像设置标签 plt.plot(x,y, label = 'x = f(y)') # 用 label给图像设置标签 plt.legend(loc = 'upper right') # 将图例显示在右上角 plt.show()
-
plt.legend(loc = 'upper right')
loc设置了图例的位置,位置参数如下位置 字符表示 数字表示 右上 loc = ‘upper right’ loc = 1 左上 loc = ‘upper left’ loc = 2 左下 loc = ‘lower left’ loc = 3 右下 loc = ‘upper right’ loc = 4
-
-
打开网格线,
plt.grid()
plt.grid() # 显示网格线 plt.grid(b=True, axis='x') #只显示x轴网格线 plt.grid(b=True, axis='y') #只显示y轴网格线
如有错误,还请指正,持续更新ing