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

56 visualizaciones (últimos 30 días)
Mamoru Mabuchi
Mamoru Mabuchi el 25 de Ag. de 2023
Editada: Hiroshi Iwamura el 26 de Ag. de 2023
プロットをする際に、下図のように、データの途中で線の色を変更することは可能でしょうか

Respuestas (3)

Kojiro Saito
Kojiro Saito el 26 de Ag. de 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

交感神経優位なあかべぇ
交感神経優位なあかべぇ el 26 de Ag. de 2023
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 comentario
Hiroshi Iwamura
Hiroshi Iwamura el 26 de Ag. de 2023
(patch は最後に nan を入れると開曲線も描けます)

Iniciar sesión para comentar.


Hiroshi Iwamura
Hiroshi Iwamura el 26 de Ag. de 2023
Editada: Hiroshi Iwamura el 26 de Ag. de 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 からは、更新順を色を優先するかラインスタイルを優先するか選べるようになりました。

Etiquetas

Productos


Versión

R2019b

Community Treasure Hunt

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

Start Hunting!