目录
样式一、有颜色线图
% 定义任意区域的网格数据
[x, y] = meshgrid(-5:0.1:5, -5:0.1:5);
% 定义任意区域的函数
z = x.^2 + y.^2;
% 绘制云图
contour(x, y, z, 'LineWidth', 2);
xlabel('X轴');
ylabel('Y轴');
title('任意区域的云图');
grid on;
%让X轴和Y轴比例尺相同
axis image
样式二、设置等高线云图
syms x y
%网格密度,决定图像是否光滑
n1=20;
%坐标边界
[min_x,max_x,min_y,max_y]=deal(0,1,0,1);
inc=(max_x-min_x)/n1;
xx=min_x:inc:max_x;
yy=min_y:inc:max_y;
[X,Y]=meshgrid(xx,yy);
f=100*(X.^2+Y.^2);
figure
% contourf(X,Y,f')
[C,h]=contourf(X,Y,f,[90 80 70 60 50 40 30 20 -10],'ShowText','on');%设置等高线
clabel(C,h,'fontsize',12)%等高线标签字号大小
shading interp
colorbar
set(gca,'FontSize',12)%坐标轴字号大小
% set(gca,'YDir','normal') %反转Y轴
title('Temperature (℃)','FontSize',12);
colormap( jet)
% parula 蓝黄图 turbo蓝黑红 Hot 白黑红 gray灰图 jet蓝黑红 White线图
% 坐标轴设置---------------------------------------------
% % % set(gca, 'xTick', [0:6:24]);
% % % set(gca,'XTickLabel',{'00:00','06:00','12:00','18:00','24:00'})
% % % set(gca, 'FontSize', 18);
% % % xlim([0, 24])
%添加横坐标名---------------------------------------------
xlabel('x(m)')
ylabel('y(m)')
样式三、限定范围显示云图
限定下图的范围显示云图
x=linspace(0,1,1000);
y=linspace(0,1,1000);
num=length(y);
[X,Y]=meshgrid(x,y); % 产生网格数据并处理
f =100*(X.^2+Y.^2); % 对应的第三维数据
%限定云图范围
for i=1:num
for j=1:num
if Y(i,j)>(5/3-5/3*X(i,j))
f(i,j) = NaN;
end
end
end
figure % 有等高线的pcolor
[C,h]=contourf(X,Y,f,[90 80 70 60 50 40 30 20 -10],'ShowText','on');%设置等高线
clabel(C,h,'fontsize',12)%等高线标签字号大小
shading interp
colorbar
set(gca,'FontSize',12)%坐标轴字号大小
title('Temperature (℃)','FontSize',12);
colormap( jet)
xlabel('x(m)')
ylabel('y(m)')
注意网格必须划的足够密,否则云图有锯齿。
样式四、三维云图绘制
X = [0, 1, 0, 1, 0, 1, 0, 1]; % 示例x坐标
Y = [0, 0, 1, 1, 0, 0, 1, 1]; % 示例y坐标
Z = [0, 0, 0, 0, 1, 1, 1, 1]; % 示例z坐标
T = [20, 30, 25, 35, 22, 32, 28, 38]; % 对应节点的温度值
% 创建三维插值函数
F = scatteredInterpolant(X', Y', Z', T', 'linear', 'none'); % 插值方法:线性
% 创建规则网格
nx = 30; % x方向网格数
ny = 30; % y方向网格数
nz = 30; % z方向网格数
xq = linspace(min(X), max(X), nx);
yq = linspace(min(Y), max(Y), ny);
zq = linspace(min(Z), max(Z), nz);
[Xq, Yq, Zq] = meshgrid(xq, yq, zq);
% 计算规则网格上的温度值
Tq = F(Xq, Yq, Zq);
% 绘制三维温度云图
figure;
% 使用切片 (slice) 显示三维温度分布
slice(Xq, Yq, Zq, Tq, ...
[min(Xq), mean(Xq), max(Xq)], ... % 在 x 方向的切片位置
[min(Yq), mean(Yq), max(Yq)], ... % 在 y 方向的切片位置
[min(Zq), mean(Zq)]); % 在 z 方向的切片位置
shading interp; % 插值显示
colormap(jet); % 颜色映射
colorbar; % 添加颜色条
title('三维温度云图');
xlabel('X方向');
ylabel('Y方向');
zlabel('Z方向');
如有更好的方法欢迎私聊交流!