默认的Seaborn barplot几乎对我有用,尽管有一些细节。如下图所示:
请查看每个栏旁边和右侧的“文本”注释。我有几点需要改进:
由于某些原因,最后一个栏没有显示注释。我不知道怎么解决这个问题。
条的边缘与顶部和底部X轴之间没有空间。我想在里面放点地方。
有没有可以增加横杆的宽度?
我还想增加“最高”栏和右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}$然后,我将添加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')
因此,注释文本由于偏移量而被隐藏。利用这些知识,我可以调整我的原始脚本以在最后一个栏中显示带注释的文本。但这就引出了另外一个问题。在事先不知道条数的情况下,如何调整代码以保持一致?在
你的答案2很好。谢谢您。在
因为我在用,所以3号不适合我sns.barplot公司. Python不喜欢barplot调用中的width参数。在
4号很好。谢谢您。在
谢谢你对我问题的帮助。在
关于第一点,我们需要一个minimal, complete, verifiable example。
为了在边缘条和轴之间留出空间,可以调整轴的限制。
ax.set_ylim(-1,N)
,其中N
是条数。条的宽度可以用
width
参数plt.bar
设置。plt.bar(..., width=1)
;或者,对于水平条,使用height
参数。seaborn条形图不允许设置宽度或高度。{{7}与cd2}的最大长度相同。
相关问题 更多 >
编程相关推荐