Skip to main content

基础使用

安装

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()