データソース
date,cs,dir 2015/8/8 0:00,332,290.5 2015/8/8 0:10,356,297.6 2015/8/8 0:20,387,303.7 2015/8/8 0:30,406,306.2 2015/8/8 0:40,359,301.8 2015/8/8 0:50,330,303.3 2015/8/8 1:00,374,315.5 2015/8/8 1:10,334,310.5 2015/8/8 1:20,249,292.4 2015/8/8 1:30,366,304.2 2015/8/8 1:40,338,290.8 2015/8/8 1:50,363,299.9 2015/8/8 2:00,416,294.4 2015/8/8 2:10,377,310.3
前提・実現したいこと
上の様な時系列データを用いてベクトルグラフを作成しました。
csのデータの大きさによってベクトルの色を変えたので色の凡例を表示したいのですが方法がわかりません。
どなたかご教示頂けないでしょうか。
Python
################################################################################ import matplotlib.pyplot as plt import numpy as np import pandas as pd ################################################################################ # csvの読み込み ################################################################################ df = pd.read_csv('test.csv',parse_dates=[0]) # 列データに記号を指定 cs = df['cs']/10 dir = df['dir'] date = df['date'] # radian変換 rad = np.radians(dir) ################################################################################ #ベクトル計算 ################################################################################ #ベクトル成分計算 u = cs*np.sin(rad) v = cs*np.cos(rad) #ベクトルの起点 time_len = len(date) x = np.arange(time_len) y = np.zeros(len(x)) ################################################################################ #グラフ作成 ################################################################################ #グラフサイズ(subplot(行の数,列の数,何番目に配置しているか)) fig, ax = plt.subplots(1, 1, figsize=(15, 5)) # X軸の目盛を設定する dt_labels = np.array([d.strftime('%Y/%m/%d %H:%M') for d in date]) ax.set_xlim(-20, 50) ax.set_xticks(x[::30]) ax.set_xticklabels(dt_labels[::30], rotation=45, fontsize='small') # y軸の目盛を設定する ax.set_ylim(-55, 55) plt.yticks(np.arange(-50, 50.1, 10)) # ベクトル表示 colors = np.full(len(x), 'black') colors[df.cs >= 400] = 'r' # 赤 colors[(200 <= df.cs) & (df.cs < 400)] = 'y' # 黄色 q = ax.quiver(x, y, u, v, color=colors, width=0.001, scale_units='y', scale=1, headlength=5, headwidth=5, headaxislength=5) #y=0にラインを表示,vlineで縦線 ax.axhline(color='black', linewidth=1) #ベクトルのキー表示,plt.quiverkey(Q, x位置,y位置,長さ,単位(文字)) ax.quiverkey(q, 0.1, 0.9, 10,'10[cm/s]', labelpos='N', coordinates='axes', color='black') # x, y軸にラベルを表記 ax.set_xlabel('datetime', fontsize=13) ax.set_ylabel('current (cm/s)', fontsize=13) #pngとして保存 plt.subplots_adjust(left=0.125, right=0.9, bottom=0.25, top=0.9) plt.savefig('test3.png')
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。