如果你是新手,不会使用Python作图,那么看完这篇文章,你将会掌握作图的步骤和规律。
第一步:导入包
import matplotlib.pyplot as plt
第二步:创建Figure
fig = plt.figure()
其中,可选参数figsize可以控制的图片大小,fig = plt.figure(figsize=(8,4))
第三步:创建子图
不能通过空Figure绘图,需调用add_subplot创建一个或多个subplot:
ax1 = fig.add_subplot(2,2,1)
ax2 = fig.add_subplot(2,2,2)
ax3 = fig.add_subplot(2,2,3)
其中,ax1 = fig.add_subplot(2,2,1) 的参数表示构建2x2的子图中的第1个。
当然,如果我们只需要写画一个图的话,只要ax = fig.add_subplot(1,1,1)
即可。
第四步:画曲线图 ax.plot(x, y, 'g--')
x,y表示对应要作图的x轴和y轴的坐标,‘g–’ 是用来指定颜色和线型,这里为绿色虚线。
也可以通过这种显示的表达: ax.plot(x, y, linestyle='--', color='g')
第五步:显示图形 plt.show()
如果在调用该函数时,发现并没有显示图片的话,可以在创建figure前加上plt.close()
.
合并代码:
import numpy as np
#第一步:导入matplotlib包
import matplotlib.pyplot as plt
#构造一些二维的点,你可以使用自己的数据
x = np.linspace(0, 2*np.pi, 50)
y = np.sin(x)
#第二步:创建Figure
fig = plt.figure(figsize=(8,6))
#第三步:创建子图
ax = fig.add_subplot(1, 1, 1)
#第四步:画曲线图
ax.plot(x, y, 'g--')
#第五步:显示图形
plt.show()
其他
上面几步可以做出最基本的图,下面可以进行更好的修饰图片:
- 图片背景颜色
plt.figure(facecolor='#B7B7B7')
控制外面大图的背景,颜色代码可点击参考资料fig.add_subplot(1, 1, 1, axisbg='#FFFACD')
控制小图的背景色(覆盖在figure创建的图层上) - 设置x轴y轴坐标范围
ax.axis([0, 2*np.pi, -1.2, 1.5])
对应参数表示[xmin, xmax, ymin, ymax] - 在图中添加文本注释
ax.text(3, 0.2, 'x=3')
表示在(3, 0.2)处添加文本’x=3’ - 标签
ax.set_xlabel('x value')
添加坐标轴的标签ax.set_title('My plot', fontsize=14)
添加标题, fontsize为标题字体大小 - 添加图例
ax.legend(loc='best')
loc表示图例的位置,’best’为自适应最佳位置 - 打开栅格
ax.grid(True)
- 单独标出某个点
ax.plot(point_x, point_y, 'ro')
表示在(point_x, point_y)处标了一个红色的点 - 带箭头指向的文本注释
ax.annotate('max', xy=(point_x, point_y), xytext=(2.0, 1.3),\
表示在(point_x, point_y)处标了一个红色的点
arrowprops=dict(facecolor='g', headwidth=12, width=5))
其中,xy对应箭头指向的点,xytext对应文本位置,arrowprops控制箭头属性 - 修改坐标轴刻度
ax.set_xticks([0, 1, 2, 3, 4, 5])
ax.set_xticklabels(['zero','one','two','three','four','five'], rotation=30, fontsize='small')
将原来的x轴[0, 1, 2, 3, 4, 5]替换为自定义的[‘zero’,’one’,’two’,’three’,’four’,’five’],rotation为旋转角度,fontsize为字体
完整代码如下:
import numpy as np
#第一步:导入matplotlib包
import matplotlib.pyplot as plt
#构造一些二维的点,你可以使用自己的数据
#在0和2*pi之间产生50个均匀分布,赋值给x
x = np.linspace(0, 2*np.pi, 50)
y1 = np.sin(x)
y2 = np.cos(x)
#第二步:创建Figure
#facecolor控制外面大图的背景
fig = plt.figure(figsize=(8,6), facecolor='#B7B7B7')
#第三步:创建子图
#axisbg控制小图的背景色(覆盖在figure创建的图层上)
ax = fig.add_subplot(1, 1, 1, axisbg='#FFFACD')
#第四步:画曲线图
#label用来给这条曲线做标签,调用legend()可以显示
ax.plot(x, y1, 'b-', label='sin(x)') #画y1图像
ax.plot(x, y2, 'r--', label='cos(x)') #画y2图像
#设置x轴y轴坐标范围,[xmin, xmax, ymin, ymax]
ax.axis([0, 2*np.pi, -1.2, 1.5])
#在图中添加文本注释
ax.text(3, 0.2, 'x=3')
#添加标签
ax.set_xlabel('x value') #x轴的标签
ax.set_ylabel('y value') #y轴的标签
ax.set_title('My plot', fontsize=14) #标题
#添加图例
ax.legend(loc='best') #loc表示图例的位置
#打开栅格
ax.grid(True)
point_x = np.pi/2.0 #待标注点(point_x,point_y)
point_y = 1
ax.plot(point_x, point_y, 'ro') #先画点
#再画箭头,xy对应箭头指向的点,xytext对应文本位置,arrowprops控制箭头属性
ax.annotate('max', xy=(point_x, point_y), xytext=(2.0, 1.3),\
arrowprops=dict(facecolor='g', headwidth=12, width=5))
#如果需要修改坐标轴刻度,可以使用下面2句
#ax.set_xticks([0, 1, 2, 3, 4, 5])
#ax.set_xticklabels(['zero','one','two','three','four','five'], rotation=30, fontsize='small')
#第五步:显示图形
plt.show()
以上方法是参考《利用Python进行数据分析》和网上一些资料自己总结的。
我们还可以采用另外一种画图方法,稍有不同,简单介绍一下:
#方法二,稍有不同
import numpy as np
#导入matplotlib包
import matplotlib.pyplot as plt
#构造一些二维的点,你可以使用自己的数据
#在0和2*pi之间产生50个均匀分布,赋值给x
x = np.linspace(0, 2*np.pi, 50)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = y1 + y2
#创建Figure
fig = plt.figure(figsize=(10,8))
#我们创建3个子图
#前面2个数'22'表示2x2的子图,第3个数'1'表示在第1个子图中绘图
plt.subplot(221)
#另一种设置x轴y轴坐标范围的方法
plt.xlim([0, 2*np.pi]) #设置x轴范围
plt.ylim([-1.2, 1.2])
plt.grid(True) #打开栅格
plt.plot(x, y1)
plt.subplot(222)
#用plt也可以同时设置x,y轴坐标
plt.axis([0, 2*np.pi, -1.2, 1.2])
plt.plot(x, y2)
#可以通过axisbg参数设置图片的背景色
plt.subplot(223, axisbg='#FAFAD2')
plt.plot(x, y3)
plt.show()
参考资料:《利用Python进行数据分析》第8章
后记:
欢迎点赞,评论和转发,转载请注明出处!
这是我的第一篇博客,每一篇博客我都会用心去写。这不仅是一个记录和分享的过程,同时也是见证自我成长的过程。如果您发现有什么错误,请及时指出来。最后,希望我的博客对你有些许的帮助。