Matplotlib是一个Python的2D绘图库。
1 | import matplotlib.pyplot as plt |
设置图片标题
1 | plt.title('title') |
设置x/y轴文字
1 | plt.xlabel('xlabel') |
设置x/y轴的刻度范围
默认情况下,matplotlib的坐标轴刻度并不会从0开始。通过xlim()和ylim()方法,设置x/y轴的刻度范围,可以让x/y轴的刻度从0开始。
1 | plt.xlim(xmin,xmax) |
示例:
1 | plt.xlim(xmin=0, xmax=1000) |
设置x/y轴的刻度
可以使用xticks()和yticks()方法,设置x/y轴需要显示的所有刻度值。
1 | plt.xticks(ticks=None, labels=None, **kwargs) |
示例:
1 | # 以50为步长,x轴的刻度为0,50,100,150,...,900,950 |
显示图片
1 | plt.show() |
使用中文
Matplotlib默认是不支持中文的。因此,如果要显示中文,可以导入本地的中文字体库。
1 | import matplotlib.pyplot as plt |
折线图
绘制折线图,需要使用matplotlib.pyplot中的plot方法
1 | plot([x], y, [fmt], *, data=None, **kwargs) |
线条样式及颜色
fmt由标记(marker)、线条样式(linestyle)以及颜色(color)组成。
1 | # marker、line以及color均为可选 |
- Markers
1 | 符号 描述 |
- Line Styles
1 | 符号 描述 |
- Colors
1 | 符号 描述 |
示例:
1 | import matplotlib.pyplot as plt |
常用关键字参数
1 | 符号 描述 |
Tips:当使用圆形标记时,设置markerfacecolor='white'
可以呈现出空心圆的效果。
设置图中的字体大小
1 | 坐标轴标签 |
散点图
绘制散点图,需要使用matplotlib.pyplot中的scatter方法
1 | import matplotlib.pyplot as plt |
柱状图
绘制柱状图,需要使用matplotlib.pyplot中的bar方法
1 | bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs) |
饼状图
绘制饼状图,需要使用matplotlib.pyplot中的pie方法
1 | pie(x, explode=None, labels=None, colors=None, autopct=None, |
子图
如果需要一次性绘制多张图片,需要使用matplotlib.pyplot中的subplot方法:
1 | subplot(nrows, ncols, index, **kwargs) |
- (nrows, ncols, index):nrows表示总行数,ncols表示总列数,index表示当前图片的编号(index从1开始,并按照从左至右、从上至下的顺序依次增加)。
- pos:包含三个数字的整数,每一位与上面三个参数一一对应。
例如,subplot(235)
,等价于subplot(2,3,5)
。
注意:如果使用该方式创建子图,子图的数量不能超过9张。
调整子图布局
需要使用matplotlib.pyplot中的subplots_adjust方法
1 | subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=None) |
- left:图片左边界的位置
保存图片
保存图片,需要使用matplotlib.pyplot中的savefig方法。
需要注意的是:savefig必须在show方法之前执行。
1 | plt.savefig('./test.eps') |
添加水平/垂直线
可以使用hlines()和vlines()方法分别绘制水平、垂直线段。
1 | plt.vlines(x=0, ymin=0, ymax=1, linestyles='dashed') |
显示图例
1 | plt.legend(*args, **kwargs) |
- loc:图例的位置,值为字符串或者对应的数字,共有以下11种情况
1 | Location String Location Code |
其中,’center right’和’right’是等价的。
示例:
1 | # 右下角 |
- ncol:图例的列数,默认为1。
显示网格
1 | plt.grid(b=None, which='major', axis='both', **kwargs) |
b:是否显示网格
which:在哪些刻度上画网格线(主刻度|小刻度),可选的值有{‘major’, ‘minor’, ‘both’}
axis:在哪个轴上画网格线,可选的值有{‘both’, ‘x’, ‘y’}
其他关键字参数:
1 | 符号 描述 |
更改坐标轴的位置
1 | # gca,get current axis |
对LaTex的支持
在需要输入LaTex公式的地方,使用一对美元符$$包裹起来,就像这样r'sigmoid(x)=$\frac{1}{1+e^{-x}}$'
,不要忘记前面的字母r(告诉编译器后面的字符串是个raw string,不需要对反斜杠进行转义)。
示例:
绘制Sigmoid函数,并在图例中显示sigmoid的数学表达式
1 | import matplotlib.pyplot as plt |
输出: