如何在Seaborn distplot中将xticks标记在bin的中心?

4
我想使用seaborn绘制distplot,并将xticks放在箱的中点。 我正在使用以下代码:
sns.distplot(df['MILEAGE'], kde=False, bins=20)

This is what my displot currently looks like

2个回答

4
要获取条形图的中点,您可以提取生成的矩形补丁并将其宽度的一半加到其x位置。 将这些中点设置为xticks将标记条形图。
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

ax = sns.distplot(np.random.randn(1000).cumsum(), kde=False, bins=20)
mids = [rect.get_x() + rect.get_width() / 2 for rect in ax.patches]
ax.set_xticks(mids)
plt.show()

example plot

如果刻度标签重叠太多,您可以旋转它们和/或调整其字体大小:
ax.tick_params(axis='x', rotation=90, labelsize=8)

如果您需要的是 bin 的边界而不是中心点:
edges = [rect.get_x() for rect in ax.patches] + [ax.patches[-1].get_x() + ax.patches[-1].get_width()]

0
在您的特定情况下,您可以获取图形的刻度,并将25添加到它们中间以将它们移动到条形的中心。您也可以完全重置它们。
ticks = plt.gca().get_xticks()
ticks += 25
plt.xticks(ticks)

或者,如果您使用matplotlib绘制直方图,您可以直接获取bins:

x = np.random.rand(100)

# Matplotlib only
counts, bins, patches = plt.hist(x)
plt.xticks(bins + 25)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接