在 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 绘图中为垂直条形区域着色的主要内容,如果未能解决你的问题,请参考以下文章