ThingSpeakの積み上げグラフ
10621 ワード
以前書いた気温のグラフがバグってたので直してみました。二値の積み上げグラフで、片方を白にして消して、高気最低最温の表示を行います。
以前作ったものは0度以下に対応していませんでした。
% Last week max and min temputure
readChannelID = ;
readAPIKey = "";
last = 7 * 4;
day = datetime('now') - last;
disp(day);
% startdaystr = "Sep 22, 2019 00:00:00";
% enddaystr = "Sep 23, 2019 00:00:00";
for c = 1:last
startdaystr = datestr(day,'mmm dd, yyyy 00:00:00');
enddaystr = datestr(day + 1,'mmm dd, yyyy 00:00:00');
[a,b] = thingSpeakRead(readChannelID, 'ReadKey', readAPIKey, 'Fields',2,'DateRange', [datetime(startdaystr),datetime(enddaystr)]);
a = filloutliers(a,'linear');
[m, n] = max(a);
[x, y] = min(a);
t(c) = day;
if x > 0
vmax(c) = m - x
vmin(c) = x
elseif m > 0
vmax(c) = m
vmin(c) = x
else
vmax(c) = x - m
vmin(c) = m
end
day = day + 1
end
C = vertcat(vmin, vmax);
H = bar(t, C, 'stacked');
ba = H(1);
bb = H(2);
disp(ba);
ba.FaceColor = 'flat';
bb.FaceColor = 'flat';
set(H(1),{'EdgeColor'},{[1 1 1]});
set(H(2),{'EdgeColor'},{[1 1 1]});
for c = 1:last
if vmin(c) > 0
ba.CData(c,:) = [1 1 1];
bb.CData(c,:) = [1 0 1];
elseif vmax(c) < 0
ba.CData(c,:) = [1 1 1];
bb.CData(c,:) = [1 0 1];
else
ba.CData(c,:) = [1 0 1];
bb.CData(c,:) = [1 0 1];
end
end
テストケース:最高気温10度最低気温2度
テストケース:最高気温2度最低気温-10度
テストケース:最高気温-2度最低気温-10度
季節外れの雪が降った日のグラフがおかしくなっていました。
調べてみたところfilloutliers(a,'linear');がエラー値としてデータを省いたことが原因でした。季節外れの雪にMATLABも迷ってしまったようです。
Author And Source
この問題について(ThingSpeakの積み上げグラフ), 我々は、より多くの情報をここで見つけました https://qiita.com/yamori813/items/798c3c31691cd7f3b80e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .