Python sns.catplot,闭合钢筋之间的间隙
这是我运行此代码时得到的绘图 有没有什么方法可以缩小这两个杆之间的间隙,但不能完全接触彼此Python sns.catplot,闭合钢筋之间的间隙,python,matplotlib,seaborn,legend,Python,Matplotlib,Seaborn,Legend,这是我运行此代码时得到的绘图 有没有什么方法可以缩小这两个杆之间的间隙,但不能完全接触彼此 sns.catplot(x = "case", kind = "count", data = df, alpha=0.8, palette = my_pal, hue="class") plt.ylabel("Count", size=12) plt.tight_layout() 问题似乎在于“case”和“class”列包含相同的信息,只是名称不同而已。在任何情况下,case为1,class为负值,反
sns.catplot(x = "case", kind = "count", data = df, alpha=0.8, palette = my_pal, hue="class")
plt.ylabel("Count", size=12)
plt.tight_layout()
问题似乎在于“case”和“class”列包含相同的信息,只是名称不同而已。在任何情况下,case为1,class为负值,反之亦然 如果您同时使用
x
和hue
,seaborn将为4列:
- 案例1,“否定”类
- 案例1,“绿色”类
- 案例2,“否定”类
- 案例2,“绿色”类
导入seaborn作为sns
将matplotlib.pyplot作为plt导入
将numpy作为np导入
作为pd进口熊猫
df=pd.DataFrame({'case':np.concatenate([np.repeat([1],3700),np.repeat([2],1200)]),
“类”:np.concatenate([np.repeat(['Negative'],3700),np.repeat(['green'],1200]))
g=sns.catplot(x=“case”,
hue='class',
调色板为蓝色,
数据=df,
kind=“count”)
plt.show()
在这种情况下,更合适的绘图是省略hue
,直接使用类作为x
:
g=sns.catplot(x='class',
调色板为蓝色,
数据=df,
种类(计数)
plt.show()
PS:为了得到与第一个图中相似的图例,可以使用xticks和xlabel。请注意,seaborncatplot
旨在创建子地块的完整网格g.axes[0][0]
获取第一个子批次的ax
plt.legend(g.axes[0][0].patches,
[l.get_text() for l in g.axes[0][0].get_xticklabels()],
title= g.axes[0][0].get_xlabel())
g.axes[0][0].set_xticks([]) # remove the xticks (now in legend)
g.axes[0][0].set_xlabel('') # remove the xlabel (now title of legend)
条之间的间隙足以容纳两个附加条,每个色调值对应一个。对于x=0和色调为“绿色”,计数(y)为0。同样,对于x=1和色调为“负”,计数为0。如果这两个值不为零,您是否希望空间按原样显示?@BalooRM是的,如果这两个值不为零,我想删除为这些情况保存的空间。@JohanC是的,我想这可以归结为数据可视化的美学,但是改变相对于x轴上标签的位置可能会令人困惑。这些零值总是零吗?如果您的目的是用不同的颜色标记绿色组和负片组,您可以查看堆叠柱状图。非常感谢您,但是您知道如何在第二个绘图上添加与第一个绘图相同的图例吗?我添加了一种添加图例的方法(并删除xticks和xlabel)