Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.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 Pandas将具有相同x轴的多个子批次组合成一个条形图_Python_Pandas_Matplotlib - Fatal编程技术网

Python Pandas将具有相同x轴的多个子批次组合成一个条形图

Python Pandas将具有相同x轴的多个子批次组合成一个条形图,python,pandas,matplotlib,Python,Pandas,Matplotlib,我正在循环浏览一个包含6个col_名称的列表。我一次取3列循环,这样以后每次迭代可以打印3个子批次。 我有两个具有相同列名的数据帧,因此除了每个列名的直方图外,它们看起来是相同的 我想在同一个子地块上绘制两个数据帧的相似列名。现在,我正在两个独立的子图上绘制它们的直方图 目前,对于df_图中的“A”、“B”、“C”列: 对于df_图2中的“A”、“B”和“C”列: 我只需要3个图表,我可以将类似的列名组合到同一个图表中,这样在同一个图表中就有蓝色和黄色的条带 在下面添加df_plot2不起作

我正在循环浏览一个包含6个col_名称的列表。我一次取3列循环,这样以后每次迭代可以打印3个子批次。 我有两个具有相同列名的数据帧,因此除了每个列名的直方图外,它们看起来是相同的

我想在同一个子地块上绘制两个数据帧的相似列名。现在,我正在两个独立的子图上绘制它们的直方图

目前,对于df_图中的“A”、“B”、“C”列:

对于df_图2中的“A”、“B”和“C”列:

我只需要3个图表,我可以将类似的列名组合到同一个图表中,这样在同一个图表中就有蓝色和黄色的条带

在下面添加
df_plot2
不起作用。我想我没有正确地定义我的第二个
axs
,但我不知道该怎么做

col_name_list = ['A','B','C','D','E','F']
chunk_list = [col_name_list[i:i + 3] for i in xrange(0, len(col_name_list), 3)]
    for k,g in enumerate(chunk_list):
        df_plot = df[g]
        df_plot2 = df[g][df[g] != 0]

        fig, axs = plt.subplots(1,len(g),figsize = (50,20))
        axs = axs.ravel()

        for j,x in enumerate(g):
            df_plot[x].value_counts(normalize=True).head().plot(kind='bar',ax=axs[j], position=0, title = x, fontsize = 30)
            # adding this doesnt work.
            df_plot2[x].value_counts(normalize=True).head().plot(kind='bar',ax=axs[j], position=1, fontsize = 30)
                axs[j].title.set_size(40)
        fig.tight_layout()   

解决方案是在相同的
ax
上绘图:

将axs[j]更改为axs

for k,g in enumerate(chunk_list):
    df_plot = df[g]
    df_plot2 = df[g][df[g] != 0]

    fig, axs = plt.subplots(1,len(g),figsize = (50,20))
    axs = axs.ravel()

    for j,x in enumerate(g):
        df_plot[x].value_counts(normalize=True).head().plot(kind='bar',ax=axs, position=0, title = x, fontsize = 30)
        # adding this doesnt work.
        df_plot2[x].value_counts(normalize=True).head().plot(kind='bar',ax=axs, position=1, fontsize = 30)
            axs[j].title.set_size(40)
    fig.tight_layout() 
然后只需调用
plt.plot()

示例:这将在同一子地块上绘制x和y:

编辑:

现在有一个挤压关键字参数。这样可以确保结果始终是2D numpy数组

fig, ax2d = subplots(2, 2, squeeze=False)
如果需要,将其转换为一维阵列很容易:

axli = ax1d.flatten()

我得到这个错误:
'numpy.ndarray'对象没有属性'get\u figure'
axli = ax1d.flatten()