基础使用
安装
pip
./python.exe -m pip install -U pip setuptools
./python.exe -m pip install matplotlib
poetry add matplotlib
引入
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
中文字体
# 全局指定
import matplotlib
matplotlib.rcParams["font.family"] = "SimHei"
# 某个图片指定中文
from matplotlib.font_manager import FontProperties
font = FontProperties(fname="C:/Windows/Fonts/msyh.ttc")
plt.plot(x_coords, y_coords, linestyle="-", color="black", zorder=2, fontproperties=font)
plt.xlabel(x_coords.name, fontproperties=font)
plt.ylabel(y_coords.name, fontproperties=font)
plt.title("点的坐标", fontproperties=font)
核心模块
pyplot和pylab
Matplotlib是整个包,pyplot是Matplotlib中的一个模块,并且pylab是一个安装在一起的模块。
pylab和pyplot的区别是,前者将numpy导入了其命名空间中,这样会使pylab表现的和matlab更加相似。现在来说我们经常使用pyplot,因为pyplot相比pylab更加纯粹。
基础使用
基本设置
# 引入
import matplotlib.pyplot as plt
# 中文配置
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解决绘图时坐标轴上的负号显示为方块或乱码的问题
plt.rcParams['axes.unicode_minus'] = False
画布设置
# 画布大小设置为860x500像素
width = 860
height = 500
# 使用figure
# 注意这里的宽度和高度的单位是英寸,1英寸=100像素,所以要除以100
plt.figure(figsize=(width / 100, height / 100))
# 使用rcParams
# 全局设置输出图片大小 1280 x 720 像素
plt.rcParams['figure.figsize']=(width / 100, height / 100)
设置标题
# 标题相关
plt.title("主标题")
plt.ylabel('y轴标题')
plt.xlabel('x轴标题')
# 中文要指定字体,否则乱码
plt.rcParams['font.sans-serif']=['SimHei']
轴坐标
xmin = "x轴的最小值"
xmax = "x轴的最大值"
ymin = "y轴的最小值"
ymax = "y轴的最大值"
# 我想x轴最大854,y轴最大480,可以这样设置
plt.axis([0, 854, 0, 480])
# 同时带返回值的处理
xmin, xmax, ymin, ymax = plt.axis([0, 854, 0, 480])
# 等价于上面
plt.xlim(xmin,xmax)
plt.ylim(ymin,ymax)
# 负数可能出现乱码,可以设置unicode_minus
plt.rcParams['axes.unicode_minus']=False
plt.plot基础api
plt.plot(
x 值的序列,
y 值的序列,
)
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
plt.plot(x,y)
Figure
在matplotlib中,整个图像为一个Figure对象。在Figure对象中可以包含一个或者多个Axes对象。每个Axes(ax)对象都是一个拥有自己坐标系统的绘图区域。
plt.figure(figsize=(6, 3))
plt.plot(6, 3)
plt.plot(3, 3 * 2)
plt.show()
折线图
# 绘制一个矩形框,且最后需要闭合,一共5个坐标
xy = np.array([[0, 0], [0, 480], [854, 480], [854, 0], [0, 0]])
outlineX = xy[:, 0]
outlineY = xy[:, 1]
plt.plot(outlineX, outlineY)
散点图
plt.show()