主要使用matplotlib库绘图,涉及坐标轴字体(大小、科学计数法、格式)、画布(大小,边距)、嵌入式子图、图例、。
import matplotlib.pyplot as plt
1.画布
绘图的第一步是创建画布。 参考博文
(1)plt.figure() --创建一个画布或激活一个已经存在的画布(通过指定num参数)。一般在此处仅指定num、figsize参数。
plt.figure( num=None, # num为画布编号,可以是int或str。int指代Figure.number,str指代图片的label。
figsize=None, # 默认为(6.4,4.8),(宽,高),单位英寸
dpi=None, *, # 默认100,dots-per-inch.
facecolor=None, # 背景颜色,默认白色
edgecolor=None, # 边界颜色,默认白色
frameon=True, # 默认True,如果False,表示不显示图框
clear=False, # 默认为False,如果为True,则清空画布
**kwargs)
# 但会绘图元素的顶层容器。
(2)plt.subplots()–创建多个子图(也可以就一个子图)
plt.subplots()也是创建画布的一种方法,返回fig,axes
fig指的是整个画布,axes是创建的子图
plt.subplots(nrows=1, # 子图行数量
ncols=1, # 子图列数量
figsize=None, # 默认为(6.4,4.8),(宽,高),单位英寸
sharex=False, # 共享x轴,默认False
sharey=False, # 共享y轴,默认False
)
# 或者
fig = plt.figure()
fig.subplots()
例子
import matplotlib.pyplot as plt
import numpy as np
fig,axes = plt.subplots(3,2)
print(np.shape(axes)) #输出(3,2)
plt.show()
输出结果:
(3)plt.subplot()–创建单个子图
子图的索引 (nrows, ncols, index)
返回当前ax
import matplotlib.pyplot as plt
import numpy as np
x = [0,1,2,3,4,5]
y1 = x
y2 = [-i for i in x]
y3 = [i*i*i for i in x]
plt.subplots(3,2)
ax = plt.subplot(3,2,1)
ax.plot(x,y1)
ax = plt.subplot(3,2,2)
ax.plot(x,y2)
ax = plt.subplot(3,2,5)
ax.plot(x,y3)
plt.show()
2. plt.rcParam参数
rcParam是matplotlib全局参数配置的方法,参考官网介绍
#如下两种用法等效,后续介绍以第二种为例
plt.rc('lines', linewidth=2, color='r')
# 等效于
plt.rcParams['lines.linewidth'] = 2
plt.rcParams['lines.color'] = 'r'
常见的配置如下:
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
plt.rcParams['font.size'] = fontSize # 坐标轴字体大小
plt.rc('font', family='Times New Roman') # 指定默认字体
plt.rcParams['font.sans-serif'] = ['STSong'] # 指定字体
3.1 字体配置
3.1 字体设置失败场景
需要单独指定
from matplotlib.font_manager import FontProperties
font=FontProperties(fname='C:\Windows\Fonts\simsun.ttc',size=10.5)
# fname是指字体库的搜索路径,
# size指字体的大小,
# 后续使用通过font变量指代该字体