python - Python创建条形图比较2组数据
问题描述
我有一个带有 2* 条形图的笔记本,一个是冬季数据,一个是夏季数据。我计算了所有犯罪的总数,并将它们绘制在条形图中,使用代码:
ax = summer["crime_type"].value_counts().plot(kind='bar')
plt.show()
其中显示了如下图:
我有另一个几乎相同的图表,但对于冬天:
ax = winter["crime_type"].value_counts().plot(kind='bar')
plt.show()
我想在同一个条形图中将这两个图表相互比较(x 轴上的每个犯罪都有 2 个来自它的条形图,一个冬天和一个夏天)。
我试过了,这只是我在试验:
bx = (summer["crime_type"],winter["crime_type"]).value_counts().plot(kind='bar')
plt.show()
任何意见,将不胜感激!
解决方案
以下会生成您的数据的虚拟对象并生成您想要的分组条形图:
import random
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
s = "Crime Type Summer|Crime Type Winter".split("|")
# Generate dummy data into a dataframe
j = {x: [random.choice(["ASB", "Violence", "Theft", "Public Order", "Drugs"]
) for j in range(300)] for x in s}
df = pd.DataFrame(j)
index = np.arange(5)
bar_width = 0.35
fig, ax = plt.subplots()
summer = ax.bar(index, df["Crime Type Summer"].value_counts(), bar_width,
label="Summer")
winter = ax.bar(index+bar_width, df["Crime Type Winter"].value_counts(),
bar_width, label="Winter")
ax.set_xlabel('Category')
ax.set_ylabel('Incidence')
ax.set_title('Crime incidence by season, type')
ax.set_xticks(index + bar_width / 2)
ax.set_xticklabels(["ASB", "Violence", "Theft", "Public Order", "Drugs"])
ax.legend()
plt.show()
有了这个脚本,我得到了:
您可以在此处查看 matplotlib 文档中的演示:https ://matplotlib.org/gallery/statistics/barchart_demo.html
重要的是要注意索引!
index = np.arange(5) # Set an index of n crime types
...
summer = ax.bar(index, ...)
winter = ax.bar(index+bar_width, ...)
...
ax.set_xticks(index + bar_width / 2)
这些是在水平轴上排列条形的线,以便它们组合在一起。
推荐阅读
- sql - 从 generate_series 中获得额外的天数
- google-cloud-functions - 从 GCP 中的 pub/sub Cloud Function 更好地记录日志
- python-sphinx - 在 Sphinx Makefile 代码块中保留选项卡
- mysql - 在 Lightsail(不是 RDS)数据库上增加 MySQL max_connection
- azure - Azure blob 存储:当文件的 SAS 令牌过期时,有什么方法可以显示自定义 html 页面?
- python - 根据其他数组的条件,通过索引提取数组的最大元素
- redis - 如何在 Redis v2.4.6 中使 Redis slave 只读?
- google-colaboratory - 如何在谷歌 colab 中使用 JavaScript?
- sublimetext3 - Sublime - 在每一行中删除特定 WORD 之前和之后的文本
- javascript - 通过 cookie 中的令牌进行 Angular 保护路由