【发布时间】:2013-11-27 04:33:47
【问题描述】:
考虑到 z 矩阵元素的大小,我有必要在 MATLAB 中仅用 2 种颜色绘制等高线图。
通过轮廓我可以做到这一点,但我不知道如何通过元素的大小来绘制它。例如 我想如果 z_ij 大于 0.5,颜色为绿色,否则为黄色。我怎么能这样做?
感谢您的帮助。
【问题讨论】:
考虑到 z 矩阵元素的大小,我有必要在 MATLAB 中仅用 2 种颜色绘制等高线图。
通过轮廓我可以做到这一点,但我不知道如何通过元素的大小来绘制它。例如 我想如果 z_ij 大于 0.5,颜色为绿色,否则为黄色。我怎么能这样做?
感谢您的帮助。
【问题讨论】:
您可以创建仅包含绿色和黄色 2 种颜色的颜色图。然后使用 colormap(cmap) 函数将其应用于图形。将当前坐标区的 CLim 属性居中在 0.5 附近。尝试运行以下示例,
[X,Y,Z] = peaks(30);
figure;
contourf(X,Y,Z);
cMap = [0 1 0;1 1 0]; % [green;yellow] on rgb-color
colormap(cMap);
set(get(gcf,'CurrentAxes'),'CLim',[-2 3]);
colorbar;
如果您想调整比例以使最大值和最小值成为您的值的最大值和最小值,那就有点复杂了。解决它的一种方法可能是获取颜色条句柄并手动更改 YTickLabel(或者通过创建设置刻度标签的代码)。或者将 CLim 设置得如此之高,以至于您可以手动更改颜色条上的 YLim 而不会留下彩色间隔(例如 max(abs(data-0.5)),它可以让您降低 YLim 的一侧)。试试吧,
[X,Y,Z] = peaks(30);
figure;
contourf(X,Y,Z);
cMap = [0 1 0;1 1 0]; % [green;yellow] on rgb-color
colormap(cMap);
set(get(gcf,'CurrentAxes'),'CLim',[-2 3]);
h = colorbar;
set(h,'YLim',[-2 1]);
pause on;
pause;
pause off;
set(h,'YLim',[-3 4]);
【讨论】: