Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在单独的图形上绘制数据框列?_Python_Pandas_Matplotlib - Fatal编程技术网

Python 如何在单独的图形上绘制数据框列?

Python 如何在单独的图形上绘制数据框列?,python,pandas,matplotlib,Python,Pandas,Matplotlib,我尝试使用Pandas dataframe,它有57列,并将它们绘制在每个图形有3列的条形图上。原因是数据和列长度的变化使得在许多图中很难看到数据。每个子图打印多列不是一个选项,因此每个图必须在输出大小时可见。根据这些数据,我发现每个数字有3个子图看起来最好。下面是我绘制数据帧的脚本: fig, ax = plt.subplots(nrows=len(df.columns), ncols=1, sharex=True, sharey=True) yscale = np.ceil(df.abs()

我尝试使用Pandas dataframe,它有57列,并将它们绘制在每个图形有3列的条形图上。原因是数据和列长度的变化使得在许多图中很难看到数据。每个子图打印多列不是一个选项,因此每个图必须在输出大小时可见。根据这些数据,我发现每个数字有3个子图看起来最好。下面是我绘制数据帧的脚本:

fig, ax = plt.subplots(nrows=len(df.columns), ncols=1, sharex=True, sharey=True)
yscale = np.ceil(df.abs().select_dtypes(include=[np.number]).values.max())
plt.yscale('symlog')
plt.ylim(-yscale, yscale)
t = list(df.columns.values)
n = 0
for i in df:
    df['positive'] = df[i] > 0
    df[i].plot.bar(ax=ax[n], rot=0, width=1.0, legend=False, position=0, color=df.positive.map({True: 'g', False: 'r'}))
    ax[n].set_title(t[n])
    ax[n].axhline(y=0, linewidth=1, color='k')
    ax[n].tick_params(which='major', axis='x', length=2)
    ax[n].tick_params(which='major', axis='y', length=6)
    n += 1
plt.tight_layout()
plt.show()

将数据帧拆分为几个较小的数据帧是否最简单?我唯一关心的是,对于不同的样本,每个数据帧将有不同数量的列。

这似乎是您想要的

for i in range(19):
    df.iloc[:,i*3:i*3+3].plot.bar(subplots=True,
                                  legend=None)
它给出了19个类似的图:


只是澄清一下,您想要19个子图,每个子图在条形图中有3列?不,我想要绘制19个单独的图形,每个图形有3个子图。列中的值将绘制为条形图上的值。因此,每列都有自己的条形图。我不知道除了每个图形有多个子图外,是否还有一种方法可以绘制多个图形。谢谢,这很有效!真不敢相信我居然没想到。