7.1. 初识 matplotlib 与 plot#

使用 matplotlib 包画图时,我们一般加载里面的 pyplot 函数,并命名为 plt,然后使用plot函数画图。

# 导入 matplotlib 中的 plot, 并命名为常用名 plt

import matplotlib.pyplot as plt

例如,下面的代码画出正弦函数 \(y=sin(x)\) 的图形。

# 导入工具包

import matplotlib.pyplot as plt

import numpy as np

# plt.style.use('default')

# 生成数据

x = np.arange(0, 15, 0.1) # 横坐标数据为从0到10之间,步长为0.1的等差数组

y = np.sin(x) # 纵坐标数据为 x 对应的 sin(x) 值

# 将横坐标数据,纵坐标数据放入 plot 函数中,生成图形

plt.plot(x, y)

plt.text(4, 0.5, "y=sin(x)") # 在指定坐标位置显示文字

# 显示图形

plt.show()

plot 函数的基本用法如下:

plot([x], y, [fmt], **kwargs)

[x]

可选参数,横坐标数据

y

纵坐标数据

[fmt]

可选参数,定义图形的基本样式:颜色,点形,线形

**kwargs

可选参数,定义图形的线条粗细,标签等

[fmt] 的常用代码(包括颜色代码、点形代码、线形代码),由下标所示。

颜色代码

效果

线形代码

效果

点形代码

效果

b

蓝色

-

实线

o

实心圆形

r

红色

虚线

.

点形

g

绿色

-.

折线

+

十字形

k

黑色

:

点线

*

星号

w

白色

+

加号

y

黄色

x

叉号

c

青色

m

洋红色

tip

plot 函数实质上将不同坐标的点连线在一起,生成图像。因此,若仅提供两个横坐标与两个纵坐标,则生成一个线段。

下面一些 plot 函数的代码展示了 [x],[fmt],**Kwargs 的一些可选用法。

plt.plot(y) # 据纵坐标数据 y 画图,横坐标数据默认为从 0 到 N-1,步长为 1 的等差数组

[]

plt.plot(x, y, "b ") # 颜色为蓝色('b')、点形为圆('o')

[]

plt.plot(y, "g-.") # 颜色为绿色('g'),线形为折线('-.')

[]

plt.plot(

x, y, "yo:", label="y=sin(x)", lw=2

) # 颜色为黄色('y'),点形为圆形('o'),线形为虚线(':'),lable 内容为 'y=sin(x)', 线条宽度为 2

[]

如果我们想自定义坐标轴的标题,坐标轴的刻度,坐标轴刻度的范围,设置图形标题,添加图例时,可以通过设置 pyplot 函数中的 xlable(横坐标轴标题), ylabel(纵坐标轴标题), xticks(横坐标轴刻度),yticks(纵坐标轴刻度),title(图形标题), grid(显示网格),legend(显示图例)等属性来实现。若调整图像的清晰度,可以用plt.rcParams["figure.dpi"] 来调整图像的 dpi 值来实现,调整图像的大小可以通过 plt.rcParams('figsize')来设置图像的长宽。

# 导入工具包

import matplotlib.pyplot as plt

import numpy as np

# 下面几行代码使得 pyplot 画出的图形中可以显示中文

# mac 系统下字体: 黑体 'Heiti TC',宋体:'Songti SC'; win 系统下黑体: 'SimHei'

# binder 下字体:'Noto Sans CJK JP'

import platform

os_name = platform.system()

if os_name == "Windows":

font = "SimHei"

elif os_name == "Darwin":

font = "Heiti TC"

else:

font = "Noto Sans CJK JP"

plt.rcParams["font.sans-serif"] = [font]

# 这行代码能够正确显示中文时坐标轴上的负刻度

plt.rcParams["axes.unicode_minus"] = False

# 生成数据

x = np.arange(0, 15, 0.5)

y1 = np.sin(x)

y2 = np.cos(x)

# figure size or dpi settings

plt.figure(figsize=(4, 3)) # 或者plt.rcParams('figsize') = [4, 3]

plt.rcParams["figure.dpi"] = 100 # 调整图像清晰度,默认为100

# 生成图形

plt.plot(x, y1, "go-.", label="y=sin(x)", linewidth=2) # 颜色绿色,点形圆形,线性虚线,设置图例显示内容,线条宽度为2

plt.plot(x, y2, "r*--", label="y=cos(x)", linewidth=2) # 颜色绿色,点形圆形,线性虚线,设置图例显示内容,线条宽度为2

plt.ylabel("y") # 横坐标轴的标题

plt.xlabel("x") # 纵坐标轴的标题

plt.xticks(np.arange(0, 16, 1)) # 设置横坐标轴的刻度为 0 到 10 的数组

plt.ylim([-2, 2]) # 设置纵坐标轴范围为 -2 到 2

plt.legend() # 显示图例, 图例中内容由 label 定义

plt.grid() # 显示网格

plt.text(5, 1.5, "数学图形") # 在指定坐标位置显示文字

plt.title("我的第一个 Python 图形") # 图形的标题

# 显示图形

plt.show()

可以看出,Python 画图关键是定义图像的坐标(横坐标、纵坐标),然后用一些参数进一步设置图像的细节