Matlab plot3 线条颜色设置

Matlab plot3 line color setting

我想用matlab中的plot3函数绘制三维折线图。 以下代码用于绘制具有指定颜色名称 'r'、'g'、'k' 等的线条。 但是,当我使用 RGB 三元组将第一种颜色替换为 'myGreen' 时出现错误:'Error using plot3 向量的长度必须相同。'
我该如何解决这个问题?

[xx,zz]=meshgrid(1:230,1:4);
x1=(xx(1,:));
x2=(xx(2,:));
x3=(xx(3,:));
x4=(xx(4,:));

z1=(zz(1,:));
z2=(zz(2,:));
z3=(zz(3,:));
z4=(zz(4,:));

yy=rand(230,4);
y1=(yy(:,1));
y2=(yy(:,2));
y3=(yy(:,3));
y4=(yy(:,4));

% custom colour 
myGreen=[0 0.5 0];
index={'data1','data2','data3','data4'}

figure
% It works and produces the attached figure
plot3(x1',z1',y1','r',x2',z2',y2','m', x3',z3',y3','b',x4',z4',y4','k')
% It doesn't work
plot3(x1',z1',y1','Color',myGreen,x2',z2',y2','m', x3',z3',y3','b',x4',z4',y4','k')

set(gca,'YTick',1:4,'YTickLabel',index)
grid on
xlabel('xlabel','FontSize',10);
zlabel('zlabel','FontSize',10)
axis tight

 

根据 plot3 documentation,该函数接受多种语法:

plot3(X,Y,Z)
plot3(X,Y,Z,LineSpec)
plot3(X1,Y1,Z1,...,Xn,Yn,Zn)
plot3(X1,Y1,Z1,LineSpec1,...,Xn,Yn,Zn,LineSpecn)
plot3(___,Name,Value)
etc...

示例中的工作线:

plot3(x1',z1',y1','r',x2',z2',y2','m', x3',z3',y3','b',x4',z4',y4','k')

对应语法

plot3(X1,Y1,Z1,LineSpec1,...,Xn,Yn,Zn,LineSpecn)

在 non-working 行中,您有效地将 LineSpec1 ('r') 替换为 Name,Value'Color',myGreen。但是没有语法 plot3(X1,Y1,Z1,Name,Value,...,Xn,Yn,Zn,LineSpecn).

Name,Value 对仅在参数列表的末尾被接受并适用于所有系列。您可以通过拆分对 plot3 的调用并使用 hold 将它们全部保持在同一轴上来实现看似预期的行为:

plot3(x1',z1',y1','Color',myGreen)
hold on
plot3(x2',z2',y2','m')
plot3(x3',z3',y3','b')
plot3(x4',z4',y4','k')

像现在一样绘图,保存手柄,然后更改第一个手柄的颜色。

h=plot3(x1',z1',y1','r',x2',z2',y2','m', x3',z3',y3','b',x4',z4',y4','k');
set(h(1),'Color',myGreen);