内容来源
经常遇到要用python画图的场合,常常一时想不起怎么画图,故这里专门记录一下用python中matplotlib库画图的入门知识。
中国大学MOOC 《Python数据分析与展示(嵩天)》第二周 单元4:Matplotlib库入门
推荐大家直接去看视频,讲的真的很好,耐心听,能学到不少实用的东西(和是不是计算机专业的没关系)
学习笔记
要是出不来图,应该是你没装好matplotlib库。
(本博客运行环境:Anaconda中的Spyder软件)
1、先画出图看看
import matplotlib.pyplot as plt #这行不懂
plt.plot([3,-1,4,5,2]) #x轴默认输出[0,1,2,3,4]
2、标签函数,保存图片函数
import matplotlib.pyplot as plt
plt.plot([3,1,4,5,2]) #x轴默认输出[0,1,2,3,4]
plt.ylabel('Grade') #设置y轴标签
plt.savefig("plt_test1",dpi=600) #当前路径,默认为PNG文件,通过dpi可修改输出质量
plt.show() #这个用于显示图片,只画一个图,或者画的是最后一个图不写也行
3、设置图片显示范围
import matplotlib.pyplot as plt
plt.plot([0,2,4,6,8],[3,1,4,5,2])
plt.plot([0,4,2,6,8],[3,1,4,5,2]) #下图橙线
#plt.ylabel('Grade')
plt.axis([-1,10,0,6])#设置区间范围x轴为[-1,10],y轴为[0,6]
plt.show()
4、设定绘图区域(画分图)
import numpy as np
import matplotlib.pyplot as plt
def f(t):
return np.exp(-t)*np.cos(2*np.pi*t)
a = np.arange(0.0, 5.0, 0.02) #[0,5)间隔0.02取250个数
plt.subplot(211)
plt.plot(a,f(a))
plt.subplot(2,1,2)
plt.plot(a,np.cos(2*np.pi*a),'r--')
plt.show()
5、进一步学习核心函数plt.plot()
plt.plot(x, y, format_string, **kwargs)
∙ x : X轴数据,列表或数组,可选
∙ y :Y轴数据,列表或数组 ∙ format_string: 控制曲线的格式字符串,可选
∙ **kwargs :第二组或更多(x,y,format_string)
当绘制多条曲线时,各条曲线的x不能省略
import numpy as np
import matplotlib.pyplot as plt
a = np.arange(10)
plt.plot(a, a*1.5, a, a*2.5, a, a*3.5, a, a*4.5)
6、绘图风格:format_string简约格式选择
常用的记住,具体复杂的上网查
import numpy as np
import matplotlib.pyplot as plt
a = np.arange(10)
plt.plot(a, a*1.5, 'go-',
a, a*2.5, 'rx',
a, a*3.5, '*',
a, a*4.5, 'b-.')
plt.show()
7、另一种format_string的风格设置
看示例图大概就知道每个变量是干嘛的了
import numpy as np
import matplotlib.pyplot as plt
a = np.arange(10)
plt.plot(a, a*1.5,
color='g',
linestyle='dashed',
marker='o',
markerfacecolor='blue',
markersize=20
)
plt.show()
8、pyplot中的全局的中文显示方法
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='SimHei' #'SimHei'是黑体
plt.plot([-3,1,4,5,2,6,6,6,10,-2])
plt.ylabel('纵轴(值)')
plt.show()
9、pyplot中字体设置,字体大小设置、负号乱码问题解决
import matplotlib
import numpy as np
import matplotlib.pyplot as plt
matplotlib.rcParams['font.family']='STSong' #'STSong'是华文宋体
matplotlib.rcParams['axes.unicode_minus']=False #用于处理负号等符号乱码问题乱码
matplotlib.rcParams['font.size']=20 #字体大小
a = np.arange(0.0, 5.0, 0.02)
plt.xlabel('横轴:时间')
plt.ylabel('纵轴:振幅')
plt.plot(a, np.cos(2*np.pi*a), 'r--')
10、pyplot中的局部的中文显示方法(推荐)
a = np.arange(0.0, 5.0, 0.02)
plt.xlabel('--横轴:时间',fontproperties='SimHei', fontsize=20)
plt.ylabel('纵轴:振幅',fontproperties='Kaiti', fontsize=20)
plt.plot(a, np.cos(2*np.pi*a), 'r--')
11、给图片添加标题、添加文本功能,图片网格化
前面加“r”是为了防止字符转义(效果和多加一个反斜杠""一样)
加一对$$符号是为了显示特殊的符号,具体可查Latex相关知识
import numpy as np
import matplotlib.pyplot as plt
a = np.arange(0.0, 5.0, 0.02)
plt.plot(a, np.cos(2*np.pi*a), 'r--')
plt.xlabel('横轴:时间',fontproperties='SimHei', fontsize=15, color='green')
plt.ylabel('纵轴:振幅',fontproperties='SimHei', fontsize=15)
plt.title(r'正弦波实例 $y=cos(2\pi x)$',fontproperties='SimHei',fontsize=25 )
plt.text(2, 1, r'$\mu=100$', fontsize=15)
plt.axis([-1, 6, -2, 2])
plt.grid(True)
plt.show()
12、给图片添加箭头注释
import numpy as np
import matplotlib.pyplot as plt
a = np.arange(0.0, 5.0, 0.02)
plt.plot(a, np.cos(2*np.pi*a), 'r--')
plt.xlabel('横轴:时间',fontproperties='LiSu', fontsize=25, color='black')
plt.ylabel('纵轴:振幅',fontproperties='FangSong', fontsize=25, color='b')
plt.title(r'正弦波实例 $y=cos(2\pi x)$',fontproperties='SimHei',fontsize=25 )
plt.annotate(r'$\mu=100$',xy=(2, 1),xytext=(3, 1.5),
arrowprops=dict(facecolor= 'black', shrink=0.1, width=2) )
plt.axis([-1, 6, -2, 2])
plt.grid(True)
plt.show()
补充
1、图片显示位置问题:
(1)直接设置:
在Spyder中显示图片分为两种形式,可设置于:
Tools > Preferences > IPython Console > Graphics > Backend (Inline为内嵌,Qt5为弹窗模式)
(2)代码设置
内嵌模型(默认模式)
%matplotlib inline
窗口显示(python3为qt5)
%matplotlib QT5
2、图片读取并显示
这种读取方式需通过弹窗图片界面来展示
import matplotlib.image as imgplt
x = imgplt.imread('plt_test1.png')
plt.imshow(x)
入门学习比较嘛,点到为止 (o゜▽゜)o☆[BINGO!]