x 축이 하나의 목록이고 y가 다른 선으로 그려진 목록의 수인 목록에 목록을 표시하려고합니다.
내 코드는 목록에 목록을 그릴 수 있지만 목록의 차원이 동일한 경우에만 가능합니다. 예를 들어 다음과 같이 플롯하면 작동합니다.
x = np.array(["00:00:02.56","00:00:05.12","00:00:07.68"])
y = np.array([[1171.1,878.1,954.6],[806.7,870.4,1171.1],[954.6,870.4,954.6]])
그러나 y에 목록이 하나 더 있으면 4는 아래와 같습니다.
y = np.array([[1171.1,878.1,954.6],[806.7,870.4,1171.1],[954.6,870.4,954.6],[959.6,980.4,999.6]])
그런 다음 "ValueError : x와 y의 첫 번째 차원이 동일해야합니다."라는 값 오류가 발생합니다.
오류는 다음과 같습니다.
Traceback (most recent call last):
File "./list_in_list.py", line 137, in <module>
if __name__ == "__main__": main()
File "./list_in_list.py", line 26, in main
multiplot()
File "./list_in_list.py", line 131, in multiplot
plt.plot(x,[pt[i] for pt in y],label = 'id %s'%i)
File "/usr/lib/python3/dist-packages/matplotlib/pyplot.py", line 3154, in plot
ret = ax.plot(*args, **kwargs)
File "/usr/lib/python3/dist-packages/matplotlib/__init__.py", line 1814, in inner
return func(ax, *args, **kwargs)
File "/usr/lib/python3/dist-packages/matplotlib/axes/_axes.py", line 1424, in plot
for line in self._get_lines(*args, **kwargs):
File "/usr/lib/python3/dist-packages/matplotlib/axes/_base.py", line 386, in _grab_next_args
for seg in self._plot_args(remaining, kwargs):
File "/usr/lib/python3/dist-packages/matplotlib/axes/_base.py", line 364, in _plot_args
x, y = self._xy_from_xy(x, y)
File "/usr/lib/python3/dist-packages/matplotlib/axes/_base.py", line 223, in _xy_from_xy
raise ValueError("x and y must have same first dimension")
ValueError: x and y must have same first dimension
내 코드는 다음과 같습니다.
#!/usr/bin/python3
import matplotlib.pyplot as plt
import numpy as np
import datetime
x = np.array(["00:00:02.56","00:00:05.12","00:00:07.68"])
y = np.array([[1171.1,878.1,954.6],[806.7,870.4,1171.1],[954.6,870.4,954.6],[959.6,980.4,999.6]])
x = [datetime.datetime.strptime(elem, '%H:%M:%S.%f') for elem in x]
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()
y에 포함 된 목록 수에 관계없이 하나의 플롯에 y를 어떻게 플로팅합니까?
플로팅 루프는 나에게별로 의미가 없습니다.
대신 단순히 각 행을 y
이렇게 플로팅하십시오.
for i, pt in enumerate(y):
plt.plot(x,pt,label = 'id %s'%i)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다