MATLABで, 水位, 流量, 雨量のグラフを作る
最終更新:2021/12/23
MATLABで, 以下のような水位, 流量, 雨量のグラフを作る.
ダム関連の書類では頻出する図. 当研究室ではよく使うので, コードを公開する. このコードはかなり姑息なので, もうすこし一般化して函数にする予定.

コード
用意するデータは,
time:時間データ,Qsim,Qobs:流量, 今回はシミュレーションと実観測,WL:水位,rainfall:雨量.
MATLAB
% Qsim, Qobs(流量)のプロット
plot(time, Qsim, 'r'); hold on
plot(time, Qobs, 'b');
ylim([0, 6e3])
ylabel('流量 [m^3/s]')
l = legend;
% 水位をスケールして, 流量と同じ軸にプロット
WL_scaled = (WL+20) * 6000/25;
plot(time, WL_scaled, 'k', 'LineWidth', 1)
% 左に軸が増える分, プロットのエリアを縮めて, ポジションを取得
axL = gca;
axL.Position(3) = 0.70;
axL.Position(2) = axL.Position(2) - 0.02;
axL.Position(1) = 0.2;
pos = axL.Position;
% 雨量のプロット
yyaxis right
bar(time, rainfall, 'FaceColor', '#0072BD', 'EdgeColor','none')
axR = gca;
axR.YDir = 'reverse';
axR.YColor = 'k';
ylim([0, 100])
ylabel('流域平均雨量 [mm]')
% 水位のための軸を作る. 軸以外は非表示にする.
yyaxis left
ax1 = axes;
ylim([-20, 5])
ylabel('水位 [m]')
ax1.Position = pos;
ax1.Position(1) = ax1.Position(1) - 0.1;
ax1.Box = 'off';
ax1.XColor = 'None';
% 凡例
l.String = {'Q_{sim}', 'Q_{obs}', 'WL', '雨量'};
l.Box = 'off';
l.Location = 'southwest';