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