如何按列绘制数据框的多个字典?蟒蛇熊猫

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_arrayax 设置在正确的列和行中?

数字必须是:

|-----------|   |-----------|
|           |   |           |
|    dict1  |   |    dict2  |
|    df1    |   |    df1    |
|-----------|   |-----------|

|-----------|         .
|           |         .
|    dict1  |         .
|    df2    |
|-----------|



|-----------|   |-----------|
|           |   |           |
|    dict1  |   |    dict2  |
|    df30   |   |    df30   |
|-----------|   |-----------|

```

【问题讨论】:

尝试在 seaborn 库中查找 facet_grid 【参考方案1】:

当您使用ncols>1nrows>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 个数据帧?

以上是关于如何按列绘制数据框的多个字典?蟒蛇熊猫的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Seaborn 并排绘制熊猫数据框的多组列

如何绘制熊猫数据框的多列

按行分组时如何合并熊猫数据框的字典

如何使用点绘制熊猫数据框的两列

改组/排列熊猫中的DataFrame

如何在熊猫数据框的行之间应用多个条件创建目标数据框