Matplotlib 打印顺序/分层打印

Matplotlib 打印顺序/分层打印,matplotlib,julia,scatter,Matplotlib,Julia,Scatter,我有一个子图,它绘制了一条线(x,y)和一个特定的点(xx,yy)。我想放大(xx,yy),所以我用散点绘制了它。但是,即使我在原始绘图之后进行排序,新点仍然显示在原始线的后面。我怎样才能解决这个问题?我在下面 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")

我有一个子图,它绘制了一条线(x,y)和一个特定的点(xx,yy)。我想放大(xx,yy),所以我用
散点
绘制了它。但是,即使我在原始绘图之后进行排序,新点仍然显示在原始线的后面。我怎样才能解决这个问题?我在下面

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")

您可以使用参数
zorder
更改显示在彼此顶部的绘图。所示的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()
其中:


我可以重现这个问题。作为旁注,如果分析中只有一个轴和图形,则无需执行
ax[:plot](x,y)
。只需执行
plot(x,y)
即可将绘图添加到当前轴,直到再次调用
subplot()
。至少这是我在matplotlib中记得的。我在Julia也很成功,谢谢!顺便说一句,我已经把我的编辑添加到你上面的答案的代码中。