Matplotlib是一款风格类似Matlab的基于Python的绘图库。它提供了一整套和Matlab相类似的命令API,可以方便地将它作为绘图控件,嵌入GUI应用程序中,是python机器学习的三剑客之一。
通过matplotlib.rc_params()可以读取配置文件中所有参数及其参数值,如果手动修改了配置文件,那么可以调用rc_params()载入最新的配置。
Matplotlib的配置文件常用配置项:
axex: 设置坐标轴的边界和表面的颜色、坐标刻度值大小和网格的显示
backend: 设置目标TKAgg和GTKAgg
figure: 控制dpi、边界颜色、图形大小和子区(subplot)设置
font: 字体集、字体大小和样式设置
grid: 设置网格颜色和线性
legend:设置图例和其中的文本的显示
line: 设置线条(颜色、线型、宽度等)和标记
patch:是填充2D空间的图形对象,如多边形和圆、控制线宽、颜色和抗锯齿设置等
savefig:可以对保存的图形进行单独设置,例如,设置渲染的文件的背景为白色
verbose:设置matplotlib在执行期间信息输出,例如silent、helpful、debug和debug-annoying
xtick和ytick:为x、y轴的主刻度和次刻度设置颜色、大小、方向、以及标签大小
字符 | 描述 |
---|---|
- | 实线样式 |
– | 短横线样式 |
-. | 点画线样式 |
: | 虚线样式 |
. | 点标记 |
, | 像素标记 |
o | 圆标记 |
v | 倒三角标记 |
^ | 正三角标记 |
< | 左三角标记 |
> | 右三角标记 |
1 | 下箭头标记 |
2 | 上箭头标记 |
3 | 左箭头标记 |
4 | 右箭头标记 |
s | 正方形标记 |
p | 五边形标记 |
* | 星形标记 |
h | 六边形标记1 |
H | 六边形标记2 |
+ | 加号标记 |
x | X标记 |
D | 菱形标记 |
d | 窄菱形标记 |
| | 竖直线标记 |
_ | 水平线标记 |
示例:
import matplotlib.pyplot as plt
import numpy as np
y = np.arange(1, 5)
print(y)
plt.plot(y, c='g', marker='o') # 圆形标记
plt.plot(y+1, c='0.5', marker='D') # 菱形标记
plt.plot(y+2, marker='^') # 正三角标记
plt.plot(y+3, 'p') # 五边形标记
plt.show()
字符 | 颜色 |
---|---|
‘b’ | 蓝色 |
‘g’ | 绿色 |
‘r’ | 红色 |
‘c’ | 青色 |
‘m’ | 品红色 |
‘y’ | 黄色 |
‘k’ | 黑色 |
‘w’ | 白色 |
使用HTML十六进制字符串color=‘eeefff’,使用合法的HTML颜色名字(‘red’,'chartreuse’等)
可以传入一个归一化到[0, 1]的RGB元组,使得color=(0.3,0.3,0.4)等,除上述方法外,title()函数也可以修改颜色,如plt.title(‘Title in a custom color’, color=’#123456’).
示例:
import matplotlib.pyplot as plt
import numpy as np
y = np.arange(1,5)
print(y)
plt.plot(y, c='r')
plt.plot(y+1, c='0.5')
plt.plot(y+2, c='#123456')
plt.plot(y+3, c=(0.3, 0.3, 0.4))
plt.show()
Pyplot函数 | API方法 | 描述 |
---|---|---|
text() | mpl.axex.Axes.text() | 在Axes对象的任意位置添加文字 |
xlabel() | mpl.axex.Axes.set_xlabel() | 为x轴添加标签 |
ylabel() | mpl.axex.Axes.set_ylabel() | 为y轴添加标签 |
title() | mpl.axex.Axes.set_title() | 为Axes对象添加标题 |
legend() | mpl.axex.Axes.legend() | 为Axes对象添加图例 |
figtetxt() | mpl.figure.Figure.text() | 在figure对象的任意位置添加文字 |
suptitle() | mpl.figure.Figure.suptitle() | 为Figure对象添加中心化标题 |
annotate() | mpl.axes.Axes.annotate() | 为Axes对象添加注释(箭头可选) |
导入图片:plt.imread(file_path)
保存图片:plt.imsave(file_path)
示例;
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from pandas import Series, DataFrame
# 第一步:构造数据,添加画布
x = np.linspace(0, 2*np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
fig = plt.figure(figsize=(10, 6))
# 第二步:向对象fig中添加子视图
ax1 = fig.add_subplot(2, 2, 1)
ax1.plot(x, y1)
ax1.plot(x, y2)
ax1.grid(True, color='green', ls='-.') # 设置网格
plt.title('pic1', size=10, color='black', loc='right', rotation=0, alpha=0.5)
ax2 = fig.add_subplot(2, 2, 2)
ax2.plot(x, y1)
ax2.plot(x, y2)
ax2.grid(False, color='green', ls='-.') # 设置网格
plt.axis('off') # 关闭坐标轴
plt.title('pic2', size=10, color='black', loc='right', rotation=0, alpha=0.5)
ax3 = fig.add_subplot(2, 2, 3, facecolor='#FFDAB9')
ax3.plot(x, y1)
ax3.plot(x, y2)
plt.ylim([-1.5, 1.5])
plt.xlim([0, 6])
plt.xlabel('X', size=20, color='red', alpha=0.5)
plt.ylabel('Y', size=20, color='red', rotation=0, alpha=0.5)
plt.title('pic3', size=10, color='black', loc='right', rotation=0, alpha=0.5)
ax4 = fig.add_subplot(2, 2, 4)
ax4.plot(x, y1, label='sin(x)', ls='--')
ax4.plot(x, y2, label='cos(x)', marker='o')
plt.axis('equal') # 等量坐标轴
plt.legend(loc=4) # 图例位置
plt.title('pic4', size=10, color='black', loc='right', rotation=0, alpha=0.5)
plt.annotate(
s='this point mean high',
xytext=(3, 1.5),
xy=(1.6, 1.2),
arrowprops={
'width': 10,
'headwidth': 20,
'headlength': 10,
'shrink': 1
}
)
# 第三步 保存图片
plt.savefig('pic.jpg')