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 画图关键是定义图像的坐标(横坐标、纵坐标),然后用一些参数进一步设置图像的细节