目录
- 1、Matplotlib库
- 2、Figure对象:创建画布:
- 3、划分子图:subplot(行数,列数,子图序号)
- 4、设置中文字体:plt.rcParams["font.sans-serif"]="SimHei"
- 5、添加标题 suptitle、title
- 6、自动调整子图:tight_layout(rect=[lefft,bottom,right,top])
1、Matplotlib库
- Matplotlib库:第三方库,快速生成图表(直方图,柱状图,折线图等等
- Matplotlib 的API:https://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.plot
- pip安装Matplotlib库
pip install matplotlib
- 导入Matplotlib库
import matplotlib.pyplot as plt
2、Figure对象:创建画布:
figure(num,figsize,dpi,facecolor,edgecolor,frameon)
num:图形编号或名称,值为数字/字符串
figsize:绘图对象的宽和高,单位英寸
dpi:分辨率,默认80
facecolor:背景颜色。
edgecolor:边框颜色
frameon:表示是否显示边框。
颜色:(最后一个字母为其缩写)
蓝色blue b | 黑色black k | 绿色green g | 白色white w |
---|---|---|---|
红色red r | 蓝绿cyan c | 黄色yellow y | 品红magenta m |
例如:
plt.figure(figsize=(3,2),facecolor="green")
plt.plot() #绘制空白图形
plt.show() #显示绘图
注意:在Spyder软件设置单独弹出的窗口的步骤为:
Tools–>Preferences–>IPython console–>Graphics–>Graphics backend–> Backend–>设置成Automatic,如图所示。如果是设置成Inline则figure是在IPython console中显示。最后需要再对Spyder软件进行重新启动,没有重启则不能实现设置效果。figure如图:
3、划分子图:subplot(行数,列数,子图序号)
当3个参数都少于10时,可省逗号。 每创建一个子图要一条语句
fig=plt.figure()
plt.subplot(2,2,1) #等价于plt.subplot(221)
plt.subplot(222)
plt.subplot(223)
plt.show()
4、设置中文字体:plt.rcParams[“font.sans-serif”]=“SimHei”
参数:
- rcParams:运行配置参数run configuration Params,修改绘制图表时的各种默认参数
- font.sans-serif:字体系列
- SimHei:黑体
字体 | 参数 | 字体 | 参数 |
---|---|---|---|
宋体 | SimSun | 楷体 | KaiTi |
黑体 | SimHei | 仿宋 | FangSong |
微软雅黑 | Microsoft YaHei | 隶书 | LiSu |
微软正黑体 | Microsoft JhengHei | 幼圆 | YouYuan |
修改后可再恢复标准默认配置:plt.rcdefaults()
5、添加标题 suptitle、title
全局标题:suptitle(标题文字)
子标题:title(标题文字)
suptitle()函数参数:
参数 | 说明 | 默认值 | 可取值 |
---|---|---|---|
x | 标题位置的x坐标 | 0.5 | |
y 标题位置的y坐标 | 0.98 | ||
color | 标题颜色 | 黑色 | |
backgroundcolor | 背景颜色 | 12 | |
fontsize | 字体大小 | 见下面说明 | |
fontweight | 字体粗细 | normal | 见下面说明 |
fontstyle | 字体类型 | normal/italic/oblique | |
horizontalalignment | 标题水平对齐方式 | center left/right/center | |
verticalalianment | 标题垂直对齐方式 top | center/top/bottom/baseline |
说明:
- fontsize可取值: xx-small、x-small、small、medium、large、x-large、xx-large
- fontweight可取值:light、normal、medium、semiboldbold、heavy、black
- title()函数主要参数:
参数 | 说明 | 取值 |
---|---|---|
loc | 位置 | left,right |
rotation | 标题文字旋转角度 | |
color | 标题颜色 | 黑色 |
fontsize | 字体大小 | |
fontweight | 字体粗细 | normal |
fontstyle | 字体类型 | |
horizontalalignment | 标题水平对齐方式 | center |
verticalalianment | 标题垂直对齐方式 | top |
fontdict | 设置参数字典 |
6、自动调整子图:tight_layout(rect=[lefft,bottom,right,top])
- 四个参数是子图占绘图区域的相对位置(使全局标题与子图不重叠)
- 完整定义:tight_layout(pad=1.08, h_pad=None, w_pad=None, rect=None)
- 当tight_layout自动调整失效时,不妨手动设h_pad(Padding (height/width) between edges of adjacent subplots, as a fraction of the font size.)设置上下边缘区域。
例如:
import matplotlib.pyplot as plt
plt.rcParams["font.family"] = "SimHei"
fig = plt.figure(facecolor = "lightgrey")
plt.subplot(2, 2, 1)
plt.title('子标题1')
plt.subplot(2, 2, 2)
plt.title('子标题2', loc = "left", color = "b")
plt.subplot(2, 2, 3)
myfontdict={"fontsize":12, "color":"g", "rotation": 30}
plt.title('子标题3',fontdict= myfontdict)
plt.subplot(2, 2, 4)
plt.title('子标题4 ', color='white', backgroundcolor="black")
plt.suptitle("全局标题", fontsize = 20, color = "red", backgroundcolor = "yellow")
plt.tight_layout(rect=[0,0, 1,0.9])
plt.show()
效果图: