转载自

http://mirlab.org/jang/books/matlabProgramming4beginner/04-3_colorControl.asp?title=4-3%20%A6%B1%AD%B1%C3C%A6%E2%AA%BA%B1%B1%A8%EE

4-3 曲面顏色的控制

利用 colorbar 指令,可顯示 MATLAB 如何以不同顏色來代表曲面的高度,例如若先輸入「peaks」,再輸入「colorbar」,就可以得到下列圖形:

Example 1: 04-三維立體繪圖/colorbar01.m peaks;colorbar; z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ... - 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ... - 1/3*exp(-(x+1).^2 - y.^2)

如上圖所示,colorbar 可以顯示高度與顏色的對照長條圖,而曲面上每一個小方塊的顏色即根據此對照圖而得出。事實上,顏色與高度的對應關係是由一個「顏色對應表」(Colormap,或簡稱「色表」或「色盤」)來控制,此表是一個 m×3 的矩陣,m 的值通常是 64,代表真正用到的顏色個數,而每一列代表一個顏色的 RGB 值,一些常用的值可列表如下:

顏色 Red(紅色) Green(綠色) Blue(藍色)
black(黑) 0 0 0
white(白) 1 1 1
red(紅) 1 0 0
green(綠) 0 1 0
blue(藍) 0 0 1
yellow(黃) 1 1 0
magenta(錳紫) 1 0 1
cyan(青藍) 0 1 1
gray(灰) 0.5 0.5 0.5
dark red(暗紅) 0.5 0 0
copper(銅色) 1 0.62 0.4
aquamarine(碧綠) 0.49 1 0.83

MATLAB 預設的顏色對應表可由 colormap 得知,如下:

Example 2: 04-三維立體繪圖/colormap01.m cm=colormap;size(cm) ans = 64 3

由上可知 cm 是一個 64×3 的矩陣,因此 MATLAB 在畫圖時,會把 cm 第一列的顏色設定給曲面的最高點,把 cm 的最後一列的顏色設定給曲面的最低點,其餘高度的顏色則依線性內插法來決定。因此,我們只要改變顏色對應表,即可得到不同顏色的曲面。欲改變顏色對應表,也是用 colormap 指令,如下:

Example 3: 04-三維立體繪圖/plotxyz13.m peaks;colormap(rand(64,3));colorbar; z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ... - 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ... - 1/3*exp(-(x+1).^2 - y.^2)

在上述範例中,我們使用亂數來產生一個 64×3 顏色對應表,因此曲面看起來並不是很賞心悅目。事實上,要產生一個好看的顏色對應表並不是件容易的事,因此 MATLAB 有一些現成的顏色對應表,整理如下:

指令 說明
colormap hsv HSV 的顏色對應表(預設值)
colormap hot 代表“熱”的顏色對應表
colormap cool 代表“冷”的顏色對應表
colormap summer 代表“夏天”的顏色對應表
colormap gray 代表“灰階”的顏色對應表
colormap copper 代表“銅色”的顏色對應表
colormap autumn 代表“秋天”的顏色對應表
colormap winter 代表“冬天”的顏色對應表
colormap spring 代表“春天”的顏色對應表
colormap bone 代表“X光片”的顏色對應表
colormap pink 代表“粉紅”的顏色對應表
colormap flag 代表“旗幟”的顏色對應表

例如,要使您的曲面使用感覺較冷的顏色,可輸入如下:

Example 4: 04-三維立體繪圖/plotxyz14.m peaks;colormap cool; colorbar z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ... - 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ... - 1/3*exp(-(x+1).^2 - y.^2)

除了以高度來設定顏色之外,surf 及 mesh 指令都可以接受第 4 個輸入引數來作為設定顏色的依據。例如,若要以曲面的斜率(即「梯度」或「Gradient」)來設定顏色,可進行如下:

Example 5: 04-三維立體繪圖/plotxyz15.m [X, Y, Z] = peaks;surf(X, Y, Z, gradient(Z));axis tight;colormap hot

在上例中,gradient (Z) 會根據數值微分(Numerical Differentiation)來產生矩陣 Z 的梯度,surf 即利用此梯度來產生曲面的顏色。欲知 gradient 的詳細資訊,可在 MATLAB 指令視窗下輸入 help gradient。

若要以曲面的曲率來設定顏色,可進行如下:

Example 6: 04-三維立體繪圖/plotxyz16.m [X, Y, Z] = peaks;surf(X, Y, Z, del2(Z));axis tight;colormap hot

