我想使用两个列表x和y绘制图形,其中-
x=['18ww25', '18ww27', '18ww28', '18ww28.1', '18ww29', '18ww29.1', '18ww29.2']
y=[['27%', '27%', '27%', '27%', '27%', '27%', '27%'], ['18%', '18%', '20%', '23%', '30%', '30%', '30%'], ['24%', '25%', '28%', '32%', '39%', '39%', '43%'], ['43%', '43%', '44%', '44%', '43%', '45%', '45%'], ['0%', '0%', '0%', '0%', '0%', '0%', '0%'], ['14%', '14%', '16%', '16%', '16%', '17%', '17%'], ['14%', '14%', '14%', '14%', '14%', '14%', '14%'], ['0%', '0%', '0%', '0%', '0%', '0%', '0%'], ['8%', '8%', '8%', '8%', '8%', '8%', '8%']]
我必须绘制每个x
和y
对的图。我必须在同一张图中绘制列表x
和y
的每个列表,例如:(x,y1)
(x,y2)
... (x,y9)
(共9个元素y
中有。)
我现在正在使用的代码是:
plt.xlabel("X-axis")
plt.ylabel("Y-axis")
plt.title("A test graph")
for i in range(len(y)):
plt.plot(x,[pt[i] for pt in y],label = 'id %s'%i)
plt.legend()
plt.show()
但是此代码显示错误为
x and y must have same first dimension, but have shapes (7,) and (9,)
我该如何绘制?
答案 0 :(得分:0)
您似乎想绘制
for i in range(len(y)):
plt.plot(x, y[i], label = 'id %s'%i)
但是,您可能会首先将y值更改为数字,否则它们将无法缩放。总体上看起来像
import matplotlib.pyplot as plt
x=['18ww25', '18ww27', '18ww28', '18ww28.1', '18ww29', '18ww29.1', '18ww29.2']
y=[['27%', '27%', '27%', '27%', '27%', '27%', '27%'],
['18%', '18%', '20%', '23%', '30%', '30%', '30%'],
['24%', '25%', '28%', '32%', '39%', '39%', '43%'],
['43%', '43%', '44%', '44%', '43%', '45%', '45%'],
['0%', '0%', '0%', '0%', '0%', '0%', '0%'],
['14%', '14%', '16%', '16%', '16%', '17%', '17%'],
['14%', '14%', '14%', '14%', '14%', '14%', '14%'],
['0%', '0%', '0%', '0%', '0%', '0%', '0%'],
['8%', '8%', '8%', '8%', '8%', '8%', '8%']]
z = [list(map(lambda s: float(s.split("%")[0]),yi)) for yi in y]
plt.xlabel("X-axis")
plt.ylabel("Y-axis [%]")
plt.title("A test graph")
for i in range(len(z)):
plt.plot(x,z[i],label = 'id %s'%i)
plt.legend()
plt.show()