常用视图
折线图
import numpy as np
import matplotlib.pyplot as plt
y = np.random.randint(0,10,size = 15)
y # array([4, 3, 8, 9, 9, 7, 1, 2, 3, 7, 7, 9, 7, 1, 2])
一图多线
# 设置图形大小;宽度为 9 英寸,高度为 6 英寸
plt.figure(figsize=(9,6))
# x默认为y的索引0,1...14
# y为具体的值
plt.plot(y, marker = '*', color = 'r')
# y.cumsum(): 对数组 y 中的元素进行累积求和操作
plt.plot(y.cumsum(), marker = 'o')
# 添加数据点坐标的注释
for i, value in enumerate(y):
plt.annotate(f'({i}, {value})', (i, value), textcoords="offset points", xytext=(0,10), ha='center')
plt.show()
多图布局
# 多图布局
fig,axs = plt.subplots(2,1)
# 设置宽高
fig.set_figwidth(9)
fig.set_figheight(6)
axs[0].plot(y,marker = '*',color = 'red')
axs[1].plot(y.cumsum(),marker = 'o')
柱状图
plt.bar() 绘制柱状图
常用参数:
- x: 每个柱的 x 坐标。
- height: 每个柱的高度。
- width: 每个柱的宽度,默认为 0.8。
- color: 柱的颜色。
- edgecolor: 柱的边框颜色。
- linewidth: 柱的边框宽度。
- align: 柱的对齐方式,可选值为 ‘center’, ‘edge’。
- bottom:用于指定每个柱状图的底部位置
labels = ['G1', 'G2', 'G3', 'G4', 'G5','G6'] # 级别
men_means = np.random.randint(20,35,size = 6)
women_means = np.random.randint(20,35,size = 6)
men_std = np.random.randint(1,7,size = 6)
women_std = np.random.randint(1,7,size = 6)
width = 0.35
plt.bar(x=labels, # 横坐标
height=men_means, # 柱高
width=width, # 线宽
yerr=men_std, # 误差条
label='Men')#标签
# 绘制第二个柱状图,堆叠在第一个柱状图之上
plt.bar(labels, women_means, width, yerr=women_std,
bottom=men_means, # 条形图,绘制时,落上去
label='Women')
plt.ylabel('Scores')
plt.title('Scores by group and gender')
# plt.legend() 会根据你在绘图时设置的 label 参数自动生成相应的图例
plt.legend()
boy = np.random.randint(20,35,size = 6)
girl = np.random.randint(20,35,size = 6)
labels = ['G1','G2','G3','G4','G5','G5']
plt.figure(figsize=(9,6))
x = np.arange(6)
width = 0.3
plt.bar(x - width/2,boy,width = width)
plt.bar(x + width/2,girl,width = width)
plt.legend(['Boy','Girl'])
plt.xticks(x,labels,fontsize = 20)
# 放置文本 text
for i in range(6):
s1 = boy[i]
plt.text(x = i - 0.15,y = s1 + 1,s = s1,ha = 'center')
s2 = girl[i]
plt.text(x = i + 0.15,y = s2 + 1,s = s2,ha = 'center')
plt.ylim(0,40)
极坐标图
线性极坐标图
x = np.linspace(0,4* np.pi,200)
y = np.linspace(0,2,200)
# projection='polar' 创建一个极坐标图形子图
ax = plt.subplot(111,projection = 'polar',facecolor = 'lightgreen')
ax.plot(x,y)
# 设置极坐标图中径向坐标(r 轴)的最大值为 3
ax.set_rmax(3)
# 设置r轴标签
ax.set_rticks([0.5,1,1.5,2])
# 显示网格线
ax.grid(True)
条形极坐标
N = 8 # 分成8份(0 到 360)
x = np.linspace(0, 2 * np.pi, N, endpoint=False)
# 纵坐标
y = np.random.randint(3,15,size = N)
# 宽度,8个柱子沾满圆
width = np.pi / 4
# 颜色,0到1
colors = np.random.rand(8,3) # 随机生成颜色
# 创建极坐标
ax = plt.subplot(111,projection = 'polar') # polar表示极坐标
# 绘制条形图
plt.bar(x, y, width=width,color = colors)