matlab如何画填充的图?

您所在的位置:网站首页 matlab画好几个图 matlab如何画填充的图?

matlab如何画填充的图?

2023-03-14 01:44| 来源: 网络整理| 查看: 265

我有一个笨笨的办法。

首先,这种方法对于曲线完全位于 x 轴上方有效。

使用的函数是 fill,

看一下一个简单的示例

x = [0,1,1,0]; y = [1,2,0,0]; fill(x,y,'b') xlim([-1,2]) ylim([-1,3]) axis square

理解一下,就是

x = [0,1,1,0]; y = [1,2,0,0];

给了四个点的坐标 (0,1),(1,2),(1,0),(0,0),也就是图中红色的四个点,顺序是顺时针。

这个顺序比较重要,当然你逆时针也行,但总是最终fill填充的按顺序包围的区域。

那么复杂一点,我怎么绘制 \cos(x)+1.2 并把它和x轴之间的区域填充呢?

x = linspace(0,2*pi,2^3); y = cos(x)+1.2; mycolor = 249/255*[1 1 1]; fill([x,2*pi,0],[y,0,0],mycolor) xlim([-1,7])

思路就是在 \cos(x) 上采样一些点,然后再加上x坐标轴上的两个点构成一个封闭的多边形,然后对它填充颜色即可。

fill可以使用一个rgb三元组来定义一个颜色,上面我就用了一个灰色。

上面的图中只采样了8个点,我们看看更多点会如何。

这张图中是在上面的程序中修改了

x = linspace(0,2*pi,2^8);

所以看起来像是把曲线下方全部填充了一样。

那么多个图形,我们只要分别设定他们的填充颜色以及绘制的先后顺序即可。下面画了一个例子

figure; x = linspace(0,2*pi,2^9); y1 = cos(x-1)+1.2; y2 = cos(x)+1.5+0.2*rand(1,length(x)); y3 = cos(x+pi/2)+2; mycolor = [[140 199 181]/255;180/255*[1 1 1];[244 244 200]/255]; y_total = [y3;y2;y1]; for ii = 1:3 h = fill([x,2*pi,0],[y_total(ii,:),0,0],mycolor(ii,:)); h.LineStyle='-.'; hold on; end xlim([0,2*pi])

颜色上么,虽然我觉得不太好看,但是效果,em,就是这么个效果



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3