在上例中,del2 (Z) 根據數值微分來產生矩陣 Z 的 discrete Laplacian,詳情可參見 help del2 傳回的線上支援。

我們可用 brighten 指令來使顏色對照表變亮或變暗,如下:

Example 7: 04-三維立體繪圖/plotxyz17.m colormap coppersubplot(3, 1, 1); rgbplot(colormap);brighten(colormap, 0.5)subplot(3, 1, 2); rgbplot(colormap);brighten(colormap, -0.8)subplot(3, 1, 3); rgbplot(colormap);

其中 rgbplot 可畫出 R、G、B 三色的比重對列數的變化。

上述 MATLAB 決定顏色的方法稱為「索引顏色」(Indexed Color)法,因為曲面上每個方塊先對應至顏色對應表的索引(即某一特定列),再由此列決定真正要用的顏色。如果您的顯示器能支援 24 位元全彩,則我們可以直接定義一千六百萬(224)種顏色,而不需要再定義顏色對應表。此種方法稱為「真實顏色」(True Color)法,如下:

Example 8: 04-三維立體繪圖/plotxyz18.m Z = peaks(50);C(:, :, 1) = rand(50); % C(:,:,1) 代表 R(Red,紅色)的份量C(:, :, 2) = rand(50); % C(:,:,2) 代表 G(Green,綠色)的份量C(:, :, 3) = rand(50); % C(:,:,3) 代表 B(Blue,藍色)的份量surf(Z, C);axis tight

在上圖中,曲面上每一個小方塊的顏色都是由矩陣 C 的 R、G、B 份量來決定,這就是「真實顏色」,而和前述的「索引顏色」有所不同。

在前述的例子中,每一個曲面都可以視為由一塊塊的四角小「瓷磚」所拼成,而且每一塊「瓷磚」表面的顏色是均勻一致的,其顏色值由「瓷磚」所在的曲面高度所決定。若要使「瓷磚」表面的顏色產生連續性的變化,可使用 shading 指令,例如我們可以先輸入「peaks」,再輸入「shading interp」,就可以得到下列顏色漸進變化的圖形:

Example 9: 04-三維立體繪圖/shadingInterp01.m peaks;colormap jet;colorbar;shading interp; z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ... - 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ... - 1/3*exp(-(x+1).^2 - y.^2)

由上圖可看出,經由 shading interp 的作用,曲面的顏色更加柔順平滑。有關 shading 指令的用法,可列表如下:

指令 說明
shading interp 使用 Bilinear Interpolation 來使「瓷磚」根據四頂點的顏色產生連續的變化
shading flat 「瓷磚」的顏色是均勻一致的。
shading faceted 「瓷磚」的顏色是均勻一致的,而且同時顯示「瓷磚」交接的「邊」。(此為預設值)

使用 colormap 及 shading,可產生意想不到的結果,例如:

