情节模糊了matplotlib中的其他情节

时间:2016-10-04 14:55:30

标签: python matplotlib plot

我在同一张图中有一个散点图和一个线图。我用

创建它
fig, ax = plt.subplots()
scat = plt.scatter([0], [0], color = 'r')
line, = ax.plot(pos_data.x, pos_data.y, color = "k")

线图目前正在模糊散点图,但我想反过来(即它看起来应该首先渲染线图,并在那个顶部绘制散点图)。

这可能吗?

2 个答案:

答案 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')