gpt4 book ai didi

python - 删除 matplotlib 图中经过点的线

转载 作者:行者123 更新时间:2023-12-01 02:02:52 25 4
gpt4 key购买 nike

我有以下matplotlib片段:

fig, ax = plt.subplots(figsize=(6,6))
values = np.random.normal(loc=0, scale=1, size=10)
ax.plot(range(10), values, 'r^', markersize=15, alpha=0.4);

产生

enter image description here

按计划进行。

我想让线与点重叠的地方不可见,以便点看起来更多地由线连接,而不是位于线的顶部。是否可以通过使线在重叠处不可见或创建一个新的线对象来简单地链接点而不是跟踪它们来实现此目的?

明确地说,我不想删除整条行,只删除与点重叠的部分。

最佳答案

通常很难让线条停在标记的边缘。原因是线是在数据坐标中定义的,而标记是在点中定义的。

解决方法是隐藏标记所在的行。我们可能会想到一个三层系统。最低层 (zorder=1) 包含线条,就像它们本身一样。上面的层包含与要显示的标记形状和大小相同的标记。然而它们的颜色会与背景相同(通常是白色)。最顶层包含所需的标记。

import matplotlib.pyplot as plt
import numpy as np; np.random.seed(42)

fig, ax = plt.subplots(figsize=(6,5))

def plot_hidden_lines(x,y, ax = None, ms=15, color="r",
marker="^", alpha=0.4,**kwargs):
if not ax: ax=plt.gca()
ax.scatter(x,y, c=color, s=ms**2, marker=marker, alpha=alpha, zorder=3)
ax.scatter(x,y, c="w", s=ms**2, marker=marker, alpha=1, zorder=2)
ax.plot(x,y, color=color, zorder=1,alpha=alpha,**kwargs)


values1 = np.random.normal(loc=0, scale=1, size=10)
values2 = np.random.normal(loc=0, scale=1, size=10)
x = np.arange(len(values1))

plot_hidden_lines(x,values1)
plot_hidden_lines(x,values2, color="indigo", ms=20, marker="s")

plt.show()

enter image description here

关于python - 删除 matplotlib 图中经过点的线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49416776/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com