次のようなinfo.csvファイルから列ごとに違った長さと角度を読み取り、扇形をプロットしたいです。例は2個のデータです。
|name|distance|angle|frontal_angle|pos1|pos2|
|aaa|10|60|90|10|10|
|bbb|5|30|40||50|50|
※簡略化のため多少コードの内容と違う部分があります
python
1import import pandas as pd 2import matplotlib.pyplot as plt 3import matplotlib.patches as pat 4 5color = ['green', 'red'] 6 7sensor_df = pd.read_csv('info.csv') 8sensor_df.head() 9 10fig = plt.figure(figsize=(10,10)) 11ax = plt.axes() 12plt.xlim(xmax=50) 13plt.ylim(ymax=50) 14## load df size 15for i, row in enumerate(sensor_df.itertuples()): 16 17 frontal_angle1 = row[4]-row[3] 18 frontal_angle2 = row[4]+row[3] 19 20 w = pat.Wedge(center = (row[5], row[6]), r = row[2], 21 theta1=frontal_angle1, theta2=frontal_angle2, color=color[i]) 22 23 ax.add_patch(w) 24 25plt.grid(color='gray') 26plt.show()
そうすると以下のメッセージが出て、一回目のループでしか扇形がプロットされませんでした。
MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance. In a future version, a new instance will always be created and returned. Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.
おそらくaxeも使いまわしてるからエラーがでるのだとおもいますが、axe = []として新しくaxe[0], axe[1]としてもおなじ結果でした。
exec('ax{}={}'.format(i, plt.axes()))によるaxe1,axe2などによる新しい変数定義を試しましたが(あまり望ましくないやり方ですよね、、)こちらもエラーで実行できませんでした。どうすれば複数個のaxeを正常にプロットできますでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/19 01:26