文章目录
- 1. 数据可视化
- 2. 基本绘图 API
- 2.1 plot()
- 2.2 hlines() 绘制水平线
- 2.3 vlines() 绘制垂直线
- 2.4 linspace() sin() cos()
- 3. 设置线型线宽
- 4. 设置坐标刻度
- 4.1 坐标轴刻度标签文本以 latex 格式显示
- 5. 设置坐标轴
- 6. 设置图例
- 7. 设置特殊点
- 8. 设置备注
- 附
- 可设置线颜色的单词
- latex
- 图形特殊点的点型
- 特殊点备注的箭头样式
数据可视化指的是使用图形的方式展现数据分布规律。
import numpy as np
import matplotlib.pyplot as plt
x = np.array([1, 2, 3, 4, 5])
y = np.array([12, 22, 43, 34, 25])
# 绘图函数
# 需要传入两个数组类型的参数
# 第一个参数为 x 轴上的坐标,第二个参数为 y 轴上的坐标
# 两个数组对应位置的 x 与 y 组成一个点的坐标
# 两个数组在形式上需要相同
plt.plot(x, y)
# 显示绘制的图形,会阻塞程序的运行
plt.show()
传入的数组参数只有一个的情况:
import numpy as np
import matplotlib.pyplot as plt
x = np.array([1, 2, 3, 4, 5])
y = np.array([12, 22, 43, 34, 25])
# 绘图函数
# 如果传入的数组参数为一个
# 则传入的数组参数会被默认是 y 轴的坐标,在 x 轴上的取值会默认进行取值
plt.plot(x)
plt.plot(y)
# 显示绘制的图形,会阻塞程序的运行
plt.show()
import numpy as np
import matplotlib.pyplot as plt
# 第一个参数为水平线的 y 值
# 第二个参数为水平线的开始位置
# 第三个参数为水平线的结束位置
plt.hlines(20, 2, 4)
plt.show()
import numpy as np
import matplotlib.pyplot as plt
# 第一个参数为垂直线的 x 值
# 第二个参数为垂直线的开始位置
# 第三个参数为垂直线的结束位置
plt.vlines(20, 2, 4)
plt.show()
import numpy as np
import matplotlib.pyplot as plt
# linspace() 线性拆分
# 从 0 到 π 之间取 1000 个点
# np.pi π
x = np.linspace(0, 2*np.pi, 1000)
# 求 x 中每个点对应 sin 值
sinx = np.sin(x)
plt.plot(x, sinx)
plt.show()
import numpy as np
import matplotlib.pyplot as plt
# linspace() 线性拆分
# 从 0 到 π 之间取 1000 个点
# np.pi π
x = np.linspace(0, 2*np.pi, 1000)
# 求 x 中每个点对应 cos 值
cosx = np.cos(x)
plt.plot(x, cosx)
plt.show()
在使用 plot()
绘图时,还可以传入如下参数,来设置线型线宽:
参数 | 说明 |
---|---|
linestyle | 设置线型:‘-’(实线) ‘- -’(虚线) ‘-.’ ‘:’ |
linewidth | 线宽(数字) |
color | 颜色 ( #rrggbb 或 颜色单词 或 (r, g, b, a) ) |
alpha | 设置透明度(0-1) |
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2*np.pi, 1000)
sinx = np.sin(x)
cosx = np.cos(x)
plt.plot(x, sinx, linestyle=':', linewidth=2, alpha=0.7, color='black')
plt.plot(x, cosx, linestyle='-.', linewidth=3, alpha=1, color='#12ff12')
plt.show()
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2*np.pi, 1000)
sinx = np.sin(x)
cosx = np.cos(x)
# color=(red, green, blue, alph)
# 四个取值为 0-1
plt.plot(x, sinx, color=(0, 0.5, 0.7, 0.8))
plt.show()
设置 x 轴的坐标刻度:
xticks(x_val_list, x_text_list)
x_val_list: x 轴刻度值序列
x_text_list: x 轴刻度标签文本序列[可选]
设置 y 轴的坐标刻度:
yticks(y_val_list, y_text_list)
y_val_list: y 轴刻度值序列
y_text_list: y 轴刻度标签文本序列[可选]
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2*np.pi, 1000)
sinx = np.sin(x)
cosx = np.cos(x)
# 修改 x 轴的刻度
names = ['0', 'π/2', 'π', '3π/2', '2π']
plt.xticks([0, np.pi/2, np.pi, 3*np.pi/2, 2*np.pi], names)
plt.plot(x, sinx, linestyle=':', linewidth=2, alpha=0.7, color='black')
plt.plot(x, cosx, linestyle='-.', linewidth=3, alpha=1, color='#12ff12')
plt.show()
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2*np.pi, 1000)
sinx = np.sin(x)
cosx = np.cos(x)
# 修改 x 轴的刻度
# latex 格式的字符串写在 $ $ 中间
# r'' 原始字符串
# \frac{分子}{分母} 分数形式
names = ['0', r'$\frac{\pi}{2}$', 'π', r'$\frac{3\pi}{2}$', '2π']
plt.xticks([0, np.pi/2, np.pi, 3*np.pi/2, 2*np.pi], names)
plt.plot(x, sinx, linestyle=':', linewidth=2, alpha=0.7, color='black')
plt.plot(x, cosx, linestyle='-.', linewidth=3, alpha=1, color='#12ff12')
plt.show()
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2*np.pi, 1000)
sinx = np.sin(x)
cosx = np.cos(x)
# 修改 x 轴的刻度
names = ['0', r'$\frac{\pi}{2}$', 'π', r'$\frac{3\pi}{2}$', '2π']
plt.xticks([0, np.pi/2, np.pi, 3*np.pi/2, 2*np.pi], names)
# 设置坐标轴
# 绘制出来的图形四个边都是坐标轴
# 先获取当前图形的坐标轴
ax = plt.gca()
# 获取其中某个坐标轴
# ax.spines['坐标轴名']
# set_color() 设置坐标轴的颜色 颜色的书写可以采用上面设置线颜色的方式
# set_color('none') 不显示坐标轴
# left - 左轴,right - 右轴,bottom - 下轴,top - 上轴
# 获取上轴和右轴,取消上轴和右轴的显示
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')
# 设置坐标轴的位置
# 需要传入 2 个元素组成的元组为参数
# 第一个元素为移动坐标轴的参照类型,一般为 ’data‘ 以数据的值作为移动参照值
# 第二个元素为参照值
# set_position((参照类型, 参照值))
ax.spines['left'].set_position(('data', 0))
ax.spines['bottom'].set_position(('data', 0))
# 绘制图形
plt.plot(x, sinx, linestyle=':', linewidth=2, alpha=0.7, color='black')
plt.plot(x, cosx, linestyle='-.', linewidth=3, alpha=1, color='#12ff12')
plt.show()
# 在绘制图形的时候可以设置图例
plot( x, y, label='' )
# label: 关键字参数,值为字符串,支持 latex 排版语法的字符串
# 设置图例的位置(不设置,会默认寻找一个合适的位置放图例)
legend( loc='' )
# loc: 关键字参数
loc 的取值:
# 绘制图形
plt.plot(x, sinx, linestyle=':', linewidth=2, alpha=0.7, color='black', label='y = sin(x)')
plt.plot(x, cosx, linestyle='-.', linewidth=3, alpha=1, color='#12ff12', label='y = cos(x)')
# 要调用该方法,图例才会显示
plt.legend()
plt.show()
plt.legend(loc='upper right')
# 取对应的数字编码,效果一样
plt.scatter(
x, # 所有需要标注点的水平坐标组成的序列
y, # 所有需要标注点的垂直坐标组成的序列
marker='', # 点型
s='', # 点的大小, 取值:数字
edgecolors='', # 边缘色
facecolor='', # 填充色
zorder=3 # 绘制图层编号(点和线之间的上下层关系) 数字大的在上
)
# 绘制特殊点
xs, ys = [np.pi, np.pi], [0, -1]
plt.scatter(
xs,
ys,
marker='D',
edgecolors='red',
facecolor='blue',
s=80,
zorder=2,
label='Point' # 设置特殊点的图例
)
# 图例
plt.legend(loc=1)
plt.show()
# 在图表中为某个点添加备注。
# 包含备注文本,备注箭头等图像的设置。
plt.annotate(
'', # 备注中显示的文本内容
xycoords='data', # 备注目标点所使用的坐标系
# data 表示数据坐标系
xy=(x, y), # 备注目标点的坐标
textcoords='offset points',# 备注文本所使用的坐标系
# offset points 参照点的偏移坐标系,以备注目标点为原点建立参照坐标系
xytext=(x, y), # 备注文本的坐标
fontsize=14, # 备注文本的字体大小
arrowprops=dict() # 箭头样式,值为字典
)
# arrowprops 字典参数的常用key
arrowprops=dict(
arrowstyle='', #定义箭头样式
connectionstyle='' # 定义连接线的样式
)
其他更多参数可以参考:
【Matplotlib 可视化之箭头与标注的高级应用】
【官方文档】
# 设置备注文本
plt.annotate(
'(π, -1)',
xycoords='data',
xy=(np.pi, -1),
textcoords='offset points',
xytext=(20, -30),
fontsize=14,
arrowprops=dict(
arrowstyle='->',
connectionstyle='angle3'
)
)
# 图例
plt.legend(loc=1)
plt.show()
【在线 LaTeX 公式编辑器】
图片来源:
【Matplotlib 可视化之箭头与标注的高级应用】