概述
以下笔记学习自学习地址,
内容主要为matplotlib的基本用法,后面学习过程中遇到其它的用法会不断地更新到该学习笔记中。
1. 安装matplotlib
pip install matplotlib
2. 导入matplotlib
import matplotlib.pyplot as plt
3. 绘图流程
3.1 流程
参数说明:
figsize: 指定图像的长和宽
dpi: 图像的清晰度
# 1. 创建画布
plt.figure(figsize=(10,4), dpi=100)
# 2. 绘制图像(折线图为例)
plt.plot([1,2,3,4,5,6,7],[10,15,13,18,16,20,10])
# 3. 图像显示
plt.show()
运行结果:
3.2 添加x, y轴刻度信息
下面为该图的x轴和y轴添加一些刻度
首先需要达到的目标是:将横坐标改为Monday - Sunday,纵坐标为0-40,且间隔为5.
在第二步里添加以下代码:
# 2.1 添加刻度
# 设置x,y 轴刻度
x_ticks_label = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
y_ticks = range(40)
# 修改x,y轴刻度显示
# 注意:字符串不可以直接作为y周刻度,需要做一个替换
plt.xticks([i+1 for i in range(7)], x_ticks_label)
plt.yticks(y_ticks[::5])
运行结果:
3.3 中文乱码和字符问题
有时候,想横纵坐标里使用中文,但是如果使用上述代码,可以会出现中文乱码问题。
其中一个解决方法,通过导包添加代码的方式:
from pylab import mpl
# 解决中文乱码问题,设置字体为黑体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
# 解决坐标轴中部分字符无法正常显示
mpl.rcParams["axes.unicode_minus"] = False
重新看一下将横坐标的刻度改为 星期1-7 的效果
代码:
# 1. 创建画布
plt.figure(figsize=(10,4),dpi=100)
# 2. 绘制图像
plt.plot([1,2,3,4,5,6,7],[10,15,13,18,16,20,10])
# 2.1 添加刻度
# 设置x,y 轴刻度
#x_ticks_label = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
x_ticks_label = ['星期{}'.format(i+1) for i in range(7)]
y_ticks = range(40)
# 修改x,y轴刻度显示
plt.xticks([i+1 for i in range(7)], x_ticks_label)
plt.yticks(y_ticks[::5])
# 解决中文乱码问题
mpl.rcParams["font.sans-serif"] = ["SimHei"]
# 解决坐标轴中部分字符无法正常显示
mpl.rcParams["axes.unicode_minus"] = False
# 3. 图像显示
plt.show()
运行结果:
3.4 添加网格显示
代码
plt.grid(True, linestyle='--', alpha=0.5)
参数说明:
True: 显示
linestyle:网格显示方式,有实线(-),虚线(–),点划线(-.)等
alpha:网格线的透明度
运行效果:
3.5 添加描述信息
plt.xlabel('时间')
plt.ylabel('温度')
plt.title('每周的平均温度显示', fontsize=20)
运行效果:
3.6 保存图像
plt.savefig('test.png')
注意:需要在plt.show()之前保存图像,因为plt.show()之后会释放图像资源。
4 在同一个坐标系绘制多个图像
4.1 多次plot
如果要绘制多个图像,只需要在绘制图像的步骤中再加一行代码。
# 2. 绘制图像
plt.plot([1,2,3,4,5,6,7],[10,15,13,18,16,20,10]) # 第一个图像的数据
plt.plot([1,2,3,4,5,6,7],[20,25,23,28,26,30,28], linestyle='--', color='r') # 第二个图像的数据(指定颜色和形式
运行结果:
4.2 设置图像的风格
4.3 显示图例
plt.plot([1,2,3,4,5,6,7],[10,15,13,18,16,20,10], label='北京')
plt.plot([1,2,3,4,5,6,7],[20,25,23,28,26,30,28], linestyle='--', color='r', label="广东")
plt.legend(loc='best') # 也可以写 plt.legend(loc=0)
参数说明
运行效果
5. 多个坐标系绘图
多个坐标系绘图可以看成在同一个画布里,将多个图形装进一个一维数组里,假设数组名为axes,那么axes[0],axes[1]…就代表了第1,2个图形。多个坐标系绘图用的是subplots方法。
代码如下:
# 1. 创建画布
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(20, 8), dpi=100) #nrows为一行,ncols为两列
# 2. 绘制图像
axes[0].plot([1,2,3,4,5,6,7],[10,15,13,18,16,20,10], label='北京')
axes[1].plot([1,2,3,4,5,6,7],[20,25,23,28,26,30,28], linestyle='--', color='r', label="广东")
axes[0].legend(loc=0)
axes[1].legend(loc=0)
# 2.1 添加刻度
# 设置x,y 轴刻度
x_ticks_label = ['星期{}'.format(i+1) for i in range(7)]
y_ticks = range(40)
# 修改x,y轴刻度显示
# 在上面绘制单个图形时提到过,如果标签中含有字符串,那么采用的是替换的方法
# plt.xticks([i+1 for i in range(7)], x_ticks_label)
# 在绘制多个图形时,将轴的刻度做好以后,只需要通过set_xtickslabels就可以更改刻度显示。
axes[0].set_xticks([i+1 for i in range(7)])
axes[0].set_yticks(y_ticks[::5])
axes[0].set_xticklabels(x_ticks_label)
axes[1].set_xticks([i+1 for i in range(7)])
axes[1].set_yticks(y_ticks[::5])
axes[1].set_xticklabels(x_ticks_label)
# 2.2 添加网格显示
axes[0].grid(True, linestyle='--', alpha=1)
axes[1].grid(True, linestyle='--', alpha=1)
# 2.3 添加描述信息
axes[0].set_xlabel('时间')
axes[0].set_ylabel('温度')
axes[0].set_title('每周的平均温度显示',fontsize=20)
axes[1].set_xlabel('时间')
axes[1].set_ylabel('温度')
axes[1].set_title('每周的平均温度显示',fontsize=20)
# 显示图像
plt.show()
运行结果:
6. 常见的图形绘制
Matplotlib可以绘制折线图、散点图、柱状图、直方图、饼图。
# 数据:x, y
# 折线图
plt.plot(x, y)
# 散点图
plt.scatter(x, y)
# 柱状图
plt.bar(x, width, align='center', **kwargs) # 参数分别代表:数据,高度,柱状图的对齐方式,柱状图的颜色等特征
# 直方图
matplotlib.pyplot.hist(x, bins=None) # bins代表组距
# 饼图
plt.pie(x, labels='', autopct='', colors) # x代表每部分数量;labels代表每部分的名称;autopct占比显示指定%1.2f%%;colors为每部分颜色
最后
以上就是勤恳小天鹅为你收集整理的Python学习笔记-matplotlib的基本用法的全部内容,希望文章能够帮你解决Python学习笔记-matplotlib的基本用法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复