python - 如何使用 matplotlib 绘制复杂的条形图——具有多行条形的多个子图?
问题描述
我有一个示例数据框,如下所示:
import pandas as pd
df = pd.DataFrame(np.random.randint(
0, 10, size=(1000, 11)), columns=list('ABCDEFGHIJK'))
所需但未抛光的输出如下所示:
数据框中每一列的数据被绘制为带有五行条形的子图。
我更喜欢使用 matplotlib,因为我可以相对轻松地使图表看起来不错。但它的性能似乎相当缓慢。
解决方案
您可以使用bottom
参数 ofbar
来偏移各个行。
以下未优化的示例演示了这种方法:
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
df = pd.DataFrame(np.random.randint(0, 10, size=(1000, 11)), columns=list('ABCDEFGHIJK'))
fig = plt.figure()
for i,c in enumerate(df.columns):
ax = fig.add_subplot(3, 4, i+1)
for x,h,b in zip((df.index.to_numpy() % 200).reshape(-1, 200), df[c].to_numpy().reshape(-1, 200), (df.index.to_numpy() // 200 * 10).reshape(-1, 200)):
ax.set_title(c)
ax.bar(x, h, bottom=b, color='k' )
推荐阅读
- excel - 是否可以将 DAX 公式导入 Excel 的数据模型?
- apache-spark - 结构化流数据框为空
- twitter-bootstrap - 如何在引导程序的右侧添加 EMPTY col
- mysql - 你如何确定 PHP 中两个常量值之间的百分比?
- node.js - 使用 stripe + netlify 时如何将订单确认数据反映到前端?
- python - 将长字符串写入文件
- trim - 在多路分解、适配器移除、修剪和过滤之后,有多少 GBS 衍生读数通过过滤器?
- python - 你如何在 UnitTest 中测试列表?
- docker-compose - 无法在 docker 中运行 .net 核心应用 Azure Durable Functions v3
- javascript - 为什么我只返回一个过滤的对象而不是全部?