【问题标题】:Vary color across plot points跨绘图点改变颜色
【发布时间】:2015-02-18 21:01:15
【问题描述】:

以下代码绘制了 3 个点,全部为红色:

a = reshape([92.571251 94.869889 97.283709 ],[3  1]);
b = reshape([271.000000 296.000000 330.000000 ],[3  1]);
c = reshape([0.916000 0.766000 0.562000 ],[3  1]);
figure(100);
line(b,a,...
    'MarkerFaceColor',[1 0 0],...
    'Marker','o',...
    'LineStyle','none',...
    'Color',[1 0 0]);

有没有办法让我使用“c”对“颜色”绘图样式的红色部分进行矢量化,以便第一个点使用 c(1) 替换 1,使颜色为 [0.916 0 0],等等?

注意:此代码是一个更大的东西的 sn-p,它可能会随着时间的推移在同一个图上绘制 100 或 1000 个点。我需要在将每个点放置在图上时设置每个点的颜色,然后在添加其他点时不改变。 (如果可能)

我认为彩色地图不合适,因为我可能会在不同时间在相同的 X、Y 坐标上绘制点。有时它们会很亮,有时会很暗。

只是尽量不使用相对简单的循环。

谢谢!

【问题讨论】:

    标签: matlab


    【解决方案1】:

    要对点着色(并且只着色点,而不是中间的线),您可以使用 scatter 函数的 MarkerFaceColor 属性(或 3D 中的 scatter3)。

    例如:

    scatter(a, b, 'MarkerFaceColor', rgb)
    

    其中 rgb 是 RGB 三元组,或

    scatter(a, b, 'MarkerFaceColor', 'flat', 'CData', c)
    

    c 是一个值向量。在这种情况下,颜色被映射到当前颜色图上,并且范围由caxis 控制。

    如果你想在你的点之间有线条,你可以简单地使用这样的代码:

    hold on
    plot(a, b, '-')
    scatter(...)
    

    最好的,

    【讨论】:

    • 无法在此处进行准确的响应,但指向 scatter 的指针导致使用“scatter(a, b,[], col3, 'filled');" 开始解决方案其中 col 是 rgb 三元组, [] 表示跳过设置大小。我认为 scatter 会做我需要的,所以我按原样接受你的答案,并会尝试让它在以后真正起作用。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-07-11
    • 2012-01-23
    • 2023-03-22
    • 1970-01-01
    • 2016-03-13
    • 1970-01-01
    • 2017-08-01
    • 1970-01-01
    相关资源
    最近更新 更多