在 MATLAB 绘图中为垂直条形区域着色

Posted

技术标签:

【中文标题】在 MATLAB 绘图中为垂直条形区域着色【英文标题】:Shade a vertical strip Area in a MATLAB Plot 【发布时间】:2016-08-03 11:14:04 【问题描述】:

我需要在 MATLAB 图中对垂直线之间的垂直条区域进行着色。 我需要对黑色曲线、红色、蓝色和绿色线所覆盖的部分进行着色。

我试过Here的例子

如果需要剧情数据,请告诉我我会上传。

【问题讨论】:

你已经尝试了这个例子。你这样做的时候取得了什么成就?输出看起来如何?请展示您尝试过的内容。是的,样本数据非常感谢,请查看minimal reproducible example。 您要对图中黑色曲线上方或下方的部分进行着色吗? 此外,您在帖子中引用的示例中拥有所需的一切。只要您不显示您尝试过的内容以及确切的问题出在哪里,就应该将其作为重复项关闭 How do I fill in the area between two lines and a curve that's not straight in MATLAB (the region is not a polygon)的可能重复 【参考方案1】:

我想这就是你要找的东西:

% some arbitrary data
x = -10:0.1:10;
y = abs(x).^0.5;
xleft = 0.5;
xright = 4;
fillStart = find(x>=0.5,1);
fillEnd = find(x>=4,1);
top = 2.5;
% plotting the lines
plot(x,y,'k',...
    x,ones(1,length(x))*top,'r',...
    ones(1,length(y)).*xleft,y,'g',...
    ones(1,length(y)).*xright,y,'b')
hold on
% filling the area
area(x(fillStart:fillEnd),y(fillStart:fillEnd),top, ...
    'EdgeColor', 'none', 'FaceColor', [0.5 0.5 0.5],'ShowBaseLine','off')
hold off

创建这个:

【讨论】:

【参考方案2】:

虽然不完全是您所追求的,(您需要各自行的方程式)这样的东西应该可以工作

x = -5:0.1:5;
y = sqrt(abs(x));
figure
hold on
fill([2, 4, 4, 2], [0, 0, 2, 2], 'g')
plot(x,y)

来自fill 文档

fill(X,Y,C) 填充由向量 X 和 Y 定义的二维多边形 具有 C 指定的颜色。多边形的顶点 由 X 和 Y 的成对分量指定。如有必要, 通过将最后一个顶点连接到第一个顶点来闭合多边形。

【讨论】:

以上是关于在 MATLAB 绘图中为垂直条形区域着色的主要内容,如果未能解决你的问题,请参考以下文章

放大绘图轴自定义区域MATLAB 代码

放大绘图轴自定义区域MATLAB 代码

高亮部分matlab绘图

科学计算可视化

matlab里面mesh绘图,如何改变指定区域的颜色

Matplotlib 库 : 绘图和可视化