【问题标题】:sns.catplot, closing the gap between barssns.catplot,缩小条形之间的差距
【发布时间】:2020-08-05 11:15:07
【问题描述】:

这是我运行这段代码时得到的情节 有什么办法可以减少这两个条之间的间隙但不完全相互接触??

sns.catplot(x = "case", kind = "count", data = df, alpha=0.8, palette = my_pal, hue="class")
plt.ylabel("Count", size=12)
plt.tight_layout()

【问题讨论】:

  • 条之间的间隙足以容纳两个额外的条,一个用于每个色调值。对于 x=0 和 hue = 'green',计数 (y) 为 0。同样,对于 x=1 和 hue = 'Negative',计数为 0。如果这两个值不为零,您是否希望空间按原样显示?
  • @BalooRM 是的,如果两个值不为零,我想删除为这些情况保存的空格。
  • @JohanC 是的,我是
  • 这可能归结为数据可视化的美学,但改变 x 轴上相对于标签的位置可能会造成混淆。那些零值会永远为零吗?如果您的意图是用不同颜色标记绿色组和负组,则可以查看堆叠柱形图。
  • 这是一个堆叠的条形图示例。 randyzwitch.com/creating-stacked-bar-chart-seaborn

标签: python matplotlib seaborn legend


【解决方案1】:

问题似乎是“case”和“class”列包含相同的信息,只是名称不同。凡是 case 为 1 的地方,class 都是 Negative,反之亦然。

如果您同时使用xhue,seaborn 将放置 4 列:

  • 案例 1,“负”类
  • 案例 1,“绿色”类
  • 案例 2,“负”类
  • 案例 2,“绿色”类

四列中的两列保持空白:

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

df = pd.DataFrame({'case': np.concatenate([np.repeat([1], 3700), np.repeat([2], 1200)]),
                   'class': np.concatenate([np.repeat(['Negative'], 3700), np.repeat(['green'], 1200)])})

g = sns.catplot(x="case",
                hue='class',
                palette='Blues',
                data=df,
                kind="count")
plt.show()

在这种情况下,更合适的情节是省略 hue 并直接将类用作 x

g = sns.catplot(x='class',
                palette='Blues',
                data=df,
                kind='count')
plt.show()

PS:要获得与第一个图相似的图例,可以使用 xticks 和 xlabel。请注意,seaborn catplot 旨在创建完整的子图网格。 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)

【讨论】:

  • 非常感谢,但是您知道如何在第二个图上添加与第一个图相同的图例吗??
  • 我添加了一种添加图例的方法(并删除了 xticks 和 xlabel)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-30
  • 2012-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多