【问题标题】:matplotlab How can I plot points in a loop using one arraymatplotlib 如何使用一个数组在循环中绘制点
【发布时间】:2020-08-28 05:06:02
【问题描述】:

这是我遇到的问题的简化示例。

    import matplotlib.pyplot as plt

    for i in range(0,10):
        plt.plot(i, i + 1)
    plt.show()

显示了这一点。和

x = y = []
    for i in range(0,10):
        x.append(i)
        y.append(i + 1)
    plt.plot(x, y,)
    plt.show()

显示这个。

如何在循环中绘制点,这样我就不需要创建两个数组?

【问题讨论】:

  • 当你做plt.plot(i, i + 1)时,在2个点之间画线,第一个循环中的代码只画一个点,因此点之间没有画线,点上也没有标记。
  • 运行for i in range(0,10): plt.plot([i, i+1], [i, i+1], marker='o')作为插图。

标签: python matplotlib data-science


【解决方案1】:

试试这个-

import matplotlib.pyplot as plt
for i in range(0,10):
    plt.plot(i, i + 1, color='green', linestyle='solid', linewidth = 3, 
         marker='o')
plt.show()

【讨论】:

    【解决方案2】:

    将数组作为第一个参数传递给plt.plot(),这将使用 x 作为索引数组 0..N-1 绘制 y:

    import matplotlib.pyplot as plt
    
    # plot y using x as index array 0..N-1
    plt.plot(range(10))
    
    plt.show()
    

    您可以在plt.plot() 找到更多有趣的信息。

    【讨论】:

      【解决方案3】:

      你可以这样做:

      import matplotlib.pyplot as plt
      from matplotlib.collections import LineCollection
      
      
      fig, ax = plt.subplots()
      max =10
      
      for i in range(0,max):
          #scatter:
          #s=0 to make dissapeared the scatters
          ax.scatter(i, i + 1,s=1,facecolor='blue')
          #lines
          if i > 0:
              lc = LineCollection([[(i-1, i),(i, i+1)]])
              ax.add_collection(lc)
      plt.show()
      

      结果:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-05-23
        • 1970-01-01
        • 1970-01-01
        • 2018-08-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-04
        相关资源
        最近更新 更多