実現したいこと
ループの中で2次元配列データの中身をプロットしたい
発生している問題・分からないこと
iが1以降のときxとyの中身が空になってしまう
該当のソースコード
import pandas as pd import glob from pygame.midi import frequency_to_midi import numpy as np import matplotlib.pyplot as plt Notes_PATH = '/*.csv' filepath = glob.glob(Notes_PATH) for f in filepath: data = pd.read_csv(f, header=None).values.tolist() # Remove rows with zero duration data = [row for row in data if row[2] != 0] print(data) length=len(data) plt.figure() # 新しい図を作成 for i in range(length): data[i][1] = frequency_to_midi(data[i][1]) x = np.arange(data[i][0], data[i][2], 0.01) y = np.full_like(x, data[i][1]) print(f"i={i}, x={x}, y={y}") plt.plot(x, y, "sr") plt.xlabel("Second") plt.ylabel("MIDI") plt.yticks([0, 25, 50, 75, 100, 125, 150, 175, 200]) plt.xticks([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]) plt.savefig("lines.png") plt.show() print(data)
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
frequencyは正常に動いている
dataの中身もiが0から最後のときまで正常値が入っている
iが0のときはxもyも値が入っている
補足
特になし
CSVファイルの2行目3列目がゼロだと、そうなりますね。
(追記)
いや、それは関係なかったです。データ次第ですね。すみません。
回答1件
あなたの回答
tips
プレビュー