plotの線の色を途中で変更する

54 views (last 30 days)
Mamoru Mabuchi
Mamoru Mabuchi on 25 Aug 2023
Edited: Hiroshi Iwamura on 26 Aug 2023
プロットをする際に、下図のように、データの途中で線の色を変更することは可能でしょうか

Answers (3)

Kojiro Saito
Kojiro Saito on 26 Aug 2023
xとyでデフォルトの色の範囲と色を変えたい範囲に分割してプロットする方法で実現できます。
x = 0:5;
y = 0:2:10;
plot(x([1:3, 5:6]), y([1:3, 5:6]), '-o', x(3:5), y(3:5), '-or')
2回のplotに分けることもできます。1回目のプロットの後hold onで追記するモードにし、2回目のプロットをおこないます。hold offで追記モードをオフにします。
x = 0:5;
y = 0:2:10;
plot(x([1:3, 5:6]), y([1:3, 5:6]), 'Marker', 'o')
hold on
plot(x(3:5), y(3:5), 'Marker', 'o', 'Color', 'r')
hold off
あるいは最初に全てのプロットをデフォルトの色(青)で描いてしまってから、指定した範囲だけ赤色の線を上書きする方法もあります。
x = 0:5;
y = 0:2:10;
plot(x, y, 'Marker', 'o')
hold on
plot(x(3:5), y(3:5), 'r')
hold off

交感神経優位なあかべぇ
plotでは線の途中で変えられませんが、patchでは線の色を途中で変えられます。
ただし、patchは多角形を作成する関数ですので、面の色や最後の辺を透明にする必要があります。
x = [0,1,2,3,4,5];
y = [0,2,4,6,8,10];
redIdx = [3,4];% 赤のラインにする配列インデックス
FaceVertexCData = repmat([0,0,1],length(x),1); %色の設定
FaceVertexCData(redIdx,:) = repmat([1,0,0],length(redIdx),1);%線の一部だけ赤にする
FaceVertexAlphaData = ones(length(x),1);% 辺の透明度の設定
FaceVertexAlphaData(end) = 0; %最後の辺だけ透明にする。
patch(x,y,[1,1,1],... 面の色は透明にするので適当に設定
'Marker', 'o',... データがある点にoのマークをつける
'FaceAlpha',0,... 面を透明にする
'EdgeColor','flat',... EdgeColor(辺の色)はFaceVertexCDataの指定に従う
'FaceVertexCData', FaceVertexCData,... 辺に色をつける
'EdgeAlpha', 'flat',... EdgeAlpha(辺の透明度)はFaceVertexAlphaDataの指定に従う
'FaceVertexAlphaData', FaceVertexAlphaData); % 最後の辺だけ色を透明にする。
  1 Comment
Hiroshi Iwamura
Hiroshi Iwamura on 26 Aug 2023
(patch は最後に nan を入れると開曲線も描けます)

Sign in to comment.


Hiroshi Iwamura
Hiroshi Iwamura on 26 Aug 2023
Edited: Hiroshi Iwamura on 26 Aug 2023
for ループが必要ですが、区間ごとに描いて描画カラー順を指定する手もあります。
x = [0,1,2,3,4,5];
y = [0,2,4,6,8,10];
C = colororder;
colororder([C(1,:); C(1,:); C(2,:); C(2,:)]);
% ax = axes;
% ax.ColorOrder = ([C(1,:); C(1,:); C(2,:); C(2,:)]);  % これでも可
hold on
for k=1:length(x)-1
plot(x(k:k+1), y(k:k+1),'-o')
end
hold off
colororder / ax.ColorOrder は、描いた後でも変えられます
指定できるのは7種類までです。
同様にラインスタイル等も繰り返しパターン順を指定できます。
R2023a からは、更新順を色を優先するかラインスタイルを優先するか選べるようになりました。

Tags

Products


Release

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!