csvデータを読み込んでリアルタイムで描画していくプログラムを作成しています。
python
1#!/usr/bin/python 2# coding: UTF-8 3 4import matplotlib.pyplot as plt 5import numpy as np 6 7data = np.genfromtxt("data.csv", dtype = float, delimiter = ",") 8 9N = data[:,5] 10L = data[:,10] 11C = data[:,9] 12P = data[:,11] 13 14i = 0 15x = [] 16n = [] 17l = [] 18c = [] 19p = [] 20 21plt.ion() 22plt.grid() 23 24while True: 25 i = i + 1 26 27 plt.subplot(411) 28 plt.xlim(0,100) 29 plt.ylim(0,300) 30 x.append(i) 31 n.append(nomal[i]) 32 plt.plot(x,n,color='red') 33 plt.draw() 34 35 plt.subplot(412) 36 plt.xlim(0,100) 37 plt.ylim(0,300) 38 x.append(i) 39 l.append(Il[i]) 40 plt.plot(x,l,color='yellow') 41 plt.draw() 42 43 plt.subplot(413) 44 plt.xlim(0,100) 45 plt.ylim(-50,50) 46 x.append(i) 47 c.append(cor[i]) 48 plt.plot(x,c,color='blue') 49 plt.draw() 50 51 plt.subplot(414) 52 plt.xlim(0,100) 53 plt.ylim(-10,10) 54 x.append(i) 55 p.append(pulse[i]) 56 plt.plot(x,p,color='green') 57 plt.draw() 58 59 if i == 2000: 60 break 61 62 plt.pause(0.05) 63 64plt.close()
リアルタイムグラフプロットが初めてなのでインターネット上にあるコードを参考にして作りましたが、
Traceback (most recent call last): File "demo.py", line 45, in <module> plt.plot(x,l,color='yellow') File "C:\Tools\Anaconda3\lib\site-packages\matplotlib\pyplot.py", line 3363, in plot ret = ax.plot(*args, **kwargs) File "C:\Tools\Anaconda3\lib\site-packages\matplotlib\__init__.py", line 1867, in inner return func(ax, *args, **kwargs) File "C:\Tools\Anaconda3\lib\site-packages\matplotlib\axes\_axes.py", line 1528, in plot for line in self._get_lines(*args, **kwargs): File "C:\Tools\Anaconda3\lib\site-packages\matplotlib\axes\_base.py", line 406, in _grab_next_args for seg in self._plot_args(this, kwargs): File "C:\Tools\Anaconda3\lib\site-packages\matplotlib\axes\_base.py", line 383, in _plot_args x, y = self._xy_from_xy(x, y) File "C:\Tools\Anaconda3\lib\site-packages\matplotlib\axes\_base.py", line 242, in _xy_from_xy "have shapes {} and {}".format(x.shape, y.shape)) ValueError: x and y must have same first dimension, but have shapes (2,) and (1,)
というエラーが出ました。
どこが間違っているのでしょうか??
よろしくお願いいたします。
data.csv の中身を質問欄に貼れますか
ファイルの貼り方がわからなかったのでスクリーンショットです。
データが1つのときの描画はうまくいきました。
データを4つにしたときに、 4つのデータを、y.append(nomal[i]) 、y.append(Il[i])、y.append(cor[i])、y.append(pulse[i])にしていたときはうまくいきましたが、明らかにすべてのグラフが同じデータのプロットをしていたため変更したら、このエラーが出ました。
plt.plot(x, y) をしてる場所の最初の2つの引数を print して配列の長さが同じか確認してください
同じになっていない箇所があれば、それが原因です。
2つめのデータでxが[1, 1]になっていたので恐らくx.append(i) をデータ毎に書いていたのが原因のようです。
2つめ以降のx.append(i)を消したら無事動きました!
ありがとうございました。
回答1件
あなたの回答
tips
プレビュー