【问题标题】:matplotlib axis tick labels covered by scatterplot (using spines)散点图覆盖的 matplotlib 轴刻度标签(使用刺)
【发布时间】:2015-09-18 12:59:34
【问题描述】:

我想让我的轴在散点图中穿过原点 (0,0),这就是为什么我在下面的示例中设置了刺位置。问题是我在散点图上的实际数据点覆盖了轴刻度标签,因此看不到它们。

如何让 matplotlib 用我的轴刻度标签“覆盖”数据点,以便可以看到它们?

import numpy as np
from matplotlib import pyplot as plt
plt.style.use('ggplot')


x = np.random.randn(5000)
y = np.random.randn(5000)

f, ax = plt.subplots()
plt.scatter(x,y)
ax.spines['left'].set_position('zero')
ax.spines['left'].set_color('black')
ax.spines['right'].set_color('none')
ax.spines['bottom'].set_position('zero')
ax.spines['bottom'].set_color('black')
ax.spines['top'].set_color('none')

plt.show()

【问题讨论】:

    标签: python matplotlib plot scatter


    【解决方案1】:

    您可以通过将 scatter 的 zorder 设置为 <0 来解决此问题

    例如:

    plt.scatter(x,y,zorder=-5)
    

    不幸的是,即使这样,它们在ggplot 样式中也不是很明显:

    如果你改变散点图和标签的颜色,你可以更清楚地看到(注意,标签在下图中的散点图上方明显),所以你可能需要尝试找到你喜欢的东西

    ax.tick_params(labelcolor='r')
    plt.scatter(x,y,color='w',zorder=-5)
    

    【讨论】:

    • ax.tick_params(labelcolor='r', zorder=100) 不起作用有意义吗?
    • @RutgerKassies 见here,这似乎是一个已知问题/错误/某事?
    【解决方案2】:

    另一种选择是添加

    ax.set_axisbelow(False)
    

    在你做plt.scatter()之后,输出是

    【讨论】:

      猜你喜欢
      • 2021-06-01
      • 2017-08-24
      • 1970-01-01
      • 2012-12-19
      • 2015-10-14
      • 2012-03-14
      • 2019-08-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多