欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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()
看看效果吧

matplotlib绘图系列:合并多个直方图及绘图细节绘制漂亮的饼图

  • 注意事项: 其实这种图不是很难, 我们要实先设置直方的宽度, 然后再使用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()

matplotlib绘图系列:合并多个直方图及绘图细节绘制漂亮的饼图

  • 具体效果如上图所示, 许多饼图都可以按照这个饼图的模板来绘制
相关标签: 绘图