【问题标题】:Plot with variable background color具有可变背景颜色的绘图
【发布时间】:2014-03-27 13:10:18
【问题描述】:

我正在绘制折线图,​​其中 x 轴代表时间线。某些数据范围应标记为不可靠。为了显示这一点,将这些 x 范围上的背景颜色更改为一些黄色或红色会很棒。有没有这样的选择?

我知道我们可以使用 gscatter 代替 gplot 来使用颜色。但是只有数据是彩色的,而不是背景,我没有得到折线图而是点图。彩色数据是可以接受的替代方案,但我需要折线图。

【问题讨论】:

    标签: matlab matlab-figure


    【解决方案1】:

    总是可以绘制一个填充的多边形图。试试吧,

    a = 0:0.1:1;
    b = a;
    figure;
    plot(a,b,'r');
    hold on;
    x = [0 0 1 1 0];
    y = [0 1 1 0 0];
    h = fill(x,y,'g');
    set(h,'FaceAlpha',0.1); % or alpha(h,0.1); would also work
    

    【讨论】:

    • 好的,差不多就解决了。问题是我不知道 y 值可能有多大。图形是否仍然适合数据并且多边形检测图形的高度并完全填充窗口是否有可能?我不想使用 ylim。
    • 我不知道你的意思,你能不能不将多边形的范围设置为绘制图形的范围?即使它不是您评论的答案,请注意您也可以绘制多个多边形。
    • 问题是我不知道绘制图形的 y 范围将如何。当然,我可以遍历所有数据进行绘图以找到最大值,然后使用 ylim 将图形固定到这个最大值,并将这个 y 值也用于多边形。但这是我想避免的,如上所述。而且我不能将多边形的 y 限制设置得任意高,因为图形比例将适合多边形而不是数据。
    • 如果你想拥有一种以上的颜色,没有办法做到这一点,而且你也不能设置 alpha 通道。但是请注意,如果需要,可以设置 xlimylim。另外我不知道你为什么不知道你的范围。您可以最后绘制多边形,然后您应该知道所有数据值。还是您是递归执行此操作?
    • 好的,很高兴知道。但正如我在两个 cmets 中所写的,我想避免使用 ylim。如上所述,我可以通过计算我想要避免的整个数据集的最大值来获得范围 - 如果我愿意这样做,我也可以使用 ylim。
    猜你喜欢
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多