我想使用 mapplotlib 绘制一个加号,如下所示:
_
_| |_
|_ _|
|_|
我一直在阅读 matplotlib 文档,但坦率地说,我什至不确定要搜索什么来解决我的问题。实际上,我想在同一个 X 轴上有两个点(即一条垂直线),但我似乎无法弄清楚如何做到这一点。理想情况下,我想用一组情节点来做到这一点,但我知道这是否不可能。
如果我能以任何方式澄清我的问题,请告诉我。
我想使用 mapplotlib 绘制一个加号,如下所示:
_
_| |_
|_ _|
|_|
我一直在阅读 matplotlib 文档,但坦率地说,我什至不确定要搜索什么来解决我的问题。实际上,我想在同一个 X 轴上有两个点(即一条垂直线),但我似乎无法弄清楚如何做到这一点。理想情况下,我想用一组情节点来做到这一点,但我知道这是否不可能。
如果我能以任何方式澄清我的问题,请告诉我。
例如:
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots()
>>> y =[10, 20, 20, 30, 30, 40, 40, 30, 30, 20, 20, 10, 10]
>>> x =[10, 10, 0, 0, 10, 10, 20, 20, 30, 30, 20, 20, 10]
>>> line, = ax.plot(x, y, 'go-')
>>> ax.grid()
>>> ax.axis('equal')
(0.0, 30.0, 10.0, 40.0)
>>> plt.show()
产生:
如果您进行了一些搜索,您应该已经找到了一些如何创建自定义标记的链接。我想出的最好的回答是使用Path对象作为标记。因此,您可以创建一个创建所需路径的函数(我懒得写十字,所以我取了一个更简单的矩形):
def getCustomMarker():
verts = [(-1, -1), # left, bottom
(-1, 1), # left, top
(1, 1), # right, top
(1, -1), # right, bottom
(-1, -1)] # ignored
codes = [matplotlib.path.Path.MOVETO,
matplotlib.path.Path.LINETO,
matplotlib.path.Path.LINETO,
matplotlib.path.Path.LINETO,
matplotlib.path.Path.CLOSEPOLY]
path = matplotlib.path.Path(verts, codes)
return path
您现在可以使用所需的自定义标记绘制任何数据:
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)
figure = plt.figure()
axes = figure.add_subplot(1, 1, 1)
axes.plot(x, y, marker=getCustomMarker(), markerfacecolor='none', markersize=3)
plt.show()
这使您可以在您希望它具有所需大小的任何位置绘制任何标记。