Example 10: 04-三維立體繪圖/plotxyz19.m surfl(peaks); % 曲面圖加上光源 axis tightcolormap(pink);shading interp 使用该数组设置 CData 属性,该属性用于定义顶点 颜色 。通过将 曲面 对象的 FaceColor 属性设置为 'interp' 来插入面 颜色 。使用圆点表示法查询和设置属性。创建使用 magic 函数得到的数据的三维条形图。在数组 b 中返回用于创建条形图的 曲面 对象。每个条形的高度决定了它的 颜色 。您可以通过对比条形 颜色 颜色 栏来估算条形的高度。根据条形高度为条形着色,以此方式来修改三维条形图。对每个 曲面 对象,从 ZData 属性取得。 添加保存和加载训练状态。 恢复培训时,只需传递名称为resume_state的选项,例如"resume_state": "../experiments/debug_001_RRDB_PSNR_x4_DIV2K/training_state/200.state" :triangular_flag: 使用Python日志记录,并支持PyTorch 灵活的图像超分辨率开发工具包。 现在,它提供: 面向PSNR的SR模型(例如SRCNN,SRResNet等)。 您可以尝试不同的体系结构,例如ResNet块,ResNeXt块,密集块,残余密集块,多边形块,双路径块,挤压和激发块,残余残留密度块等。 模型(它也可以训练SRGAN模型)。 增强的SRGAN具有比实际更好的自然质感的持续更好的视觉品质,并赢得了业界的第一。 有关更多详细信息,请参阅。 (如果您只想测试模型,请提供更简单的测试代码。) 它采用空间特征变换(SFT)来有效地合并其他条件/先决条件,例如图像SR的语义先验,由分割概率图表示。 有关更多详细信息,请参阅。 BibTex @InProceedings y(end)=NaN; z=abs(sin(x))./(1+cos(x).^2).^1.5 patch(x,y,z,'EdgeColor','interp','linewidth',3); 以上为示例代码,正弦曲线按曲率上色,复制到 MATLAB 可直接运行。 x=linspace(-10, Matlab 曲线的 颜色 、线型等参数设置方法 在 Matlab 绘图时,如果在同一视窗内绘制的曲线特别多的时候,通常需要用不同的 颜色 和线型将其区分开,否则在黑白色打印输出图像时,用户无法辨别不同属性的曲线。下面是的曲线 颜色 的配置模板,大家可以直接修改使用,直接引用PlotStyle这个数据结构就可以了。 1 %% Matlab 线型 颜色 设置模板 2 clear; 3 close all; 4 %%----------- matlab 绘制曲线的 颜色 ,线型,粗细等参数设置方法--------.. 满意答案南渡江ndj2013.09.03采纳率:43%等级:12已帮助:19801人你好 这是我总结的画图资料比如画一条蓝色的x号线plot(x,y,'bg')画图:线形:-实线 -. 点划线 --长虚线 :短虚线符号 颜色 符号 线形b 蓝 . 点c 青 。 圈g 绿 × ×标记k 黑 - 实线m 紫红 * 星号r 红 : 点线w 白 -. 点划线y 黄 -- 虚线上下标: ^{任意字符... 利用 colorbar 指令,可顯示 MATLAB 如何以不同顏色來代表 曲面 的高度,例如若先輸入「peaks」,再輸入「colorbar」,就可以得到下列圖形:Example 1:04-三維立體繪圖/colorbar01.mpeaks;colorbar;z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ... - 10*(x/5 - x.^3 - y.^5)... 我们在画三维或高维图像时, matlab 默认的 颜色 表为 parula,parula中没有红色,有些时候图像不是很美观,我们可以切换其他 颜色 表,这个时候就用上了函数 colormap matlab 内置 颜色 表大致有以下这些: 我们可以根据不同需要选择合适的 颜色 表: A=[1.486,3.059,0.1;2.121,4.041,0.1;2.570,3.959,0.1;3.439,4.396,0.1; 其中最常用的是第一个,也是默认的选项。那么它是怎么得来的呢? jet ranges from blue to red, and passes through the colors cyan, yellow, and orange. It is a var 目录来源方法surf函数实例二维数据解决方案其他方案常见错误surf报错生成的图形是黑色生成 曲面 光滑参考资料 写论文,从二维变三维空间,对三维工作空间分析,希望创建漂亮的工作空间示意图。二维区域着色已经在之前博文提到过了: Matlab 不规则区域渐变色填充及注意事项。这里主要讲三维 曲面 着色。 实现绘制 曲面 的函数有不少,典型如下 近日需要用 Matlab 绘制一些三维 曲面 图,并对其进行标注。于是这些天花了些功夫重新梳理了一遍关于 Matlab 三维 曲面 作图的一些注意事项,在此记录备案,便于以后使用查找。 任务要求:已知函数形式,绘制三维 曲面 此次以下函数为例,介绍 Matlab 三维 曲面 的绘制方式 ... MATLAB 提供了许多在二维和三维空间内显示可视信息的工具。例如,看一条sin函数的曲线图就会比一堆数据提供更多的信息。这种用图表和图形来表示数据的技术叫做数据可视化。 MATLAB 不仅是一个强大的计算工具,并且在以引人入胜和直观方式可视地表示数据方面也很有特色。       但是很多时候,一个简单的二维或三维图形不能一次显示出想要提供的全部信息。 本章将学习 MATLAB 高级绘图的知识,将熟悉以下内容:1.掌握 MATLAB 如何处理三种不同类型的图形文件。 2.使用句柄图形制定绘图的句柄并调整特性。 3.通过 MATLAB 两种技术的任意一种创建动画。 4.调节光源参数,照相机位置和透明值。 5.对三维标量和矢量信息使用可视化方法。一.图像通过检验函数image和imagesc对图形的处理过程,可以了解 MATLAB 的高级绘图功能。因为MATL 在画图的时候,为了让图形更加清晰突出,往往需要对某一条或几条曲线围成的区域进行填冲 颜色 ,以得到填充图。对于平面图形的填充,可以 matlab 的命令fill和area等实现。