赞
踩
Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形(来自:百度百科)。pyplot 模块是 Matplotlib 模块提供的快速绘图模块,它模仿了 MATLAB 的部分功能。在本文中主要介绍 pyplot 模块的基本用法,会进行持续的更新,欢迎各位读者朋友点赞收藏。
import matplotlib.pyplot as plt # 导入pyplot模块
传入一个参数绘制图像
import matplotlib.pyplot as plt
plt.plot([1, 3, 4, 6]) # 如果只传入一个数组作为参数, matplotlib 认为是 Y 轴的坐标
plt.show()
注意:
传入两个参数绘制图像
import matplotlib.pyplot as plt
plt.plot([1, 3, 4, 6], [2, 5, 10, 12])
plt.show()
plt.plot() 参数设置
设置线条颜色:color = ' '
或 c = ' '
import matplotlib.pyplot as plt
plt.plot([1, 3, 4, 6], [2, 5, 10, 12],c='black') # 设置线条颜色为黑色
plt.show()
Matplotlib 支持的颜色缩写:
字符 | 字符 |
---|---|
‘b’ | 蓝色 |
‘c’ | 青色 |
‘k’ | 黑色 |
‘g’ | 绿色 |
‘m’ | 洋红 |
‘w’ | 白色 |
‘r’ | 红色 |
‘y’ | 黄色 |
设置线条风格:linestyle = ' '
或 ls = ' '
import matplotlib.pyplot as plt
plt.plot([1, 3, 4, 6], [2, 5, 10, 12],ls='--') # 设置线条风格为虚线
plt.show()
Matplotlib 支持的控制线条样式格式字符串:
字符 | 描述 | 字符 | 描述 |
---|---|---|---|
‘-’ | 实线 | ‘–’ | 虚线 |
‘-.’ | 点划线 | ‘:’ | 点虚线 |
‘.’ | 点 | ‘,’ | 像素 |
‘o’ | 圆圈 | ‘v’ | 下三角 |
‘^’ | 上三角 | ‘<’ | 左三角 |
‘>’ | 右三角 | ‘1’ 1 | 加下三角 |
‘2’ | 1加上三角 | ‘3’ 1 | 加左三角 |
‘4’ | 1加右三角 | ‘s’ | 正方形 |
‘p’ | 五边形 | ‘*’ | 星形 |
‘h’ | 六角形1 | ‘H’ | 六角形2 |
‘+’ | 加号 | ‘x’ | 乘号 |
‘D’ | 钻石 | ‘d’ | 菱形 |
设置线条宽度:linewidth= ' '
或 lw= ' '
import matplotlib.pyplot as plt
plt.plot([1, 3, 4, 6], [2, 5, 10, 12],lw=3) # 设置线条宽度为3
plt.show()
设置线条透明度:alpha=0.5
0-1范围内的浮点数
import matplotlib.pyplot as plt
plt.plot([1, 3, 4, 6], [2, 5, 10, 12],alpha=0.2) # 设置线条透明度为0.2
plt.show()
添加图片标题:plt.title("")
添加轴标签:plt.xlabel('')
& plt.ylabel('')
设置显示中文字符:Matplotlib 的缺省字体不支持中文,所以要指定一个支持中文的字体 plt.rcParams['font.sans-serif']=['Microsoft Yahei'] # 设定字体为微软雅黑
属性值 | 说明 |
---|---|
SimHei | 中文黑体 |
Kaiti | 中文楷体 |
Lisu | 中文隶书 |
FangSong | 中文仿宋 |
YouYuan | 中文幼圆 |
STSong | 华文宋体 |
import matplotlib.pyplot as plt
plt.title("折线图") # 设定图片标题
plt.ylabel('Y轴') # 设置Y轴标签
plt.xlabel('Time') # 设置X轴标签
plt.rcParams['font.sans-serif'] = ['Microsoft Yahei'] # 设定字体为微软雅黑
plt.plot([1, 3, 4, 6], [2, 5, 10, 12], alpha=1)
plt.show()
如果不设置中文字符:
运行时也会有 Warning 提示:UserWarning: Glyph 36724 (\N{CJK UNIFIED IDEOGRAPH-8F74}) missing from current font.
设置横坐标轴取值范围:plt.xlim(xmin=1, xmax=10)
设置纵坐标轴取值范围:plt.ylim(ymin=2, ymax=15)
import matplotlib.pyplot as plt
plt.title("折线图") # 设定字体为微软雅黑
plt.ylabel('Y轴') # 设置Y轴标签
plt.xlabel('Time') # 设置X轴标签
plt.xlim(xmin=1, xmax=10)
plt.ylim(ymin=2, ymax=15)
plt.rcParams['font.sans-serif'] = ['Microsoft Yahei']
plt.plot([1, 3, 4, 6], [2, 5, 10, 12], alpha=1)
plt.show()
plt.xticks(ticks, labels, rotation=90, fontsize=12)
plt.yticks(ticks, labels, rotation=90, fontsize=12)
plt.xticks(rotation=-90)
,使刻度文字与x轴垂直import matplotlib.pyplot as plt
plt.title("折线图") # 设定字体为微软雅黑
plt.ylabel('Y轴') # 设置Y轴标签
plt.xlabel('Time') # 设置X轴标签
plt.xlim(xmin=1, xmax=10)
plt.ylim(ymin=2, ymax=15)
plt.rcParams['font.sans-serif'] = ['Microsoft Yahei'] # 设置显示中文字体
plt.xticks(list(range(1, 15,2)),rotation=0, fontsize=12) # 调整刻度范围和刻度标签
plt.plot([1, 3, 4, 6], [2, 5, 10, 12], alpha=1)
plt.show()
绘制网格线:plt.grid(alpha=0.4)
,可以指定网格线的透明度。
import matplotlib.pyplot as plt
plt.title("折线图") # 设定字体为微软雅黑
plt.ylabel('Y轴') # 设置Y轴标签
plt.xlabel('Time') # 设置X轴标签
plt.xlim(xmin=1, xmax=10) # 设置x轴范围
plt.ylim(ymin=2, ymax=15) # 设置y轴范围
plt.rcParams['font.sans-serif'] = ['Microsoft Yahei']
plt.xticks(list(range(1, 15, 2)), rotation=0, fontsize=12) # 调整x轴刻度范围
plt.plot([1, 3, 4, 6], [2, 5, 10, 12], alpha=1)
plt.grid(alpha=0.4) # 绘制网格,透明度为0.4
plt.show()
绘制平行于 x 轴的水平参考线axhline():plt.axhline(y, c, ls, lw, label)
绘制平行于 y 轴的水平参考线axvline():plt.axvline(x, c, ls, lw, label)
参数介绍:
import matplotlib.pyplot as plt
plt.title("折线图") # 设定字体为微软雅黑
plt.ylabel('Y轴') # 设置Y轴标签
plt.xlabel('Time') # 设置X轴标签
plt.xlim(xmin=1, xmax=10) # 设置x轴范围
plt.ylim(ymin=2, ymax=15) # 设置y轴范围
plt.rcParams['font.sans-serif'] = ['Microsoft Yahei']
plt.xticks(list(range(1, 15, 2)), rotation=0, fontsize=12) # 调整x轴刻度范围
plt.plot([1, 3, 4, 6], [2, 5, 10, 12], alpha=1)
plt.grid(alpha=0.4) # 绘制网格,透明度为0.4
plt.axhline(5, color='green', lw=2, label="分割线") # 绘制平行于x轴的水平参考线,绿色,名称为分割线
plt.show()
绘制垂直于 x 轴的参考区域:plt.axvspan( xmin, xmax ,facecolor, alpha)
绘制垂直于 y 轴的参考区域:plt.axhspan( ymin, ymax ,facecolor, alpha)
参数介绍:
import matplotlib.pyplot as plt
plt.title("折线图") # 设定字体为微软雅黑
plt.ylabel('Y轴') # 设置Y轴标签
plt.xlabel('Time') # 设置X轴标签
plt.xlim(xmin=1, xmax=10) # 设置x轴范围
plt.ylim(ymin=2, ymax=15) # 设置y轴范围
plt.rcParams['font.sans-serif'] = ['Microsoft Yahei']
plt.xticks(list(range(1, 15, 2)), rotation=0, fontsize=12) # 调整x轴刻度范围
plt.plot([1, 3, 4, 6], [2, 5, 10, 12], alpha=1)
plt.grid(alpha=0.4) # 绘制网格,透明度为0.4
plt.axhline(5, color='green', lw=2, label="分割线") # 绘制平行于x轴的水平参考线,绿色,名称为分割线
plt.axvspan(xmin=2,xmax=5,facecolor='r',alpha=0.2) # 绘制垂直于x轴的参考区域
plt.show()
plt.plot() 方法绘制的是折线图,也是最常用的方法;
pyplot 模块也提供了其他方法来绘制柱状图、饼图、散点图:
plt.bar() 方法绘制柱状图
import matplotlib.pyplot as plt
plt.title("柱状图") # 设定字体为微软雅黑
plt.ylabel('Y轴') # 设置Y轴标签
plt.xlabel('Time') # 设置X轴标签
plt.xlim(xmin=1, xmax=10) # 设置x轴范围
plt.ylim(ymin=2, ymax=15) # 设置y轴范围
plt.rcParams['font.sans-serif'] = ['Microsoft Yahei']
plt.xticks(list(range(1, 15, 2)), rotation=0, fontsize=12) # 调整x轴刻度范围
plt.bar([1, 3, 4, 6], [2, 5, 10, 12], alpha=1)
plt.grid(alpha=0.4) # 绘制网格,透明度为0.4
plt.show()
plt.pie() 方法绘制饼图
import matplotlib.pyplot as plt
plt.title("饼图") # 设定字体为微软雅黑
plt.rcParams['font.sans-serif'] = ['Microsoft Yahei']
value = [1, 3, 4, 6]
plt.pie(value) # 绘制饼图,将一个列表传入到 pie() 函数中即可
plt.grid(alpha=0.4) # 绘制网格,透明度为0.4
plt.show()
饼图属性设置:
import matplotlib.pyplot as plt
plt.title("饼图") # 设定字体为微软雅黑
plt.rcParams['font.sans-serif'] = ['Microsoft Yahei']
value = [1, 3, 4, 6]
colors = ["blue", 'g', "#88c999", 'y'] # 1、设置饼图的颜色
labels = ["Python", "C#", "Java", "Other"] # 2、设置饼图标签
explode = (0, 0.1, 0, 0) # 3、设置突出部分,第二个数据突出
autopct = "%1.1f%%" # 4、设置填入百分比数值
plt.pie(value, colors=colors, labels=labels, explode=explode, autopct=autopct, shadow=True)
plt.grid(alpha=0.4) # 绘制网格,透明度为0.4
plt.show()
plt.scatter() 方法绘制散点图
import matplotlib.pyplot as plt
plt.title("散点图") # 设定字体为微软雅黑
plt.rcParams['font.sans-serif'] = ['Microsoft Yahei']
value = [1, 3, 4, 6]
labels = ["Python", "C#", "Java", "Other"] # 2、设置饼图标签 & 设置散点图横坐标
plt.scatter(labels, value)
plt.grid(alpha=0.4) # 绘制网格,透明度为0.4
plt.show()
散点图属性设置:
点的大小:s 关键字设置;
点的颜色:c 关键字设置;
点的透明度:alpha 关键字设置;
点的边缘颜色:edgecolors 关键字设置;
点的边缘线宽度:linewidths 关键字设置。
import matplotlib.pyplot as plt
plt.title("散点图") # 设定标题
plt.rcParams['font.sans-serif'] = ['Microsoft Yahei'] # 设定字体为微软雅黑
value = [1, 3, 4, 6] # y轴
labels = ["Python", "C#", "Java", "Other"] # 2、设置饼图标签 & 设置散点图横坐标
plt.scatter(labels, value, s=100, c="y", alpha=0.5, edgecolors="b",
linewidths=0.5) # 点大小设置为100,颜色设置为黄色,透明度0.5,边缘线颜色黑色,粗度0.5
plt.grid(alpha=0.4) # 绘制网格,透明度为0.4
plt.show()
在 Matplotlib 中,一个 Figure 对象(也就是画布)可以包括多个 Axes 对象(也就是子图),一个 Axes 代表一个绘图区域。
Matplotlib 提供了两个方法来绘制多图 plt.subplot() 和 plt.subplots() 方法。
subplot() 方法:在绘图时需要指定位置,如果不创建 Axes 对象,Matplotlib 缺省会自动调用 plt.subplot(1,1,1) 指定 1行,1列,共1个子图,当前子图为第1个。
import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['Microsoft Yahei'] # 设定字体为微软雅黑 x = [2, 6, 8, 10] # x轴 y1 = [1, 3, 4, 6] # y轴 y2 = [9, 5, 6, 11] # y轴 plt.subplot(2, 1, 1) # 指定2行,1列,共两个axe,当前使用第1个绘图块 plt.title("绘图块1") # 设定标题 plt.plot(x, y1, 1) # 绘图 plt.grid(alpha=0.4) # 绘制网格,透明度为0.4 plt.subplot(2, 1, 2) # 当前使用第2个绘图块 plt.title("绘图块2") # 设定标题 plt.plot(x, y2, 2) # 绘图 plt.grid(alpha=0.4) # 绘制网格,透明度为0.4 plt.show()
subplots() 方法:可以一次生成多个,在调用时只需要调用生成对象的 ax 即可。同时 subplots() 方法中融合了plt.figure() 的功能。
常用参数设置:
设置图表的行数:nrows,默认为 1;
设置图表的列数:ncols,默认为 1;
设置 x、y 轴是否共享属性:sharex、sharey,默认为 False。
注意:当定义子图分布只有一行或一列时,ax的索引也只有1位,当子图分布是两行两列及以上时,ax的索引也要变成ax[0,0],ax[0,1]这样的形式。
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Microsoft Yahei'] # 设定字体为微软雅黑
x = [2, 6, 8, 10] # x轴
y1 = [1, 3, 4, 6] # y轴
y2 = [9, 5, 6, 11] # y轴
f, ax = plt.subplots(2, 2, sharey=True) #
ax[0,0].plot(x, y1)
ax[0,0].set_title('Sharing Y axis')
ax[0,1].set_title("绘图块1行2列") # 设定标题
ax[1,0].set_title("绘图块2行1列") # 设定标题
ax[1,1].plot(x, y2)
plt.show()
Matplotlib 每个绘图区都对应一个 Figure 对象,一个绘图 Figure 对象里面可以包含多个 Axes 子图对象。如果不创建 Figure 对象,Matplotlib 缺省会自动调用 plt.figure(1) 创建绘图对象。
创建 Figure() 对象:
figure(num=None, figsize=None, dpi=None, facecolor=None,
edgecolor=None, frameon=True, FigureClass=Figure, clear=False, **kwargs)
常用参数:
rc figure.dpi
;rc figure.figsize
(1 英寸等于 2.54 cm)。注意:使用 subplots() 方法 创建子图 Axes 对象时也会创建 Figure 对象
import matplotlib.pyplot as plt plt.figure(1, facecolor="y") # 创建第一个 Figure对象 plt.plot([1, 4, 6, 23]) # 绘图 plt.title("第一个 Figure对象") # 设定标题 plt.rcParams['font.sans-serif'] = ['Microsoft Yahei'] # 设定字体为微软雅黑 x = [2, 6, 8, 10] # x轴 y1 = [1, 3, 4, 6] # y轴 y2 = [9, 5, 6, 11] # y轴 f, ax = plt.subplots(2, 2, sharey=True) # 创建第二个 Figure对象 ax[0, 0].plot(x, y1) ax[0, 0].set_title('Sharing Y axis') ax[0, 1].set_title("绘图块1行2列") # 设定标题 ax[1, 0].set_title("绘图块2行1列") # 设定标题 ax[1, 1].plot(x, y2) plt.show()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。