我有一个绘制线(x,y)和特定点(xx,yy)的子图。我想要高亮(xx,yy),所以我用scatter
绘制了它。但是,即使我在原始绘图之后订购它,新点仍会显示在原始行后面。我怎样才能解决这个问题? MWE如下。
x = 1:10
y = 1:10
xx = 5
yy = 5
fig, ax = subplots()
ax[:plot](x,y)
ax[:scatter](xx,yy, color="red", label="h_star", s=100)
legend()
xlabel("x")
ylabel("y")
title("test")
grid("on")
答案 0 :(得分:2)
您可以使用参数zorder
更改哪些图表在彼此的顶部显示。显示的here的matplotlib示例给出了简要说明:
轴的默认绘制顺序是补丁,线条,文本。这个 订单由zorder属性决定。以下默认值 已设置
Artist Z-order Patch / PatchCollection 1 Line2D / LineCollection 2 Text 3
您可以通过设置zorder来更改单个艺术家的顺序。 任何单独的plot()调用都可以设置zorder的值 特别项目。
基于问题代码的完整示例,使用 python 如下所示:
import matplotlib.pyplot as plt
x = range(1,10)
y = range(1,10)
xx = 5
yy = 5
fig, ax = plt.subplots()
ax.plot(x,y)
# could set zorder very high, say 10, to "make sure" it will be on the top
ax.scatter(xx,yy, color="red", label="h_star", s=100, zorder=3)
plt.legend()
plt.xlabel("x")
plt.ylabel("y")
plt.title("test")
plt.grid("on")
plt.show()
给出了: