Matlab绘图 - 不能在一个plot()命令中使用多个绘图的“MarkerEdgeColor”,“MarkerFaceColor”或“MarkerSize”

时间:2014-05-13 22:12:34

标签: matlab plot

这有效:

plot(t, pa_iso, '-rs', 'MarkerEdgeColor', 'k', 'MarkerFaceColor', 'r', 'MarkerSize', 5);
plot(t, pc_iso, '-gs', 'MarkerEdgeColor', 'k', 'MarkerFaceColor', 'g', 'MarkerSize', 5);
plot(t, pa_comp, '-bs', 'MarkerEdgeColor', 'k', 'MarkerFaceColor', 'b', 'MarkerSize', 5);
plot(t, pc_comp, '-ms', 'MarkerEdgeColor', 'k', 'MarkerFaceColor', 'm', 'MarkerSize', 5);

这有效:

plot(t, pa_iso, '-rs', ...
     t, pc_iso, '-gs', ...
     t, pa_comp,'-bs', ...
     t, pc_comp,'-ms');

但我想做的是:

plot(t, pa_iso, '-rs', 'MarkerEdgeColor', 'k', 'MarkerFaceColor', 'r', 'MarkerSize', 5, ...
     t, pc_iso, '-gs', 'MarkerEdgeColor', 'k', 'MarkerFaceColor', 'g', 'MarkerSize', 5, ...
     t, pa_comp, '-bs', 'MarkerEdgeColor', 'k', 'MarkerFaceColor', 'b', 'MarkerSize', 5,...
     t, pc_comp, '-ms', 'MarkerEdgeColor', 'k', 'MarkerFaceColor', 'm', 'MarkerSize', 5);

并抛出错误:

Error using plot:
    String argument is an unknown option.

出于某种原因,当我连接这些图时,Matlab并不喜欢。我会使用第一个选择,但问题是即使我指定要使用的数字,它也不会在同一个数字上绘图。他们只是在单独的数字上绘图,这对我没用。如何在同一绘图命令中为每个绘图指定不同的标记边缘颜色,面颜色和大小?

2 个答案:

答案 0 :(得分:4)

  

出于某种原因,当我连接这些图时,Matlab不喜欢。

呀。这个原因appears in the documentation(我已经添加了重点格式):

  

plot( _ ,Name,Value)使用一个或多个 Name,Value 对参数指定lineseries属性。将此选项与先前语法中的任何输入参数组合一起使用。 名称,值对设置适用于绘制的所有线条。 您无法使用此语法为每行指定不同的名称,值

您可以将上述语法与the following valid syntax for set结合使用,实现您想要的目标:

  

set(H,pn,MxN_pv)在每个m个图形对象上设置n个属性值,其中m = length(H),n等于单元格中包含的属性名称数数组 pn 这允许您将给定的属性组设置为每个对象上的不同值

使用此代码:

h = plot(t, pa_iso,  '-rs', ...
         t, pc_iso,  '-gs', ...
         t, pa_comp, '-bs', ...
         t, pc_comp, '-ms', 'MarkerEdgeColor', 'k', 'MarkerSize', 5);
         %// set linespec as well as common properties. And get a handle
set(h, {'MarkerFaceColor'} , {'r';'g';'b';'m'})
%// Set other, differing properties

答案 1 :(得分:1)

你想要的是:

plot(t, pa_iso, '-rs', ... stuff ...); hold on
plot(t, pc_iso, '-gs', ... stuff ...); hold on
plot(t, pa_comp, '-bs', ... stuff ...); hold on
plot(t, pc_comp, '-ms', ... stuff ...); hold off

hold on保持轴处理下一个绘图,所以你得到的所有内容都在同一个图中。