【问题标题】:Erase area of matlab plot a posteriorimatlab的擦除区域绘制后验
【发布时间】:2017-06-14 03:55:11
【问题描述】:

是否可以在不直接操作您输入到绘图的数据的情况下擦除绘图的某个区域(后验)?

例如y=x 下方的区域,而上方的区域保持不变。

【问题讨论】:

  • 不知道怎么回事,但是是什么样的情节?只是线条?也许一个带有生成它的代码的示例图会很有用(编辑您的问题)
  • 有几种方法可以做到这一点,但哪种方法最好在很大程度上取决于您要隐藏什么?它有什么形状?它受函数约束吗?它与轴中的位置有关吗?你如何定义要隐藏的区域?
  • 我目前正在使用等高线图,我想隐藏低于某个曲线的绘制水平部分,很可能是 y=x
  • 使用逻辑索引来设置条件会更容易仅绘制所需区域。向我们展示您调用绘图的代码行,我们可以向您展示如何实现这一点。
  • 它必须是后验的:我已经对逻辑操作进行了编码,以便从图中消除不需要的值。然而,等高线图进行了一种“图形插值”来正确绘制水平,但会穿过不需要的区域,尽管那里没有点。

标签: matlab matlab-figure


【解决方案1】:

您可以使用带有白色面部颜色的area 来空白给定线下方的绘图区域:

t = linspace(0,20,500);
plot(t, sin(t)) % example plot
yl = ylim;
hold on
y = .4 - t * .05; % example limit line
area(t, y, yl(1), 'Facecolor', 'w', 'edgecolor', 'none');

【讨论】:

  • 什么是 yl 或 ylim?
  • ylim 返回 y 轴的范围。这些被分配给变量yl,以便以后可以在区域创建中使用。
  • 对不起,它不起作用。它会删除 ylim (这是一个数字)下面的所有内容。但不能低于 y,即曲线
  • 它确实有效,但我失去了等高线图不同级别的颜色
【解决方案2】:

这是一种通过仅绘制所需内容并将所有其他值替换为 nan 的方法:

[X,Y,Z] = peaks;
Z(X>Y) = nan;
contour(X,Y,Z,20)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-27
    • 2013-09-14
    • 2015-09-29
    • 2016-09-14
    • 2012-04-11
    • 1970-01-01
    相关资源
    最近更新 更多