我遇到的问题是我的x轴过于拥挤,并且标签编号似乎与图表中的实际位置不一致,而是与X数据值相对应。我的数据被格式化为像这样的pandas DataFrame(还有更多,但这是代表性的):
Y X1
2 3.81 51.000
12 1.95 2.000
13 2.97 20.600
18 3.66 23.472
23 4.45 40.100
27 6.57 90.800
28 6.28 77.500
35 2.44 5.000
43 1.55 4.700
50 2.80 17.800
53 3.40 61.200
使用以下方法,我的情节如下所示:
g = sns.regplot(x=X1, y=Y, marker='+', ci=None)
我尝试过使用
g = sns.regplot(x=X1, y=Y, marker='+', ci=None)
num_ticks = 10
g.locator_params(axis='x', nbins=num_ticks)
如您所见,它允许我设置刻度数,但值标签完全错误。它们似乎对应于数据点的X值的有序列表,这对我来说没有意义,为什么seaborn会选择它而不是将刻度解释为刻度位置的实际X值。
通过扩展添加以下行,我能够更接近一点,但即使是圆形功能,即使是标签似乎也被搞砸了一些地方:
g.set_xticklabels(np.arange(x_min, x_max, round((x_max-x_min)/num_ticks, 1)))
我意识到此时我可以手动转换为字符串并传递一系列字符串标签,但这似乎是一个垃圾解决方案。有没有更好的方法来解决这个问题?事实上,我花了一个小时或更长时间才正确地尝试格式化我的轴感觉就像我必须错过一些关键和简单的东西。
作为第二个问题,我不相信即使我在这里解决了舍入问题,如果我对输出感到满意,因为当刻度是奇数间隔而不是某些东西时,很难理解图形更熟悉(例如5,10,20等)。另一个通用解决方案会是什么样的,这样我才能轻松地将轴格式化为这些数字,并且数据/刻度数会自动调整到我正在寻找的间隔?提前感谢您的帮助。