Seaborn单杠p

2024-09-28 01:23:30 发布

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

默认的Seaborn barplot几乎对我有用,尽管有一些细节。如下图所示:

Seaborn Horizontal Bar Plot

请查看每个栏旁边和右侧的“文本”注释。我有几点需要改进:

  1. 由于某些原因,最后一个栏没有显示注释。我不知道怎么解决这个问题。

  2. 条的边缘与顶部和底部X轴之间没有空间。我想在里面放点地方。

  3. 有没有可以增加横杆的宽度?

  4. 我还想增加“最高”栏和右Y轴之间的距离,因为我计划添加文本,而不仅仅是与X轴值对应的厚度值。如果你看一下对应于HRA的Red0类别的条形图,大概是105.65(42.54%)。这将明显地推动它“越过”右Y轴的边缘。有没有办法在它的峰值和最大X轴值之间增加一些距离?例如,我可以很容易地计算出最大值。

如果我能处理好这些细节,那就完美了!在

以下是我与上述问题相关的代码片段:

sns.set_style('whitegrid')
sns.set(font_scale=0.8)
thickness = []
for hra_color in df_hra_colors['hra']:
    thickness.append(grouped.get_group(hra_color).count()['hra'] * mult)
df_hra_colors['thickness'] = thickness
ax = sns.barplot(x='thickness', y='hra', data=df_hra_colors,
                 palette=df_hra_colors['hex'].tolist())
ax.set_xlabel("Thickness")
ax.set_ylabel("HRA")
ax.set_title("What an Awesome Plot!")
for p in ax.patches:
    ax.annotate("%.2f" % p.get_width(), (p.get_x() + p.get_width(), p.get_y() + 1.2),
                xytext=(5, 10), textcoords='offset points')
plt.show()

以下是根据要求提供的最小、完整的可验证示例:

^{pr2}$

它看起来是这样的: enter image description here

然后,我将添加1到p.get_y()的行改为添加0.5,如下所示:

for i, p in enumerate(ax.patches):
    ax.annotate("%.2f (%.2f)%%" % (p.get_width(), thickness[i] / thick_sum * 100.0),
                (p.get_x() + p.get_width(), p.get_y() + 0.5),
                xytext=(5, 10), textcoords='offset points')

enter image description here 我得到的是:

因此,注释文本由于偏移量而被隐藏。利用这些知识,我可以调整我的原始脚本以在最后一个栏中显示带注释的文本。但这就引出了另外一个问题。在事先不知道条数的情况下,如何调整代码以保持一致?在

你的答案2很好。谢谢您。在

因为我在用,所以3号不适合我sns.barplot公司. Python不喜欢barplot调用中的width参数。在

4号很好。谢谢您。在

谢谢你对我问题的帮助。在


Tags: in文本dfforgetaxwidth细节
1条回答
网友
1楼 · 发布于 2024-09-28 01:23:30
  1. 关于第一点,我们需要一个minimal, complete, verifiable example

  2. 为了在边缘条和轴之间留出空间,可以调整轴的限制。ax.set_ylim(-1,N),其中N是条数。

  3. 条的宽度可以用width参数plt.bar设置。 plt.bar(..., width=1);或者,对于水平条,使用height参数。seaborn条形图不允许设置宽度或高度。

  4. {{7}与cd2}的最大长度相同。

相关问题 更多 >

    热门问题