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);
我想用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);