我在同一张图中有一个散点图和一个线图。我用
创建它fig, ax = plt.subplots()
scat = plt.scatter([0], [0], color = 'r')
line, = ax.plot(pos_data.x, pos_data.y, color = "k")
线图目前正在模糊散点图,但我想反过来(即它看起来应该首先渲染线图,并在那个顶部绘制散点图)。
这可能吗?
答案 0 :(得分:2)
尝试更改Z顺序
plt.plot(x, y, 'r', zorder=1, lw=3)
plt.scatter(x, y, s=120, zorder=2)
轴的默认绘制顺序是补丁,线条,文本。此顺序由zorder属性确定。以下默认值 已设置
Artist Z-order Patch / PatchCollection 1 Line2D / LineCollection 2 Text 3
您可以通过设置zorder来更改单个艺术家的顺序。 任何单独的plot()调用都可以设置zorder的值 特别项目。
答案 1 :(得分:1)
来自here的重复问题。
您需要为每个图表设置zorder
,较大的值保持最佳状态:
import matplotlib.pyplot as plt
class Data:
pass
pos_data = Data()
pos_data.x = [1,2,3,4,5]
pos_data.y = [7,2,5,3,4]
fig = plt.figure()
ax = fig.add_subplot(111)
scat = ax.scatter(pos_data.x, pos_data.y, color = 'r', zorder=2)
line = ax.plot(pos_data.x, pos_data.y, color = "k", zorder=1)
您还可以通过在地块上设置标记及其颜色来实现相同的目标(有关更多选项,请参阅matplotlib.plot
doc):
...
line_with_markers = ax.plot(pos_data.x, pos_data.y, color = "k",
marker='o', markerfacecolor='red')