【问题标题】:MATLAB: line specification marker sizeMATLAB:线规范标记大小
【发布时间】:2012-02-08 00:05:37
【问题描述】:

当同时使用线规范 (X,Y,linespec) 三联体和 (PropertyName,PropertyValue) 双联体绘制多个数据系列时,只能指定单个 MarkerSize 并且此大小适用于所有数据系列。例如,

plot(X1,Y1,'.b',X2,Y2,'-r','MarkerSize',5)

是否可以为每个不同的数据系列指定不同的MarkerSize,而无需单独绘制数据系列或随后更改绘图句柄属性?以下两个命令均无效,但它们给出了所需结果的概念:

plot(X1,Y1,'.b',X2,Y2,'-r','MarkerSize',[5 10])
plot(X1,Y1,'.b','MarkerSize',5,X2,Y2,'-r','MarkerSize',10)

【问题讨论】:

    标签: matlab


    【解决方案1】:

    试试:

    h = plot(X1,Y1,'.b',X2,Y2,'*r');
    set(h(1),'MarkerSize',5);
    set(h(2),'MarkerSize',2);
    

    【讨论】:

    • 谢谢乔纳特。那可行。您认为不可能在一行中指定所有内容吗?干杯。
    • 我不知道一个简单的方法来做到这一点。如果有人知道,我很想知道。
    【解决方案2】:

    您可以使用scatter。它具有SizeData 属性,它是一个向量。

    x = rand(10,1);
    y = rand(10,1);
    s = scatter(x,y);
    set(s,'SizeData',linspace(1,100,10))
    

    如果你想用带标记的线图,你可以画你的图,使用hold on,然后在上面画scatter

    【讨论】:

    • 谢谢@Andrey。我希望能够为每个不同的数据系列选择不同的线系列属性,plot 允许但 scatter 不幸的是不允许。例如,x=1:5; y=6:10; z=11:15; h=plot(x,x,'ok',y,y,'or',z,z,'ob'); set(h,'SizeData',[10 50 90]) 会很好,但 plot 没有 SizeData 属性。理想情况下,这会将大小10 应用于x 数据,50 应用于y 数据,并将90 应用于z 数据。
    【解决方案3】:

    大概是这样

    plot(x1,0,'+','MarkerSize',10)
    

    或循环内的任何其他情节只是

    plot(x?, 0, '+', 'MarkerSize', 10, 'MarkerEdgeColor', 'r')
    

    【讨论】:

    • 从另一个解决方案中找到这个
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-15
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    • 1970-01-01
    • 2021-10-06
    相关资源
    最近更新 更多