在matlab中优化曲面图的颜色映射

在matlab中优化曲面图的颜色映射,matlab,matlab-figure,Matlab,Matlab Figure,我正在尝试优化下面显示的曲面上的颜色。我如何调整台阶?使用caxis([-450,-100])使步长线性等于100。如何在曲面图上获得平滑的颜色?我一直在网上读到这方面的消息,但我做不到,所以我问。多谢各位 这些参数可以帮助您获得更平滑的绘图: 颜色贴图中的颜色数 曲面数 表面是如何着色的 这是一个简单的演示,显示了每个参数如何影响生成的绘图: colorbar; colormap hot; x = colorbar; caxis([-450,-100]); x = set(x,'YTick

我正在尝试优化下面显示的曲面上的颜色。我如何调整台阶?使用
caxis([-450,-100])
使步长线性等于
100
。如何在曲面图上获得平滑的颜色?我一直在网上读到这方面的消息,但我做不到,所以我问。多谢各位


这些参数可以帮助您获得更平滑的绘图:

  • 颜色贴图中的颜色数
  • 曲面数
  • 表面是如何着色的
这是一个简单的演示,显示了每个参数如何影响生成的绘图:

colorbar;
colormap hot;
x = colorbar;
caxis([-450,-100]);
x = set(x,'YTick',-450:25:-100);
ax = gca;
ax.XAxis.Label.String='x';
ax.YAxis.Label.String='y';
set(gca,'YTick',[0 5 10 15 20 25 30 35 40 45 50 55 60]);
set(gca,'XTick',[0 5 10 15 20])
set(gcf,'Color','cyan');
这是输出:

颜色贴图中的颜色数 你已经知道:

颜色贴图的大小决定了颜色之间过渡的平滑程度。具有少量颜色的颜色贴图在颜色之间有明显的过渡。较大的颜色贴图可提供更平滑的颜色过渡

但它可能不会对你的情况做出任何改变,所以继续阅读

曲面数 正如您在上面的示例代码中所看到的,将为两个不同数量的曲面绘制曲线图。在第一行和第三行中,绘制了由
15×15
曲面组成的网格,而在第二行和第四行中,绘制了
40×40
曲面()。看起来您的数据是一个5乘13的矩阵。如果有一个函数在每个(x,y)上给出z值,请尝试绘制更多曲面

表面是如何着色的 您可以看到第一列和第二列之间的差异。这就是曲面对象的形状如何改变其外观

“平坦”
-使用统一的面部颜色。使用
CData
值。第一个顶点处的颜色数据确定整个面的颜色

“interp”
-插入面部颜色。每个顶点的CData值的双线性插值决定了颜色

如果没有生成更多曲面的功能,并且颜色的线性插值还不够,该怎么办? 您可以使用该函数生成更多点。这是一个示例:

f = @(mnp, n, facecolor){ subplot(mnp); ...
    surf(peaks(n), 'edgecolor', 'none', ...
    'facecolor', facecolor); view(2); ...
    title(sprintf('Grid: %d x %d, FaceColor: %s', n, n, facecolor)); ...
    colorbar};
f(221, 15, 'flat');
f(222, 15, 'interp');
f(223, 40, 'flat');
f(224, 40, 'interp');
colormap(jet(10))
figure
f(221, 15, 'flat');
f(222, 15, 'interp');
f(223, 40, 'flat');
f(224, 40, 'interp');
colormap(jet(100))
结果是:


您所说的平滑颜色是什么意思?您希望看到什么?设置颜色贴图的大小颜色贴图的大小决定了颜色之间过渡的平滑程度。具有少量颜色的颜色贴图在颜色之间有明显的过渡。较大的颜色贴图可提供更平滑的颜色过渡。要更改colormap中的颜色数,请向内置colormap传递一个整数值。这不是平滑的:但这是平滑的:所以,我所说的“平滑颜色”实际上是指:颜色之间的平滑过渡。创建曲面的代码在哪里?您发布的大多数代码与问题无关(即设置所有标签和记号)。
% original data (7 by 7)
[X,Y] = meshgrid(-3:3);
Z = peaks(X,Y);

% cubic interpolation of original data(61 by 61)
[XI,YI] = meshgrid(-3:.1:3);
ZI = interp2(X,Y,Z,XI,YI,'cubic');

% plot data (both original and interpolated)
subplot(121);
surf(X, Y, Z, 'edgecolor', 'none'); 
view(2);axis square
subplot(122);
surf(XI, YI, ZI, 'edgecolor', 'none', 'facecolor', 'interp'); 
view(2);axis square
colormap(hot(300))