⛳绘制基础
- 在使用 Matplotlib 绘制图形时,其中有两个最为常用的场景。一个是画点,一个是画线。 pyplot 基本方法的使用如下表所示
方法名 | 说明 |
---|---|
title() | 设置图表的名称 |
xlabel() | 设置 x 轴名称 |
ylabel() | 设置 y 轴名称 |
xticks(x, ticks, rotation) | 设置 x 轴的刻度,rotation 为刻度标签的旋转角度 |
yticks() | 设置 y 轴的刻度 |
plot() | 绘制线性图表 |
show() | 显示图表 |
legend() | 显示图例 |
text(x, y, text) | 显示每个数据点的值,x、y 为值的位置 |
figure(name, figsize=(w, h), dpi=n) | 设置图片的名称、大小和分辨率 |
⛳绘制直线
- 在使用 Matplotlib 绘制 线性图时,其中最简单的是 绘制线图。在下面的实例代 码中,使用 Matplotlib 绘制 了一个简单的直线。具体实 现过程如下:
- (1) 导入模块 pyplot,并给它指定别名 plt,以免反复输入 pyplot。在模块 pyplot 中包含很多用于生产图表的函数。
- (2) 将绘制的直线坐标传递给函数 plot()。
- (3) 通过函数 plt.show()打开 Matplotlib 查看器,显示绘制的图形。
- 绘制折线只需要将x和y的参数设置为列表元组等序列对象,x和y序列中的每个相应值对应一个点
🧩设置标签文字和线条粗细
import matplotlib.pyplot as plt
# 绘制折线图并设置样式
datas = [1, 2, 3, 4, 5]
squares = [1, 4, 9, 16, 25]
plt.plot(datas, squares, linewidth=5) # 设置线条宽度
# 设置图表标题, 并在坐标轴上添加标签
plt.title('', fontsize=24)
plt.xlabel('datas', fontsize=14)
plt.ylabel('squares', fontsize=14)
plt.rcParams['font.sans-serif'] = ['SimHei'] # matplotlib默认不支持中文标签,所以此行的目的是用来正常显示中文标签
plt.show()
Matplotlib 默认情况不支持中文(使用中文可能会出现乱码问题),可以使用以下简单的方法来解决:
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
⛳绘制正弦曲线和余弦曲线
- 使用 plt 函数绘制任何曲线的第一步都是生成若干个坐标点(x,y),理论上坐标点是越 多越好。本例取 0 到 10 之间 100 个等差数作为 x 的坐标,然后将这 100 个 x 坐标值一起传 入 Numpy 的 sin 和 cos 函数,就会得到 100 个 y 坐标值,最后就可以使用 plot 函数绘制正 弦曲线和余弦曲线。
# coding: utf-8
import matplotlib.pyplot as plt
import numpy as np
# 绘制sin和cos曲线
# 生成x的坐标(0-10的100个等差数列)
plt.figure('sin-cos', figsize=(10, 10))
x = np.linspace(0, 10, 200) # 生成将1-10(包含10)平均分为200份后的等差数列
print(len(x))
sin_y = np.sin(x)
# 绘制正弦曲线
plt.plot(x, sin_y)
# 绘制余弦曲线
cos_y = np.cos(x)
plt.plot(x, cos_y)
plt.show()
如果想绘制到两张画布中,可以调用 subplot()函数将画布分区。
⛳subplot()函数将画布分区
# subplot()函数将画布分区的使用
# 将画布分为区域,将图画到画布的指定区域
x = np.linspace(1, 10, 100)
# 将画布分为2行2列, 将图画到画布的1区域
plt.subplot(2, 2, 1)
plt.plot(x, np.sin(x))
plt.subplot(2, 2, 3) # 将图画到画布的3区域
plt.plot(x, np.cos(x))
plt.show()
⛳绘制散点图
- 使用 scatter 函数可以绘 制随机点,该函数需要接收 x 坐标和 y 坐标的序列。
import matplotlib.pyplot as plt
import numpy as np
# 绘制散点图
x = np.linspace(0, 10, 100) # 生成0到10中100个数的等差数列
plt.scatter(x, np.sin(x))
plt.show()
🎯实战1–绘制直线图_折线图
# coding: utf-8
import matplotlib.pyplot as plt
import numpy as np
# 直线图
# # 将(0, 1)点和(2, 4)连起来
# # plot默认画直线
# plt.plot([0, 2], [1, 4])
# plt.show()
# # 折线图
# x = [1, 2, 3, 4, 5]
# squares = [1, 4, 9, 16, 25]
# plt.plot(x, squares)
# plt.show()
# # 绘制折线图并设置样式
# datas = [1, 2, 3, 4, 5]
# squares = [1, 4, 9, 16, 25]
# plt.plot(datas, squares, linewidth=5) # 设置线条宽度
# # 设置图表标题, 并在坐标轴上添加标签
# plt.title('', fontsize=24)
# plt.xlabel('datas', fontsize=14)
# plt.ylabel('squares', fontsize=14)
# plt.rcParams['font.sans-serif'] = ['SimHei'] # matplotlib默认不支持中文标签,所以此行用来正常显示中文标签
# plt.show()
#
# 绘制一元二次方程的曲线y=x^2
# 200个点的x坐标
x = range(200)
# 生成y点的坐标
y = [i**2 for i in x]
# 绘制一元二次曲线
plt.plot(x, y)
# 调用savefig将一元二次曲线保存为result.jpg
plt.savefig('result.jpg')
plt.show()
感兴趣的同志可以取消对应的注释, 去查看相应的图
result:
-
直线图
-
折线图
-
带样式的折线图
-
一元二次方程曲线
🎯实战2–绘制sin、cos,曲线图
# coding: utf-8
import matplotlib.pyplot as plt
import numpy as np
# 绘制sin和cos曲线
# 生成x的坐标(0-10的100个等差数列)
plt.figure('sin-cos', figsize=(10, 10))
x = np.linspace(0, 10, 200) # 生成将1-10(包含10)平均分为200份后的等差数列
print(len(x))
sin_y = np.sin(x)
# 绘制正弦曲线
plt.plot(x, sin_y)
# 绘制余弦曲线
cos_y = np.cos(x)
plt.plot(x, cos_y)
plt.show()
# subplot()函数将画布分区的使用
# 将画布分为区域,将图画到画布的指定区域
x = np.linspace(1, 10, 100)
# 将画布分为2行2列, 将图画到画布的1区域
plt.subplot(2, 2, 1)
plt.plot(x, np.sin(x))
plt.subplot(2, 2, 3) # 将图画到画布的3区域
plt.plot(x, np.cos(x))
plt.show()
# 绘制散点图
x = np.linspace(0, 10, 100) # 生成0到10中100个数的等差数列
plt.scatter(x, np.sin(x))
plt.show()
# 画10种大小, 100中颜色的散点图
np.random.seed(0)
x = np.random.rand(100)
y = np.random.rand(100)
colors = np.random.rand(100)
size = np.random.rand(100)*1000 # size参数的长度要与x, y长度匹配
plt.scatter(x, y, c=colors, s=size, alpha=0.7)
plt.show()
# 绘制不同种类不同颜色的线
# 不同种类不同颜色的线并添加图例
x = np.linspace(0, 10, 100)
plt.plot(x, x + 0, '-g', label='-g') # 实线 绿色
plt.plot(x, x + 1, '--c', label='--c') # 虚线 浅蓝色
plt.plot(x, x + 2, '-.k', label='-.k') # 点划线 黑色
plt.plot(x, x + 3, '-r', label='-r') # 实线 红色
plt.plot(x, x + 4, 'o', label='o') # 点 默认是蓝色
plt.plot(x, x + 5, '-x', label='-x') # 叉叉 默认是蓝色
plt.plot(x, x + 6, 'dr', label='dr') # 砖石 红色
# 添加图例右下角lower right 左上角 upper left 边框 透明度 阴影 边框宽度
plt.legend(loc='lower right', fancybox=True, framealpha=1, shadow=True, borderpad=1)
plt.show()
因为我在绘制好一张图之后会注释掉, 然后在下面重新绘制新的图, 所以每次运行只会看到新的图, 但此处我把注释掉的代码给取消注释了, 感兴趣的同志可以复制下来去查看修改, 并且该程序是单线程的, 所以五张图不会同时弹出, 需要在关闭一张图之后才会弹出来另一张图表。为了能更直观的看到代码执行的结果, 我把每张图都给截图放到了下面。
-
sin、cos图
-
subplot()函数画布分区的使用
-
sin函数图像的散点图
-
10种大小, 100中颜色的散点图
-
多种种类, 多种颜色的直线图(搭配图例)