MATLAB画图技巧与实例(二十七):曲面图下的等高线图surfc函数

您所在的位置:网站首页 matlab怎样画图片的等高线 MATLAB画图技巧与实例(二十七):曲面图下的等高线图surfc函数

MATLAB画图技巧与实例(二十七):曲面图下的等高线图surfc函数

2024-04-21 07:26| 来源: 网络整理| 查看: 265

本文讲述 surfc 函数,用于绘制曲面图下的等高线图。顾名思义,surfc 函数取自 surf 函数+ contour 函数,即同一图中,既表现曲面,又绘制等高线

在平时科研学习中,偶尔能见到。

为了大家方便观看,从本文开始,对重要的三维图形将追加GIF动画,以更好地呈现三维图形。

1 surfc函数

1.1 用法

surfc(X,Y,Z) surfc(X,Y,Z,C) surfc(Z) surfc(Z,C) surfc(ax,___) surfc(___,Name,Value) sc = surfc(___)surfc(X,Y,Z) 创建一个三维曲面图,其下方有等高线图。曲面图是一个具有实色边和实色面的三维曲面。该函数将矩阵 Z 中的值绘制为由 X 和 Y 定义的 x-y 平面中的网格上方的高度。曲面的颜色根据 Z 指定的高度而变化。此外,surfc(X,Y,Z,C) 还指定曲面的颜色。surfc(Z) 创建一个曲面和等高线图,并将 Z 中元素的列索引和行索引分别用作 x 坐标和 y 坐标。此外,surfc(Z,C) 还指定曲面的颜色。surfc(ax,___) 将图形绘制到 ax 指定的坐标区中,而不是当前坐标区中。指定坐标区作为第一个输入参数。surfc(___,Name,Value) 使用一个或多个名称-值对组参数指定曲面属性。例如,'FaceAlpha',0.5 创建半透明曲面。sc = surfc(___) 返回包含图曲面对象和等高线对象的图形数组。使用 sc 修改所创建的曲面图和等高线图。有关属性列表,请参阅 Surface 属性 和 Contour 属性。[1]

注意,surfc 函数的具体用法和 surf 函数基本完全一致,可参考曲面图surf函数。

1.2 示例1

clc %更多文章,https://zhuanlan.zhihu.com/p/345799328 close all clear all num = 50; x = linspace(-3, 3, num); y = linspace(-3, 3, num); [X, Y] = meshgrid(x, y); Z = peaks(X,Y); surfc(X, Y, Z)surfc函数surf函数

上面两图分别为 surfc 和 surf 函数绘制的图形。曲面图完全一致,不同点在于 surfc 函数的下方多了等高线图

动图视角如下

动图

1.3 示例2

可以对图形属性进行修改,通过句柄完成,由

s = surfc(X, Y, Z);

获得句柄,其一共包含两个变量,即

s(1) = surface; s(2) = contour;

对于曲面 surface 的属性设置,在曲面图surf函数中已经描述得非常详细了,里面包括对颜色、面和边等的设置,可以参考。

这里主要讲contour的设置。输入

s(2)

就能查看相关属性了。例如,填充区域且更改等高线的数目

clc %更多文章,https://zhuanlan.zhihu.com/p/345799328 close all clear all num = 50; x = linspace(-3, 3, num); y = linspace(-3, 3, num); [X, Y] = meshgrid(x, y); Z = peaks(X,Y); s = surfc(X, Y, Z); s(2).Fill = 'on'; s(2).LevelList = linspace(min(min(Z)), max(max(x)), 3); s(2).LineWidth = 2;均分三条等高线均分20条等高线

同时修改曲面和等高线属性

clc %更多文章,https://zhuanlan.zhihu.com/p/345799328 close all clear all num = 50; x = linspace(-3, 3, num); y = linspace(-3, 3, num); [X, Y] = meshgrid(x, y); Z = peaks(X,Y); s = surfc(X, Y, Z); s(2).Fill = 'on'; s(2).LevelList = linspace(min(min(Z)), max(max(x)), 4); s(2).LineWidth = 2; s(1).FaceAlpha = 0.95; s(1).FaceColor = 'interp'; s(1).EdgeColor = 'none';

动图效果如下

动图

MATLAB帮助文档说可以调整等高线的位置,但是我在 R2017 和 R2019 两个版本均没有找到设置,回头有空查查 R2020 和 R2021 版本是否有。

持续更新,更多文章请见专栏和目录

专栏:MATLAB科学绘图

MATLAB画图技巧与实例:目录

MATLAB画图技巧与实例(一):常用函数

参考^MATLAB帮助文档 https://ww2.mathworks.cn/help/matlab/ref/surfc.html


【本文地址】


今日新闻


推荐新闻


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