matplotlib 将两个散点标记合并为matplot中图例的一个

mrphzbgm  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(127)

假设我有一个函数,它代表一辆行驶的汽车的路径:

import numpy as np
import matplotlib.pyplot as plt

# positions of the car
x = np.linspace(0, 20, 100)
y = np.sin(x)

fig, ax = plt.subplots(figsize=(12, 8))
ax.plot(x, y)

字符串
x1c 0d1x的数据
车停在特定的位置,我想在图表中用暂停符号来标记这些位置,你们中的一些人肯定很熟悉。符号只是两条垂直线。不幸的是,matplot没有这样的标记,但是,matplot带有垂直线作为标记。因此,作为B计划,我提出了以下实现:

# position where the car stops
x_stop = np.array([1, 5, 10])
y_stop = np.sin(x_stop)

# to create a stop symbol we shift the vertical line from matplot
shift = 0.1
ax.scatter(x_stop - shift, y_stop, marker='|', color='r', s=225, label='stop')
ax.scatter(x_stop + shift, y_stop, marker='|', color='r', s=225, label='stop')

plt.legend(loc='best')



问题是,这个传说显然没有意义。我想要的是图例中彼此相邻的两个标记,就像它们出现在汽车路径的图形中一样。有没有办法做到这一点?任何其他方法或解决我的问题是好的!

8ehkhllq

8ehkhllq1#

this answer之后,您可以使用LaTeX为matplotlib标记创建自定义符号。在这种情况下,很简单:美元符号包裹着LaTeX。正如@kklaw所指出的,散点图的zorder低于直线,因此需要调整zorder以使它们位于前面。

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 20, 100)
y = np.sin(x)

fig, ax = plt.subplots(figsize=(12, 8))
ax.plot(x, y)

x_stop = np.array([1, 5, 10])
y_stop = np.sin(x_stop)

shift = 0.1
ax.scatter(x_stop, y_stop, marker="$||$", color="r", s=225, label="stop", zorder=2)
ax.legend(loc="best")

字符串
x1c 0d1x的数据

相关问题