Matplotlib是⼀个Python 2D,3D绘图库,它以多种硬拷⻉格式和跨平台的交互式环境⽣成出版物质量的图形。 MatplotlibMatplotlib中文网、Matplotlib官方中文文档。https://www.matplotlib.org.cn/
1.模块导⼊
import matplotlib.pyplot as plt #使⽤pyplot API
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置字体,解决中⽂⽆法显示问题
2.绘制点和线
#使⽤scatter⽅法绘制⼀个点
x1 = np.array([6])
y1 = np.array([4])
plt.scatter(x1,y1)
plt.show()
#使⽤plot⽅法绘制⼀条ju线
x2 = np.array([1,9])
y2 = np.array([1,8])
plt.plot(x2,y2)
plt.show()
#把点和线画在⼀起,并设置样式
plt.scatter(x1,y1,color='blue')
plt.plot(x2,y2,color='red',linewidth=3,linestyle='--')
plt.text(5.2, 3, '⽂字说明',fontdict={'size': 16, 'color': 'b'})
plt.show()
3.使⽤figure绘制多图
⼀个figure代表⼀张图;
上⾯的例⼦,直接调⽤scatter(),默认为⽤户创建了⼀张图figure;如果要定制图的属性,⽐如:⼤⼩,就要显示的创建⼀个figure;
#再创建⼀张图,并且设置图的⼤⼩是宽=3cm,⾼=5cm; plt.figure(figsize=(3,5))
#(2,2,1)中,表示2⾏2列,1表示索引位置;从左上⻆到右下⻆依次增加;⼦图矩阵⾏列数<10,所以(2,2,1)也可以写成(221)
plt.subplot(2,2,1) plt.plot(x2,y2,color='red',linewidth=3,linestyle='--') plt.text(5.2, 3, '1',fontdict={'size': 16, 'color': 'b'}) plt.subplot(2,2,2) plt.plot(x2,y2,color='red',linewidth=3,linestyle='--') plt.text(5.2, 3, '2',fontdict={'size': 16, 'color': 'b'}) plt.subplot(2,2,3) plt.plot(x2,y2,color='red',linewidth=3,linestyle='--') plt.text(5.2, 3, '3',fontdict={'size': 16, 'color': 'b'}) plt.subplot(2,2,4) plt.plot(x2,y2,color='blue',linewidth=3,linestyle='--') plt.text(5.2, 3, '4',fontdict={'size': 16, 'color': 'b'})
4.设置坐标(#当全是数字时,就会按照数值从⼩到⼤有序排列)
x=[25,'Feb','Mar',20,'May']
y=['h',100,'c',33,'k']
plt.plot(x,y)
设置坐标范围
plt.xlim(0,8) #设置x轴坐标范围,从0到8
plt.ylim(0,5) #设置y轴坐标范围,从0到5
plt.scatter(x1,y1,color='blue')
plt.plot(x2,y2,color='red',linewidth=3,linestyle='--')
plt.show()
设置坐标标签
plt.xlabel('I am x',fontsize=15) #设置x轴坐标标签
plt.ylabel('我是y',fontsize=15) #设置y轴坐标标签
plt.scatter(x1,y1,color='blue')
plt.plot(x2,y2,color='red',linewidth=3,linestyle='--')
plt.show()
设置图例
x3 = x2
y3 = y2 + 3
plt.plot(x2,y2,color='red',linewidth=3,linestyle='--', label='红⾊haha')
plt.plot(x3,y3,color='blue',linewidth=3,linestyle='-', label='蓝⾊')
#图例上显示的⽂字图元等信息均来源于plot函数中的label、linestyle、color等属性;
plt.legend(loc='lower right')
plt.show()
plt.annotate()函数⽤于在图中做⽂字标注;第⼀个参数s为标注的⽂字;
xy参数为被标注的坐标点;
xycoords='data'表示使⽤被注释对象的坐标系统(默认); xytext=(+30, -30)表示标注的⽂字的位置;
textcoords='offset points'表示标注的⽂字的位置使⽤相对于被标注的坐标点的偏移量,(+30, -30)表示相对于被标注点,向右移动30,再向下移动30;这⾥的单位是像素;
arrowprops⽤于设置箭头属性;参数类型为字典dict
width:箭头的宽度(以点为单位) ;headwidth:箭头底部以点为单位的宽度; headlength:箭头的⻓度(以点为单位) ;shrink:总⻓度的⼀部分,从两端“收缩” ;facecolor:箭头颜⾊
(%s,%s)⽤了类似print函数的表达,传递参数进⼊字符串;两个参数被赋值% xy, xy=xy zip(x, y)就是把两个数组糅在⼀起;x=[1, 2, 3, 4, 5 ],y=[6, 7, 8, 9, 10],zip(x, y)就得到了
[(1, 6), (2, 7), (3, 8), (4, 9), (5, 10)],每个元素是⼀个元组;
x = np.arange(0, 6)
y = x * x
plt.plot(x, y, marker='o')
for xy in zip(x, y):
plt.annotate("(%s,%s)" % xy, xy=xy, xytext=(-20, 10), textcoords='offset points',weight='heavy',color='y')
plt.show()