Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用matplotlib映射加号_Python_Matplotlib - Fatal编程技术网

Python 使用matplotlib映射加号

Python 使用matplotlib映射加号,python,matplotlib,Python,Matplotlib,我想使用mapplotlib绘制一个加号,如下所示: _ _| |_ |_ _| |_| 我一直在阅读matplotlib文档,但坦率地说,我甚至不确定要搜索什么来解决我的问题。实际上,我希望在同一个X轴上有两个点(即垂直线),但我似乎不知道如何做到这一点。理想情况下,我希望用一组绘图点来完成这项工作,尽管我知道这是不可能的 如果我能以任何方式澄清我的问题,请告诉我 将所需的图形绘制在图形纸上 写下角点的x,y值 将这些值按相同顺序放入一对列表中(一个用于x,一个用于y) 画出

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

   _
 _| |_
|_   _|
  |_|
我一直在阅读matplotlib文档,但坦率地说,我甚至不确定要搜索什么来解决我的问题。实际上,我希望在同一个X轴上有两个点(即垂直线),但我似乎不知道如何做到这一点。理想情况下,我希望用一组绘图点来完成这项工作,尽管我知道这是不可能的

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

  • 将所需的图形绘制在图形纸上
  • 写下角点的x,y值
  • 将这些值按相同顺序放入一对列表中(一个用于x,一个用于y)
  • 画出来
  • 例如:

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

    生成:

    如果您想进行一些搜索,您应该找到一些如何创建自定义标记的链接。我想回答你的问题最好的办法就是用一个物体作为标记。因此,您可以创建一个创建所需路径的函数(我懒得写十字,所以我选择了一个更简单的矩形):

    现在,您可以使用所需的自定义标记打印任何数据:

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

    这使您可以在任何位置绘制任何标记,使其达到所需的大小。

    值得一提的一个简单方法是使用
    zip(*任意)
    ,例如
    x,y=zip(*顶点)
    [(1,2)、(2,4)、(3,6)]
    解包成
    (1,2,3)
    (2,4,6)
    ,我可以在以后添加它,我不想把事情复杂化情节代码是什么?我试过用plt.plot(x,,,y,,)但是看起来一点都不对劲。我很困惑一个正方形的自定义标记是如何解决我的问题的?
    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()