Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何使用不同的标记绘制多条线_Matlab - Fatal编程技术网

Matlab 如何使用不同的标记绘制多条线

Matlab 如何使用不同的标记绘制多条线,matlab,Matlab,我想画多条线,这样做,标记将在每一行不同。我知道,对于颜色,这将通过ColorSet=hsv(12)实现。有没有像这种方法一样简单的标记方法?假设您使用的是plot,最简单的方法是在命令中添加线条类型。 一些可能的选项有:--,:,-,-.。还有标记类型和宽度的选项 例如,此代码将生成具有不同类型标记的几行: x = -pi:.1:pi; y = sin(x); z = cos(x); t = tan(x); l = x.^2; figure(); hold on; plot (x,y,'--g

我想画多条线,这样做,标记将在每一行不同。我知道,对于颜色,这将通过
ColorSet=hsv(12)实现。有没有像这种方法一样简单的标记方法?

假设您使用的是
plot
,最简单的方法是在命令中添加线条类型。 一些可能的选项有:
--
-
-.
。还有标记类型和宽度的选项

例如,此代码将生成具有不同类型标记的几行:

x = -pi:.1:pi;
y = sin(x);
z = cos(x);
t = tan(x);
l = x.^2;
figure();
hold on;
plot (x,y,'--g');
plot (x,z,'-.y');
plot (x,t,'-b');
plot (x,l,':r');
hold off;
生成的图形为:


有关更多帮助,请转到:

嗯,我不知道的内置功能可以这样做,但我会执行以下操作。我创建自己的单元格:

markers = {'+','o','*','.','x','s','d','^','v','>','<','p','h'}
我还创建了一个函数,
getMarker
,它可以实现这一点,并将其添加到MATLAB的路径中,以便我可以在所有脚本中访问它。

x=linspace(0,2*pi);
x = linspace(0, 2*pi);
y = cos(bsxfun(@plus, x(1:15:end), x'));
figure
m = {'+','o','*','.','x','s','d','^','v','>','<','p','h'};
set(gca(), 'LineStyleOrder',m, 'ColorOrder',[0 0 0], 'NextPlot','replacechildren')
plot(x, y)
y=cos(bsxfun(@plus,x(1:15:end),x'); 图形
m={'+'、'o'、'*'、'.'、'x'、's'、'd'、'^'、'v'、'>'、'是的,有一个现成的方法:它是LineStyleOrder axis属性。要激活它,必须禁用ColorOrder属性,该属性优先于前者,默认情况下被激活。您可以执行以下操作:

m = {'+','o','*','.','x','s','d','^','v','>','<','p','h'};
set_marker_order = @() set(gca(), ...
    'LineStyleOrder',m, 'ColorOrder',[0 0 0], ...
    'NextPlot','replacechildren');

以下内容也有帮助

功能测试图

x=0:0.1:10;
y1=sin(x);
y2=cos(x);
m = ['h','o','*','.','x','s','d','^','v','>','<','p','h'];

plot(x,y1,[m(1)])
hold on;
plot(x,y2,[m(2)])
x=0:0.1:10;
y1=sin(x);
y2=cos(x);

m=['h'、'o'、'*'、'.'、'x'、's'、'd'、'^'、'v'、'>'、'我正在使用一个简单的过程为绘图随机创建新样式。虽然这不是一个真正的迭代,但有人可能会发现它很有用:

function [styleString] = GetRandomLineStyleForPlot()
% This function creates the random style for your plot
% Colors iterate over all colors except for white one
  markers = {'+','o','*','.','x','s','d','^','v','>','<','p','h'};
  lineStyles = {'-', '--', ':', '-.'};
  colors = {'y', 'm', 'c', 'r', 'g', 'b', 'k'};
  styleString = strcat(markers(randi(length(markers), 1) ), ...
                lineStyles(randi(length(lineStyles), 1) ), ...
                colors(randi(length(colors), 1) ) );

end
函数[styleString]=GetRandomLineStyleForPlot()
%此函数用于创建绘图的随机样式
%颜色在除白色以外的所有颜色上迭代

markers={'+'、'o'、'*'、'.'、'x'、's'、'd'、'^'、'v'、'>'、'是的,我正在使用plot,而且我也熟悉您描述的这种方法。不过,我希望会有一些更通用的方法。我在for循环中生成我的plot,并将句柄设置为它。我已经成功地获得了由可能的标记组成的表的正确解决方案,然后使用
集(h,'标记',标记(j))
请记住索引j小于标记表的大小。但是有没有现成的生成方法可以做到这一点。这看起来与我的解决方案非常相似。但是感谢您记住我生成函数的可能性。有人知道只需调用plot一次就可以了吗?我问了一个关于传递ar的问题这里的线条样式光线:谢谢你的回答,它可以工作。但是,如果我将颜色顺序更改为[10;0 1 0;0 0 1],它将不再工作。你知道为什么吗?好吧,你可以设置线条样式顺序和颜色顺序中的任何一个,而不是两个。谢谢你的回答,它可以工作。但是,如果我将颜色顺序更改为[10;0 1 0;0 1]它不再工作了。你知道为什么吗?
x=0:0.1:10;
y1=sin(x);
y2=cos(x);
m = ['h','o','*','.','x','s','d','^','v','>','<','p','h'];

plot(x,y1,[m(1)])
hold on;
plot(x,y2,[m(2)])
function [styleString] = GetRandomLineStyleForPlot()
% This function creates the random style for your plot
% Colors iterate over all colors except for white one
  markers = {'+','o','*','.','x','s','d','^','v','>','<','p','h'};
  lineStyles = {'-', '--', ':', '-.'};
  colors = {'y', 'm', 'c', 'r', 'g', 'b', 'k'};
  styleString = strcat(markers(randi(length(markers), 1) ), ...
                lineStyles(randi(length(lineStyles), 1) ), ...
                colors(randi(length(colors), 1) ) );

end