0

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

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

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

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

4

2 回答 2

1
  1. 在方格纸上画出你想要的图形,
  2. 写下角的 x,y 值,
  3. 以相同的顺序将这些值放入一对列表中(一个用于 x,一个用于 y),
  4. 绘制它。

例如:

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

产生:在此处输入图像描述

于 2013-10-18T11:51:02.087 回答
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()

这使您可以在您希望它具有所需大小的任何位置绘制任何标记。

于 2013-10-18T12:26:48.623 回答