質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

解決済

matplotolibを使用した機械稼働状況グラフのリアルタイム更新

F91_
F91_

総合スコア12

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

3回答

0評価

0クリップ

593閲覧

投稿2021/08/23 13:12

機械稼働状況のグラフ更新を実現したい

ラズベリーパイに光センサーを繋ぎ、工場の加工設備のシグナルタワーの点灯パターンにより、機械稼働状況を計測しています。
時間帯によっての機械稼働状況をリアルタイムに可視化したいのでグラフをリアルタイムに更新したいのですが、以下の問題が発生しました。

発生している問題:過去のグラフデータがクリアされずに、新しいグラフが増え続けてしまう

イメージ説明

関係ないかと思いますが以下のようなエラーメッセージが出ています

エラーメッセージ /usr/lib/python3/dist-packages/matplotlib/axes/_base.py:3215: MatplotlibDeprecationWarning: The `xmin` argument was deprecated in Matplotlib 3.0 and will be removed in 3.2. Use `left` instead. alternative='`left`', obj_type='argument') /usr/lib/python3/dist-packages/matplotlib/axes/_base.py:3221: MatplotlibDeprecationWarning: The `xmax` argument was deprecated in Matplotlib 3.0 and will be removed in 3.2. Use `right` instead. alternative='`right`', obj_type='argument')

使用している該当のソースコード

python

import time import japanize_matplotlib import RPi.GPIO as GPIO import datetime import pandas as pd import matplotlib.pyplot as plt import matplotlib.dates as mdates from io import StringIO from time import sleep dissolution=1 #計測分解能[s] time1=0 #0秒 rate=0 # MCP3208からSPI通信で12ビットのデジタル値を取得。0から7の8チャンネル使用可 def readadc(adcnum,clockpin,mosipin,misopin,cspin): if adcnum> 7 or adcnum<0: return -1 GPIO.output(cspin,GPIO.HIGH) # I/Oが起きないようにCSを1にする GPIO.output(clockpin,GPIO.LOW)# CLK を0に設定しておく GPIO.output(cspin,GPIO.LOW)# I/Oを始めるためにCSを0にする commandout=adcnum# adcnum は 0 (CH0)なので、commandout は 00000000 commandout |=0x18 # スタートビット+シングルエンドビット# 0x18 は 00011000 なので、commandout は 00011000 になる。 commandout<<=3 # commandout は 11000000 になる。この上位5ビットを使い、制御信号の 11000 を送る。 for i in range(5): if commandout & 0x80: GPIO.output(mosipin,GPIO.HIGH) else: GPIO.output(mosipin,GPIO.LOW) commandout<<=1 GPIO.output(clockpin,GPIO.HIGH) GPIO.output(clockpin,GPIO.LOW) adcout=0 # データ保存変数 adcout の初期化 for i in range(13):# 13ビット読む(ヌルビット+12ビットデータ) GPIO.output(clockpin,GPIO.HIGH) GPIO.output(clockpin,GPIO.LOW) adcout<<=1 if i>0 and GPIO.input(misopin)==GPIO.HIGH: adcout |=0x1 GPIO.output(cspin,GPIO.HIGH) return adcout #GPIOへアクセスする番号をBCMの番号で指定することを宣言 GPIO.setmode(GPIO.BCM) # ピンの名前を変数として定義# Raspberry Pi のモードとして、GPIOの番号を物理番号ではなく役割番号で指定する SPICS=8 SPIMISO=9 SPIMOSI=10 SPICLK=11 # SPI通信用の入出力を定義 出力ピンなのか入力ピンなのか指定する GPIO.setup(SPICLK,GPIO.OUT) GPIO.setup(SPIMOSI,GPIO.OUT) GPIO.setup(SPIMISO,GPIO.IN) GPIO.setup(SPICS,GPIO.OUT) start=time.time() def plot_operation(fig, ax): data=pd.read_csv('mydata'+nowday+'.csv', header=None, names=[0,1], index_col=0, parse_dates=True) x=data.index y=data.iloc[:,0] d_today = datetime.date.today() dt_start = datetime.datetime(d_today.year, d_today.month, d_today.day, 7, 0) df_start = pd.DataFrame([[0, 0]], index=[dt_start]) d_tomorrow = d_today + datetime.timedelta(days=1) dt_end = datetime.datetime(d_tomorrow.year, d_tomorrow.month, d_tomorrow.day) df_end = pd.DataFrame([[0, 0]], index=[dt_end]) data = df_start.append([data, df_end]) data = data.asfreq('min', fill_value=0) plt.figure(figsize=(12.8, 4.8)) plt.xlabel("時刻") plt.ylabel("1=稼働,0=停止") plt.bar(x,y,width=0.0007) plt.gca().xaxis.set_major_locator(mdates.HourLocator(interval=1)) plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%H:%M')) plt.gca().set_xlim(xmin=datetime.datetime(d_today.year, d_today.month, d_today.day, 7, 0),xmax=dt_end) plt.gca().set_yticks([0, 1]) plt.tight_layout() plt.draw() plt.pause(1) fig = plt.figure(figsize=(12.8, 4.8)) ax = fig.add_subplot() now=datetime.datetime.now() now6=now-datetime.timedelta(hours=6)#24時〜30時を前日分として保存 nowday='{0:%Y%m%d}'.format(now6)#日付でcsv保存するため while True: try: inputVal0=readadc(0,SPICLK,SPIMOSI,SPIMISO,SPICS)# CH0の信号を取得する プログラム運転(緑) inputVal1=readadc(1,SPICLK,SPIMOSI,SPIMISO,SPICS)#アラーム(赤) if inputVal0 > 2000 or inputVal1 > 2000:#on/offを判断する光量を変更(緑) #print(inputVal0) time1=time1+1 print('稼働中') print(now.strftime('%H:%M')) if time1==1: plot_operation(fig, ax) time1=0 else: print('停止') print(now.strftime('%H:%M')) elapsed_time=time.time()-start #(処理時間)=(処理が終わった時間)ー(処理を始めた時間) a=dissolution - elapsed_time sleep(1) start=time.time() except FileNotFoundError: continue finally: sleep(1)

読み取っているエクセルデータ

20:25 1 0
20:26 1 0
20:27 1 0
20:28 1 0
20:29 1 0
20:30 1 0
20:31 1 0
20:32 1 0
20:33 1 0
20:34 1 0
20:35 1 0
20:36 1 0
20:37 1 0
20:38 1 0
20:39 1 0
20:41 1 0
20:42 1 0
20:43 1 0
20:44 1 0
20:45 1 0
20:46 1 0
20:47 1 0
20:48 1 0
20:49 1 0
20:50 1 0
20:51 1 0
20:52 1 0
20:53 1 0
20:54 1 0
20:55 1 0
20:56 1 0
20:57 1 0
20:58 1 0
20:59 1 0
21:00 1 0
21:01 1 0
21:02 1 0
21:03 1 0
21:04 1 0
21:05 1 0
21:06 1 0
21:07 1 0
21:08 1 0
21:09 1 0
21:10 1 0
21:11 1 0
21:12 1 0
21:13 1 0
21:14 1 0
21:15 1 0
21:16 1 0
21:17 1 0
21:18 1 0
21:19 1 0
21:20 1 0
21:21 1 0
21:22 1 0
21:23 1 0
21:24 1 0
21:25 1 0
21:26 1 0

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

解決済

回答2

クリップ0

更新

2019/08/14

matplotlib

同じタグがついた質問を見る

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。