【问题标题】:Plotting list of lists in a same graph in Python在Python中的同一图中绘制列表列表
【发布时间】:2016-10-16 17:38:29
【问题描述】:

我正在尝试将(x,y) 绘制为y = [[1,2,3],[4,5,6],[7,8,9]]

说,len(x) = len(y[1]) = len(y[2]).. y 的长度由用户输入决定。我想在同一张图中绘制多个 y 图,即(x, y[1],y[2],y[3],...)。当我尝试使用循环时,它显示dimension error

我也试过了:plt.plot(x,y[i] for i in range(1,len(y)))

我如何绘图?请帮忙。

for i in range(1,len(y)):
    plt.plot(x,y[i],label = 'id %s'%i)
    plt.legend()
    plt.show()

【问题讨论】:

  • 您在绘图命令中有一个缩进错误。您还从 1. {range (1,...) 而不是 range(0,...) ) 开始索引。我假设这是故意的。代码应该仍然可以工作。请让我们知道您面临的错误
  • x 值是多少?有样品吗?
  • X=[1,2,3]。 @Nikhil 我在绘图时遇到尺寸错误
  • 我也试过 ax=plt.subplot (111) 但我得到了不同 Y 的不同图
  • 请在@sivasudhan下方查看我的解决方案

标签: python matplotlib nested-lists


【解决方案1】:

使用 for 循环生成绘图,并在 for 循环后使用 .show() 方法。

 import matplotlib.pyplot as plt
 for impacts in impactData:
     timefilteredForce = plt.plot(impacts)
     timefilteredForce = plt.xlabel('points')
     timefilteredForce = plt.ylabel('Force')

 plt.show()

impactData 是一个列表列表。

【讨论】:

  • 感谢此代码!一个小的更正点,它的pyplt.plot(impacts 不是pyplt.plt。干杯!
  • 感谢您的关注。我更新了导入以匹配标准 plt 调用。
【解决方案2】:

假设 x 有一些示例值,下面是可以为您提供所需输出的代码。

import matplotlib.pyplot as plt
x = [1,2,3]
y = [[1,2,3],[4,5,6],[7,8,9]]
plt.xlabel("X-axis")
plt.ylabel("Y-axis")
plt.title("A test graph")
for i in range(len(y[0])):
    plt.plot(x,[pt[i] for pt in y],label = 'id %s'%i)
plt.legend()
plt.show()

假设:xy 中的任何元素的长度相同。 这个想法是逐个元素地读取以构造列表(x,y[0]'s)(x,y[1]'s)(x,y[n]'s

已编辑:如果y 包含更多列表,请修改代码。

下面是我为这个案例得到的情节:

【讨论】:

  • 一项改进,可以使 y 值适应超过 3 个列表(例如 y = [[1,2,3],[4,5,6],[7,8,9],[ 10,11,12]]),就是将for循环中的范围设置为“for i in range(len(y[0])):”
  • 当我执行你的代码时,我得到:'list' object has no attribute 'tolist'
猜你喜欢
  • 1970-01-01
  • 2021-11-26
  • 1970-01-01
  • 2021-08-20
  • 1970-01-01
  • 1970-01-01
  • 2020-11-04
  • 2019-10-26
  • 1970-01-01
相关资源
最近更新 更多