python - 如何使用 CSV 数据沿 X 轴并排绘制条形图
问题描述
我正在尝试在一个 X 轴刻度(日期)上创建一个带有 2 个条形的条形图,它代表两组数据。但是,我无法使其跨越图表到其他 x 轴刻度。
这是我的代码:
simsubs = pd.read_csv('simsubs.csv')
fig, axs = plt.subplots(4, sharex=True, figsize=(11,9))
bar_width = 0.35
x = simsubs.Date
axs[3].bar(x, simsubs['CPS1 Deletes'], width=bar_width, zorder=2, label='Deletes', color='#A31214')
axs[3].bar(bar_width, simsubs['CPS1 Total'], width=bar_width, zorder=2, label='Deletes', color='blue')
plt.xticks(rotation=45)
plt.show()
simsubs.Date
指向我希望沿 X 轴绘制的 CSV 中的日期,但这是我的代码生成的 img:
提前感谢您的帮助。我对社区和 python 编码很陌生,如果我的术语或我的帖子可能令人困惑,我深表歉意。
解决方案
您需要以相同的比例创建条形图。一种简单的方法是创建 x 值来简单地计算数据并适当地偏移它们。如果需要,您可以标记 x 轴set_xticklabels
。
X = np.arange(len(x))
bar_width = 0.25
offset = bar_width / 2
axs[3].bar(X - offset, simsubs['CPS1 Deletes'], width=bar_width, color='#A31214')
axs[3].bar(X + offset, simsubs['CPS1 Total'], width=bar_width, color='blue')
axs[3].set_xticks(X)
axs[3].set_xticklabels(x)
如果这些是您正在绘制的唯一数据,那么这两个调用也具有相同的功能会zorder
破坏它们的预期用途。label
bar
或者,您可以使用 pandas 绘图:
simsubs[['CPS1 Deletes', 'CPS1 Total']].plot.bar()
推荐阅读
- javascript - 嵌套过滤器返回空数组
- python - Can't install pip with get-pip, zipimport.ZipImportError: can't decompress data; zlib 不可用
- ionic-framework - 在 Ionic Capacitor PWA 中使用苹果验证我的域名
- c# - 无效操作异常:传入 ViewDataDictionary 的模型项是类型
- typescript - 在 jest 中使用 jest.mock 模拟函数
- kubernetes - Kubernetes) 创建 pod 时未挂载的子目录
- mysql - Livehelperchat:网络聊天中的多个用户显示 mysql 死锁错误
- javascript - Vue 3 - 发出原始值不会触发输入?
- ios - 请求移动站点在 WkWebView 中不起作用。(Objective-C)
- r - 你能遍历 R 中的不同模型输入吗?