いつもお世話になっております。pythonのmatplotlibで
ベクトルのグラフを表示するquiverについてお尋ねしたいのですが。
datetime Cu Or
2018/9/4 0:00 27.6 31.5
2018/9/4 0:10 26.8 45.3
2018/9/4 0:20 27.9 41
2018/9/4 0:30 24.9 36.5
2018/9/4 0:40 30.8 26.8
・・・・・・・・・・・・・・・
2018/9/5 0:00 51.1 21.7
この並びのデータセットを用意して、以下のコードを実施するとベクトルのグラフが描かれます。
python
1#モジュールのインポート 2import matplotlib.pyplot as plt 3import pandas as pd 4import numpy as np 5 6#csvの読み込み 7df = pd.read_csv('sample.csv',encoding='ANSI',parse_dates=[0],index_col=[0]) 8 9#列データに記号を指定 10dt = df.index 11a = df['Cu'] 12b = df['Or'] 13 14#流向の度数→radian変換 15c = np.radians(b) 16u = a*np.sin(c) 17v = a*np.cos(c) 18 19#新しいデータフレームの作成 20df2 = pd.DataFrame({'x_element':u,'y_element':v}) 21#新データフレームの期間毎の平均値を求める(1Hour) 22df3 = df2.resample('10T').mean() 23#新データフレームの各列に記号を指定 24dt2 = df3.index 25u2 = df3['x_element'] 26v2 = df3['y_element'] 27 28#ベクトルの起点を設定 29time_len = len(df3) 30x = np.arange(time_len) 31y = np.zeros(len(x)) 32 33#グラフの格子を設定する 34fig, ax = plt.subplots(1,1,figsize=(10, 5)) 35 36#X軸の目盛を設定する 37dt_labels = [dt2.strftime('%m/%d') for dt2 in dt2] 38 39#ベクトル表示 40ax.quiver(x, y, u2, v2,width=0.001,scale_units='y',scale=1,\ 41 headlength=5, headwidth=5, headaxislength=5) 42 43#y軸の目盛を設定する 44ax.set_ylim(-50, 50) 45 46# 47plt.show()
このグラフで棒矢印の長さ(つまりデータセットの項目[Cu])が50以上ある棒矢印は赤色に、
40以上50未満の棒矢印は黄色で表示したいとします。
その場合、どのような関数で条件設定をすると良いでしょうか?
また、色付きの棒を最前面で表示したいのですが可能でしょうか?
つまり棒同士が重なった場合、埋もれてしまわないように、
黒棒より黄色棒、さらに黄色棒より赤棒が前面に来るように条件設定したいのですが、
可能でしょうか?
初歩的な質問で申し訳ありませんが、どうぞよろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/17 23:55