matplotlib绘图系列:合并多个直方图及绘图细节绘制漂亮的饼图
程序员文章站
2022-05-28 22:07:26
...
Matplotlib组合直方图
当我们一张图需要多个直方我们改怎么做呢?
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.figure(figsize=(15, 8)) # 设置画布
x_index = np.arange(6) # 确定label的位置
x_data = ("北京", "上海", "深圳", "广州", "杭州", "西安")
y1_data = (11, 22, 33, 44, 55, 66)
y2_data = (22, 33, 44, 55, 66, 77)
y3_data = (77, 66, 33, 22, 11, 44)
bar_with = 0.2 # 定义一个数字代表独立柱的宽度
rects1 = plt.bar(x_index, y1_data, width=bar_with, alpha=0.4, color="b", label="前端")
rects2 = plt.bar(x_index+bar_with, y2_data, width=bar_with, alpha=0.4, color="r", label="后端")
rects3 = plt.bar(x_index+(bar_with*2), y3_data, width=bar_with, alpha=0.4, color="g", label="AI")
plt.xticks(x_index + bar_width/2, x_data) # 设定x轴
plt.legend() # 显示图例
plt.title('这是我做测试画的一张图')
plt.tight_layout()
# plt.grid(axis="y")
plt.grid(ls='-.') # 绘制背景线
plt.show()
看看效果吧
- 注意事项: 其实这种图不是很难, 我们要实先设置直方的宽度, 然后再使用numpy.arange() 创建一个数组, 这个数组是每个直方的位置 1 ~ n, 当我们每多一个直方时, 我们只需要将数组加上直方的宽度*n 就可以了
rects3 = plt.bar(x_index+(bar_with*2), y3_data, width=bar_with, alpha=0.4, color="g", label="AI"
上面就是一个绘制三条直方的例子, x_index是 1 ~ n 的数组, bar_with 是直方的宽度 x_index + (bar_with * 2) 就是第三条直方图的位置, 然后我们将数据传入即可, 绘制出我们想要的效果图
绘制饼图
import panadas as pd
import matplotlib.pyplot as plt
labels = ['北京', '深圳', '上海', '杭州', '南京', '广州', '成都', '济南', '武汉', '西安']
sizes = [125, 108, 89, 78, 78, 46, 26, 26, 21, 19]
colors = ['lightgreen', 'gold', 'lightskyblue', 'lightcoral']
plt.figure(figsize=(15,8))
plt.pie(sizes, labels=labels,
colors=colors, autopct='%1.1f%%', shadow=True, startangle=50) # shadow=True 表示阴影
plt.axis('equal') # 使图居中
# plt.title("物联网职位各城市需求分布")
plt.show()
- 具体效果如上图所示, 许多饼图都可以按照这个饼图的模板来绘制