如何按列绘制数据框的多个字典?蟒蛇熊猫
Posted
技术标签:
【中文标题】如何按列绘制数据框的多个字典?蟒蛇熊猫【英文标题】:How plot multiple dictionaries of dataframes by columns ? Python Pandas 【发布时间】:2022-01-22 08:58:19 【问题描述】:我想用 subplot 在同一个图中绘制多个数据框字典。我可以在同一个图上绘制一个包含多个数据框的字典,但我不能添加另一个。
keys = dfs.keys()
cols = 1
rows = 30
nb_figs = cols*rows
fig, ax = plt.subplots(nrows=rows, ncols=cols, figsize=(5, 150))
ax_array = ax.ravel()
# iterate through the dataframe dictionary keys and use enumerate
keys = sorted(dfs)
for idx, key in enumerate(keys[::150]):
if idx >= nb_figs :
break
else:
ax = dfs[key].plot(x='Timestamp', y='Value', ax= ax_array[idx])
ax.xaxis.set_major_formatter(mdates.DateFormatter('%d/%m/%y %H:%M:%S'))
fig.tight_layout()
plt.show()
我想添加与我的第二个数据帧字典相对应的第二列,但我是否必须为行和列创建一个 for 循环才能获得维度 (36,2) 的数字??
如何将ax = ax_array
或ax
设置在正确的列和行中?
数字必须是:
|-----------| |-----------|
| | | |
| dict1 | | dict2 |
| df1 | | df1 |
|-----------| |-----------|
|-----------| .
| | .
| dict1 | .
| df2 |
|-----------|
|-----------| |-----------|
| | | |
| dict1 | | dict2 |
| df30 | | df30 |
|-----------| |-----------|
```
【问题讨论】:
尝试在 seaborn 库中查找 facet_grid 【参考方案1】:当您使用ncols>1
和nrows>1
创建subplots
时,您将获得一个二维轴数组。所以是这样的:
cols = 2
rows = 30
nb_figs = cols*rows
fig, axes = plt.subplots(nrows=rows, ncols=cols, figsize=(5, 150))
for col, dfs in enumerate([dict1, dict2]):
# use `.items()` to get pair of `key, value` so you don't need `dfs[key]`
# or just `.values()` if you only need `data`
for ax, (key, data) in zip(axes[:, col], dfs.items()):
# plot data to ax
data.plot(x='Timestamp', y='Value', ax=ax)
ax.xaxis.set_major_formatter(mdates.DateFormatter('%d/%m/%y %H:%M:%S'))
fig.tight_layout()
plt.show()
【讨论】:
是的,但是对于每一列我想设置不同的轴和标题,还有颜色。不知道你的方法能不能实现? 是的,为什么不呢?在循环内执行所有ax.set_tittle
。
AttributeError: 'AxesSubplot' 对象没有属性 'set_tittle'
@ThonyNadhir 这是set_title
,抱歉打错了。
我不明白,每列只有 30 行/轴,为什么要关心 150 个数据帧?以上是关于如何按列绘制数据框的多个字典?蟒蛇熊猫的主要内容,如果未能解决你的问题,请参考以下文章