【问题标题】:How to plot scatterplot on top of solid line如何在实线上方绘制散点图
【发布时间】:2020-09-29 18:39:56
【问题描述】:

我有两对 x 和 y 值,一对绘制为线图(蓝色),另一对绘制为散点图(红色)。这些点重叠,并且蓝色实线绘制在红点的顶部,导致只有红点的非重叠部分可见。我希望这是另一种方式:我希望红点都在蓝线的 顶部,这样红点就完全可见,蓝线在这些点处被遮挡的重叠。有关如何执行此操作的任何建议?

import numpy as np
import matplotlib.pyplot as plt


x1 = np.linspace(0,10,20)
x2 = np.linspace(0,10,500)

y1 = np.sin(x1)
y2 = np.sin(x2)

plt.plot(x2,y2, color = 'b')
plt.scatter(x1,y1,marker = 'o', s = 6, color = 'r')

【问题讨论】:

  • 尝试设置 z 顺序:plt.scatter(..., zorder=3)。线条默认具有 z 顺序 2。z 顺序定义了绘制元素的“层”。首先绘制具有最低 z 顺序的元素,然后绘制其余元素,一个在另一个之上。
  • 只需在 plt.plot 中设置marker='*'

标签: python matplotlib plot scatter-plot


【解决方案1】:

根据您的数据,您可以选择将markevery 传递给plt.plot

plt.plot(x2,y2, color = 'b', marker='o', markerfacecolor='r', markevery=25)

输出:

【讨论】:

  • 多一个 x 值会更好看:x2 = np.linspace(0, 10, 501)
【解决方案2】:

你可以使用 zorder。

import numpy as np
import matplotlib.pyplot as plt


x1 = np.linspace(0,10,20)
x2 = np.linspace(0,10,500)

y1 = np.sin(x1)
y2 = np.sin(x2)

plt.plot(x2,y2, color = 'b', zorder=0)
plt.scatter(x1,y1,marker = 'o', s = 6, color = 'r', zorder=1)

plt.show()

【讨论】:

  • 完美,谢谢!这正是我想要的!
猜你喜欢
  • 2022-07-28
  • 2014-05-13
  • 2022-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多