csvデータを読み込んでリアルタイムで描画していくプログラムを作成しています。
#!/usr/bin/python
# coding: UTF-8
import matplotlib.pyplot as plt
import numpy as np
data = np.genfromtxt("data.csv", dtype = float, delimiter = ",")
N = data[:,5]
L = data[:,10]
C = data[:,9]
P = data[:,11]
i = 0
x = []
n = []
l = []
c = []
p = []
plt.ion()
plt.grid()
while True:
i = i + 1
plt.subplot(411)
plt.xlim(0,100)
plt.ylim(0,300)
x.append(i)
n.append(nomal[i])
plt.plot(x,n,color='red')
plt.draw()
plt.subplot(412)
plt.xlim(0,100)
plt.ylim(0,300)
x.append(i)
l.append(Il[i])
plt.plot(x,l,color='yellow')
plt.draw()
plt.subplot(413)
plt.xlim(0,100)
plt.ylim(-50,50)
x.append(i)
c.append(cor[i])
plt.plot(x,c,color='blue')
plt.draw()
plt.subplot(414)
plt.xlim(0,100)
plt.ylim(-10,10)
x.append(i)
p.append(pulse[i])
plt.plot(x,p,color='green')
plt.draw()
if i == 2000:
break
plt.pause(0.05)
plt.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,)
というエラーが出ました。
どこが間違っているのでしょうか??
よろしくお願いいたします。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.32%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
tiitoi
2019/01/28 17:03
data.csv の中身を質問欄に貼れますか
YukaU
2019/01/28 17:13
ファイルの貼り方がわからなかったのでスクリーンショットです。
データが1つのときの描画はうまくいきました。
データを4つにしたときに、 4つのデータを、y.append(nomal[i]) 、y.append(Il[i])、y.append(cor[i])、y.append(pulse[i])にしていたときはうまくいきましたが、明らかにすべてのグラフが同じデータのプロットをしていたため変更したら、このエラーが出ました。
tiitoi
2019/01/28 17:17
plt.plot(x, y) をしてる場所の最初の2つの引数を print して配列の長さが同じか確認してください
同じになっていない箇所があれば、それが原因です。
YukaU
2019/01/28 17:22
2つめのデータでxが[1, 1]になっていたので恐らくx.append(i) をデータ毎に書いていたのが原因のようです。
2つめ以降のx.append(i)を消したら無事動きました!
ありがとうございました。