python - 两个数据帧在多个子图中一起广播
问题描述
我想绘制 5 个不同的子图,一个用于每一年的数据。对于每一年,我想展示每个县的 DEM 和 REP。到目前为止,我已经编写了以下代码:
fig = plt.figure(figsize=(13,10))
plt.subplot(3, 2, 1)
plt.bar(data=districts_2018[['DEM', 'REP']],
x=districts_2018.index,
height=(districts_2018[['DEM', 'REP']]))
plt.subplot(3, 2, 2)
plt.bar(data=districts_2017[['DEM', 'REP']],
x=districts_2017.index,
height=districts_2017['DEM'])
plt.subplot(3, 2, 3)
plt.bar(data=districts_2016[['DEM', 'REP']],
x=districts_2016.index,
height=districts_2016['DEM'])
plt.subplot(3, 2, 4)
plt.bar(data=districts_2015[['DEM', 'REP']],
x=districts_2015.index,
height=districts_2015['DEM'])
plt.subplot(3, 2, 5)
plt.bar(data=districts_2014[['DEM', 'REP']],
x=districts_2014.index,
height=districts_2014['DEM'])
plt.tight_layout();
但是,与第一个子图 (3,2,1) 的情况一样,我收到错误:
ValueError: shape mismatch: objects cannot be broadcast to a single shape
. 如果我只将高度设置为districts_2018['DEM']
但仅显示 DEM 而不是 REP,则此代码有效。
解决方案
您可以直接使用 pandas 包装器来绘制分组条形图。将 设置ax
为您希望该图出现的相应子图。
fig, axes = plt.subplots(3,2,figsize=(13,10))
for ax, df in zip(axes.flat, [districts_2018, districts_2017, ....])
df[['DEM', 'REP']].plot.bar(ax=ax)
推荐阅读
- c# - 如何将自定义依赖属性添加到 wpf 中的按钮?
- javascript - 如何创建 UI 以允许用户在加载后选择文件的顺序
- jenkins - 如何在当前正在运行的特定 Jenkins 构建中订阅电子邮件通知?
- c# - 删除其他进程使用的文件
- java - 在 JFrame 中与棋子的交互
- apache-kafka - 寻找云功能替代品——Kafka
- awk - AWK FS 仅使用第一个实例并忽略其余实例
- python - 如果在本地导入中引用了一个类,Python `exec()` 将无法加载该类
- android - 在 Fragment/Activity 中持有 ViewDataBinding 的引用导致内存泄漏
- python - 有没有办法跳过 AttributeError: 'NoneType' object has no attribute 'parent'