散点图覆盖的 matplotlib 轴刻度标签(使用脊柱)
matplotlib axis tick labels covered by scatterplot (using spines)
我想让我的轴通过散点图中的原点 (0,0),这就是我在下面的示例中设置书脊位置的原因。问题是我在散点图上的实际数据点覆盖了轴刻度标签,因此看不到它们。
如何让 matplotlib 'overwrite' 带有我的轴刻度标签的数据点,以便可以看到它们?
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()
您可以通过将散点图的 zorder
设置为 <0
来解决此问题
例如:
plt.scatter(x,y,zorder=-5)
不幸的是,即便如此,它们在 ggplot
风格中也不是很明显:
如果更改散点图和标签的颜色(请注意,下图中标签明显位于散点图上方),您可以更清楚地看到这一点,因此您可能需要进行实验才能找到适合您的内容喜欢
ax.tick_params(labelcolor='r')
plt.scatter(x,y,color='w',zorder=-5)
另一种选择是添加
ax.set_axisbelow(False)
执行 plt.scatter()
后,输出为
我想让我的轴通过散点图中的原点 (0,0),这就是我在下面的示例中设置书脊位置的原因。问题是我在散点图上的实际数据点覆盖了轴刻度标签,因此看不到它们。
如何让 matplotlib 'overwrite' 带有我的轴刻度标签的数据点,以便可以看到它们?
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()
您可以通过将散点图的 zorder
设置为 <0
例如:
plt.scatter(x,y,zorder=-5)
不幸的是,即便如此,它们在 ggplot
风格中也不是很明显:
如果更改散点图和标签的颜色(请注意,下图中标签明显位于散点图上方),您可以更清楚地看到这一点,因此您可能需要进行实验才能找到适合您的内容喜欢
ax.tick_params(labelcolor='r')
plt.scatter(x,y,color='w',zorder=-5)
另一种选择是添加
ax.set_axisbelow(False)
执行 plt.scatter()
后,输出为