文章目录
前言
matplotlib没有难以理解的地方,就是琐碎的知识点比较多,特此将常用设置总结如下。
基础概念
首次接触matplotlib的时候,你肯定使用的是plt.plot()来画第一个demo吧,同样这个绘图命令也是平时使用最多的命令。虽然这个命令简单易用,但是复杂的图形绘制调整用它可就不行了。
1 两种画图方式
(plt.)系列方式和(ax.)系列方式,前一种方式是我们最常用的,它相当于对后一种方式做了封装和简化。
2 figure
matplotlib.pyplot.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True, FigureClass=<class ‘matplotlib.figure.Figure’>, clear=False, **kwargs)
参数解释:
- num:这个参数是一个可选参数,即可以给参数也可以不给参数。可以将该num理解为窗口的属性id,即该窗口的身份标识。
如果不提供该参数,则创建窗口的时候该参数会自增,如果提供的话则该窗口会以该num为Id存在。 - figsize:可选参数。整数元组,默认是无。
提供整数元组则会以该元组为长宽,若不提供,默认为 rc fiuguer.figsize
例如(4,4)即以长4英寸 宽4英寸的大小创建一个窗口 - dpi:可选参数,整数。表示该窗口的分辨率,如果没有提供则默认为 figure.dpi
- facecolor:可选参数,表示窗口的背景颜色,如果没有提供则默认为figure.facecolor
其中颜色的设置是通过RGB,范围是’#000000’~’#FFFFFF’,其中每2个字节16位表示RGB的0-255。例如’#FF0000’表示R:255 G:0 B:0 即红色。 - edgecolor:可选参数,表示窗口的边框颜色,如果没有提供则默认为figure,edgecolor
- frameon:可选参数,表示是否绘制窗口的图框,默认是
- figureclass:暂不了解
- clear:可选参数,默认是false,如果提供参数为ture,并且该窗口存在的话 则该窗口内容会被清除。
绘图设置
1 字体设置
这是参考来源
共有四种方式:
1.使用指定的字体文件(修改全局字体设置,nb但是非特殊需要不用,太麻烦)
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties #步骤一
font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=14)#步骤二
plt.xlabel("x轴", fontproperties=font) # 步骤三
plt.ylabel("y轴", fontproperties=font)
plt.title("标题", fontproperties=font)
plt.show()
2.给每个部分分别指定字体(可以不同部分用不同的字体且不影响全局字体设置,字体必须已安装)
import matplotlib.pyplot as plt
plt.xlabel("x轴")
plt.ylabel("y轴", fontproperties="SimSun") # 步骤一 (宋体)
plt.title("标题", fontproperties="SimHei") # (黑体)
plt.show()
3.修改全局字体设置
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 步骤一(替换sans-serif字体)
plt.rcParams['axes.unicode_minus'] = False # 步骤二(解决坐标轴负数的负号显示问题)
plt.xlabel("x轴")
plt.ylabel("y轴")
plt.title("标题")
plt.show()
4.和第3种相似(定义格式更丰富)
import matplotlib.pyplot as plt
font = {'family' : 'SimHei',
'weight' : 'bold',
'size' : '16'}
plt.rc('font', **font) # 步骤一(设置字体的更多属性)
plt.rc('axes', unicode_minus=False) # 步骤二(解决坐标轴负数的负号显示问题)
plt.xlabel("x轴")
plt.ylabel("y轴")
plt.title("标题")
plt.show()
5.常用字体的英文简称
宋体 SimSun
黑体 SimHei
微软雅黑 Microsoft YaHei
微软正黑体 Microsoft JhengHei
新宋体 NSimSun
新细明体 PMingLiU
细明体 MingLiU
标楷体 DFKai-SB
仿宋 FangSong
楷体 KaiTi
隶书:LiSu
幼圆:YouYuan
华文细黑:STXihei
华文楷体:STKaiti
华文宋体:STSong
华文中宋:STZhongsong
华文仿宋:STFangsong
方正舒体:FZShuTi
方正姚体:FZYaoti
华文彩云:STCaiyun
华文琥珀:STHupo
华文隶书:STLiti
华文行楷:STXingkai
华文新魏:STXinwei
2 颜色设置
- 单一颜色
颜色:color=“” 或 c=“”
matplotlib 色卡对应参数表:
2. 色彩图谱
- cmap详解,参考matplotlib.pyplot——cmap详解。
- 官方色彩图
3 绘图风格
#查看所有的绘图风格
plt.style.available
#设置默认绘图风格
plt.style.use("style")
4 坐标轴设置
- 设置坐标轴的上下限
xlim(最小值,最大值)#x轴
ylim(最小值,最大值)#y轴
- 设置坐标轴label
5 图形排布设置
- 设置子图间隔
fig.tight_layout()#调整整体空白
plt.subplots_adjust(wspace =0, hspace =0)#调整子图间距
6 坐标刻度及字体大小
# figsize = 11, 9
# figure, ax = plt.subplots(figsize = figsize)
x1 =[0,5000,10000, 15000, 20000, 25000, 30000, 35000, 40000, 45000, 50000, 55000]
y1=[0, 223, 488, 673, 870, 1027, 1193, 1407, 1609, 1791, 2113, 2388]
x2 = [0, 5000, 10000, 15000, 20000, 25000, 30000, 35000, 40000, 45000, 50000, 55000]
y2 = [0, 214, 445, 627, 800, 956, 1090, 1281, 1489, 1625, 1896, 2151]
# 设置输出的图片大小
figsize = 11, 9
figure, ax = plt.subplots(figsize=figsize)
# 在同一幅图片上画两条折线
A, = plt.plot(x1, y1, '-r', label='A', linewidth=5.0)
B, = plt.plot(x2, y2, 'b-.', label='B', linewidth=5.0)
# 设置图例并且设置图例的字体及大小
font1 = {'family': 'Times New Roman',
'weight': 'normal',
'size': 23,
}
legend = plt.legend(handles=[A, B], prop=font1)
# 设置坐标刻度值的大小以及刻度值的字体
plt.tick_params(labelsize=23)
labels = ax.get_xticklabels() + ax.get_yticklabels()
# print labels
[label.set_fontname('Times New Roman') for label in labels]
# 设置横纵坐标的名称以及对应字体格式
font2 = {'family': 'Times New Roman',
'weight': 'normal',
'size': 30,
}
plt.xlabel('round', font2)
plt.ylabel('value', font2)
plt.show()
常用函数
1 plt.plot()
参数 | 接收值 | 说明 | 默认值 |
---|---|---|---|
x,y | array | 表示 x 轴与 y 轴对应的数据; | 无 |
color | string | 表示折线的颜色; | None |
marker | string | 表示折线上数据点处的类型; | None |
linestyle | string | 表示折线的类型; | - |
linewidth | 数值 | 线条粗细 | 1 |
alpha | 0~1之间的小数 | 表示点的透明度; | None |
label | string | 数据图例内容:label=‘实际数据’ | None |
2 plt.legend()
3 plt.figure()
matplotlib.pyplot.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True, FigureClass=<class 'matplotlib.figure.Figure'>, clear=False, **kwargs)
(1)num:这个参数是一个可选参数,即可以给参数也可以不给参数。可以将该num理解为窗口的属性id,即该窗口的身份标识。如果不提供该参数,则创建窗口的时候该参数会自增,如果提供的话则该窗口会以该num为Id存在。
(2)figsize:可选参数。整数元组,默认是无。提供整数元组则会以该元组为长宽,若不提供,默认为 rc fiuguer.figsize。例如(4,4)即以长4英寸 宽4英寸的大小创建一个窗口
(3)dpi:可选参数,整数。表示该窗口的分辨率,如果没有提供则默认为 figure.dpi
(4)facecolor:可选参数,表示窗口的背景颜色,如果没有提供则默认为figure.facecolor。其中颜色的设置是通过RGB,范围是’#000000’~’#FFFFFF’,其中每2个字节16位表示RGB的0-255
例如’#FF0000’表示R:255 G:0 B:0 即红色。
(5)edgecolor:可选参数,表示窗口的边框颜色,如果没有提供则默认为figure,edgecolor
(6)frameon:可选参数,表示是否绘制窗口的图框,默认是
(8)clear:可选参数,默认是false,如果提供参数为ture,并且该窗口存在的话 则该窗口内容会被清除。
plt.savefig()
savefig(fname, dpi=None, facecolor='w', edgecolor='w',
orientation='portrait', papertype=None, format=None,
transparent=False, bbox_inches=None, pad_inches=0.1,
frameon=None, metadata=None)
- fname : 文件名
- dpi : [ None | scalar > 0 | ‘figure’ ]
- quality : [ None | 1 <= scalar <= 100 ]
- format : 文件格式, (‘png’, ‘pdf’, ‘svg’, … )
数学表达式和特殊符号
matplotlib 文本字符串中支持使用TeX语法,将它放在一对$中即可。
常用latex数学语法点这里。
三维绘图
1 创建三维figure的方式
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
或者
fig = plt.figure()
ax3 = Axes3D(fig)#这种方式已淘汰不建议用
2 可绘制的图形及example
3 显示颜色条(指示条)
在画2d图的时候,可以使用
plt.colorbar() #显示色度条
但是在Axes3D中不行,应该像下面这样。
p=ax3.plot_surface(X,Y,Z,cmap='rainbow')
fig.colorbar(p)