【Python】Matplotlib库入门学习笔记(实用画图工具)

内容来源

经常遇到要用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!]

发布了104 篇原创文章 · 获赞 110 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/qq_41856733/article/details/104756392