【问题标题】:Matplotlib x-axis overcrowded label renderingMatplotlib x 轴过度拥挤的标签渲染
【发布时间】:2015-08-01 20:00:38
【问题描述】:

我试图简单地绘制一个 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 条形图绘制这个数组时,我在 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))

我该如何解决这个问题?

【问题讨论】:

    标签: python arrays numpy matplotlib seaborn


    【解决方案1】:

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

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

    【讨论】:

    • 我也会在这里使用plt.bar
    • 将主要定位器重置为matplotlib.org/api/…matplotlib.org/api/… 可能是仅次于使用ax.bar 的第二好的解决方案。在后台plt.xticks 将定位器和格式化程序都设置为两者的固定变体,这对于交互性来说不太好。将刻度从带有数字标签的数据空间单元中分离出来也让我有点害怕。
    猜你喜欢
    • 1970-01-01
    • 2019-01-20
    • 1970-01-01
    • 2021-06-24
    • 1970-01-01
    • 1970-01-01
    • 2020-09-20
    • 2018-05-26
    • 2012-03-14
    相关资源
    最近更新 更多