Matplotlib x轴过度拥挤标签渲染

Matplotlib x-axis overcrowded label rendering

我想简单地绘制一个 numpy 数组,但我遇到了麻烦,尤其是在 x 轴上获取刻度和标签的数量时。

我正在处理一个名为 percents 的数组,如下所示:

percents:

-74    0.000041
-61    0.000041
-60    0.000041
-59    0.000041
-57    0.000041
...
 71    0.000041
 73    0.000041
 75    0.000041
 77    0.000041
 80    0.000081

索引的范围从 -74 到 80,值本身从接近 0 到最高 70(出现在接近零的索引周围)。

当我使用 Seaborn barplots 简单地绘制这个数组时,我在 x 轴上遇到了噩梦。

categ = percents.index.tolist()
vals = percents.values.tolist()

fig = plt.figure(figsize = (8,6))
ax = fig.add_subplot(111)

sns.barplot(categ, vals)

想也许使用 xticks 来解决这个问题,我尝试添加这段代码,实际上这使它变得更糟:

plt.xticks(np.arange(-80,80,10), np.arange(-80,80,10))

我该如何解决这个问题?

Seaborn 的坐标轴似乎有点不同。如果您改为调用 plt.bar() ,则您的解决方案有效。它看起来不是基于数据范围(即 -80 到 80),而是从 0 到 160。 这对我有用(使用 Seaborn 图):

plt.xticks(np.arange(0, 160, 10), np.arange(-80, 80, 10))