使用matplotlib映射加号

时间:2013-10-18 11:12:07

标签: python matplotlib

我想使用mapplotlib绘制一个如下所示的加号:

   _
 _| |_
|_   _|
  |_|

我一直在阅读matplotlib文档但是,坦率地说,我甚至不确定要搜索什么来解决我的问题。实际上我希望在同一个X轴上有两个点(I.E.是一条垂直线),但我似乎无法弄清楚如何做到这一点。理想情况下,我想用一组绘图点来做这个,但我知道这是不可能的。

如果我能以任何方式澄清我的问题,请告诉我。

2 个答案:

答案 0 :(得分:1)

  1. 将您想要的数字绘制到方格纸上,
  2. 记下角落的x,y值,
  3. 将这些值放入一对列表中(一个用于x,一个用于y),顺序相同,
  4. 绘制它。
  5. 例如:

    >>> 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()
    

    产地:enter image description here

答案 1 :(得分:0)

如果你想做一些搜索,你应该找到一些如何创建自定义标记的链接。我想出的最好的答案是使用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()

这使您可以在任何想要它的位置绘制任何标记。