一、matplotlib库简介
matplotlib:是一个综合库,用于在Python中创建静态、动画和交互式可视化。
matplotlib有许多模块,分别定义了不同的类和函数:
matplotlib.figure模块
matplotlib.pyplot模块
matplotlib.axes模块
等等等等很多
详细参考Matplotlib的API概述部分: https://matplotlib.org/stable/api/index.html
二、matplotlib中重要的类
1、class matplotlib.figure.Figure
【完整名称】:
matplotlib.figure.Figure(figsize = None,dpi = None,facecolor = None,edgecolor = None,linewidth = 0.0,frameon = None,subplotpars = None,tight_layout = None,constrained_layout = None)
可以理解为画布,就是整个画图区域
2、class matplotlib.axes.Axes
【完整名称】:
class matplotlib.axes.Axes(fig, rect,*, facecolor=None, frameon=True, sharex=None, sharey=None, label=’’, xscale=None, yscale=None, box_aspect=None, **kwargs)
可以理解为一张图片,一个画布有几张图片就有几个Axes
有些参数可以通过类的对象来修改,也可以通过调用函数来修改
三、matplotlib.pyplot模块介绍
最常用的是matplotlib.pyplot 模块,该模块里封装了许多函数,可以像matlab一样工作。每个pyplot函数对图形进行一些更改:例如,创建图形、在图形中创建绘图区域、在绘图区域中绘制一些线、用标签装饰绘图等。
pyplot模块下的函数列表参考:https://matplotlib.org/stable/api/pyplot_summary.html
#在使用前需要先引入该模块
import matplotlib.pyplot as plt
接下来主要介绍pyplot模块几个重要的函数及其参数
-
plt.figure(): 设置画布的属性
【完整函数名】:
matplotlib.pyplot.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)
【参数】:
num:图像编号或名称,数字为编号 ,字符串为名称
figsize:指定figure的宽和高,单位为英寸;
dpi:参数指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80 1英寸等于2.5cm,A4纸是 21*30cm的纸张
facecolor:背景颜色
edgecolor:边框颜色
frameon:是否显示边框
【返回值】:
类matplotlib.figure.Figure的对象,记为fig,其参数见2.1所示
【用法】:
有些参数使用matplotlib.pyplot.figure()函数,有些参数使用返回的类matplotlib.figure.Figure的对象修改 -
plt.subplot():在当前画布添加一个图片(subplot,子图)
【完整函数名】:
matplotlib.pyplot.subplot(*args, **kwargs)
【参数】:
*args(nrows,ncols,index ):分别为子图的行数、列数和将要添加的这个子图的索引。使用时可以“2,2,1”也可以“221”
**kwargs
其他参数请参考官网
【用法】
subplot可以规划figure划分为(nrows × ncols)个子图,但每条subplot命令只会创建其中的一个子图 -
plt.subplots():创建一个画布和一组图片(子图)
【完整函数名】:
matplotlib.pyplot.subplots(nrows=1, ncols=1, *, sharex=False, sharey=False, squeeze=True, subplot_kw=None, gridspec_kw=None, **fig_kw)
【参数】:
nrows, ncols:图片(子图)的行数和列数
sharex, sharey:是否共享坐标轴刻度 bool or {‘none’, ‘all’, ‘row’, ‘col’}, default: False
【返回值】:
一个类matplotlib.figure.Figure的对象,记为fig;
一个或一组matplotlib.axes.Axes的对象,记为ax/axs
花式创建子图参考:https://matplotlib.org/stable/tutorials/provisional/mosaic.html#sphx-glr-tutorials-provisional-mosaic-py -
plt.savefig() 保存当前图形
# 保存当前图形到C:\\路径下,名称为test_rasterization,格式为svg
plt.savefig("C:\\test_rasterization.svg", dpi=300)
保存矢量图:
.eps、.svg
四、使用类matplotlib.axes.Axes的对象画图
一、二、三节介绍了怎么创建和设置画布(Figure,记为fig)、图片(Axes,记为ax)。第四节介绍怎么使用Axes的对象画图。
当只有画布上只有一张子图时,可以用plt代替ax,但不建议使用
-
类Axes的属性(或成员变量)
【属性是不可以直接访问的,设置属性和获取属性的值都需要调用类的成员函数,通常是属性名称前加“set_”或“get_”】
-
类Axes的成员函数
2.1用于绘制图形的函数
2.2用于设置属性的函数
具体参考:https://matplotlib.org/stable/api/axes_api.html
常用的有
-
常用参数设置
a) 图例的位置:
loc:指定图例的角
bbox_to_anchor:将指定图例的角放在某个坐标上/范围内
例:
#将图例放在(x, y, width, height)范围的最佳位置 ↓
ax.legend(loc='best', bbox_to_anchor=(0.5, 0.0, 0.5, 0.5))
#将图例的右上角放在(x, y)处 ↓
ax.legend(loc='upper right', bbox_to_anchor=(0.5, 0.5))
五、常用的参数
1 字体类型和大小 参考:class matplotlib.text.Text
fontproperties / font / font_properties:字体属性 6种
{‘family’,‘style’,‘stretch’,‘weight’,‘size’,‘math_fontfamily’}
fontfamily / family:字体类型{FONTNAME, ‘serif’, ‘sans-serif’, ‘cursive’, ‘fantasy’, ‘monospace’}
fontsize / size:字体大小 float or {‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’}
… …
字体的类型可以参考:https://zhuanlan.zhihu.com/p/35983270
常用的字体family:‘serif’, ‘sans-serif’, ‘cursive’, ‘fantasy’, or ‘monospace’为最常用的
Serif :在印刷学上指衬线字体。衬线字体有 Georgia, Garamond, Times New Roman, 中文的宋体。
sans-serif:就是无衬线字体。无衬线字体比较圆滑,线条一般粗细均匀。比较适合用作艺术字、标题等。因此sans-serif一般不适用于绘图的axes,legend等。
cursive:即为手写字体。可以用在特殊手写效果的绘图上。
fantasy:梦幻字体,非常有艺术感。
monospace:等宽字体,可以使得英文字母等宽。
2 形状和颜色
点、线形状及颜色https://blog.csdn.net/hesongzefairy/article/details/113527780