在一个图形中绘制两个海上CATPLOT

2024-06-09 02:30:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将以下数据绘制为水平堆叠条形图。我想展示第1周和第2周,在顶部有最大的酒吧大小(“总数”),然后向下下降。实际数据是100行,所以我使用了带有kind='bar'的Seaborn CATPlot。我不确定是否可以堆叠(如Matplotlib),因此我选择创建两个图表,并将“第1周”覆盖在“总计”之上,以获得相同的堆叠效果

然而,当我运行下面的程序时,我得到了两个单独的图,图表标题和轴是一对一的图形。我是否能够将其组合成一个堆叠的水平图表。如果是比较容易的方法,那么感谢您的帮助

^{tb1}$

(从随机名称生成器创建的名称)

代码:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline

data = pd.read_csv('Sample1.csv', delimiter="\t", error_bad_lines=False)

data_rank = data.sort_values(["Attending", "Company"], ascending=[False,True])

sns.set(style="ticks")

g = sns.catplot(y='Company', x='Total', data=data_rank, kind='bar', height=4, color='red', aspect=0.8, ax=ax)

ax2 =ax.twinx()
g = sns.catplot(y='Company', x='Week 1', data=data_rank, kind='bar', height=4, color='blue', aspect=0.8, ax=ax2)

for ax in g.axes[0]:
    ax.xaxis.tick_top()
    ax.xaxis.set_label_position('top')
    ax.spines['bottom'].set_visible(True)
    ax.spines['top'].set_visible(True)

plt.title("Company by week ", size=7)

catplot 1

catplot 2


Tags: 数据importtruedatatopas图表bar
1条回答
网友
1楼 · 发布于 2024-06-09 02:30:45

我认为这样做是可行的

g = sns.barplot(y='Company', x='Total', data=data_rank, color='red', label='Total')
g = sns.barplot(y='Company', x='Week1', data=data_rank, color='blue', label='Week 1')
plt.title("Company by week ", size=12)
plt.xlabel('Frequency')
plt.legend()
plt.show()

enter image description here

相关问题 更多 >