matlab怎样将数据变化和颜色变化对应,求助各位大神
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab怎样将数据变化和颜色变化对应,求助各位大神相关的知识,希望对你有一定的参考价值。
clear;clc;
A=unifrnd(-.5,.5,10,10);
B=100*[A,0*A(:,1);0*A(1,:),0]
[m,n]=meshgrid(1:11);
surf(m,n,0*m,B,'linestyle',':');
%%%%%%%%%自定义颜色%%%%%%%%%%%
map=ones(199,3);
c=linspace(0,1)';
map(1:100,[2,3])=[c,c];
map(199:-1:100,[1,3])=[c,c];
colormap(map);
colorbar([-50,50]);
%%%%%%%%%%%%%%%%%%%%%%%%%%
view(2);axis ij
axis([1,11,1,11])
set(gca,'xtick',1.5:10.5,'xticklabel',char('A'+(0:9)'),'ytick',1.5:10.5,'yticklabel',-39.3,-29.6,-17.7,-10.5,-2.4,8.7,14.9,27,37,44)
[m,n]=meshgrid(1.5:10.5);
%%%%%%%%显示百分比%%%%%%%%%%%%
text(m(:),n(:),cellfun(@(x)[num2str(x),'%'],num2cell(round(A(:)*100)),'UniformOutput',false),'HorizontalAlignment','center','color','b')
这是有位大神编的代码。出来的图如下
我现在想请教各位,哪个命令是将数据和颜色对应?另外这个命令在matlab7中可以出来如图,但在2012b中出来是三维的,而且不能显示百分比和colorbar。求教各位了。我现在想了解他的命令后把自己的矩阵画成这样。
另外还有surf这个函数和pcolor函数画这个都能画出来么?有什么不同可以介绍一下吗?
1、启动Matlab,在home菜单下打开“preference”首选项界面,该界面可以对常见的默认设置进行修改。
2、选择“Fonts->Custom”自定义界面,该界面可以自定义命令窗口、命令历史窗口、编辑窗口等的字体格式和大小。
3、在如图所示的位置,选择自己感兴趣的窗口,然后选择“Custom”选项,对字体格式和大小进行更改。
4、选择“Preference->Colors”选项,注意不要选择Colors选项下面的“Programming Tools”,该项是对编程过程中产生的变量、程序名的颜色进行设置。
5、在右侧对话框中,勾掉“Use system colors”,然后分别针对字体颜色、六个语法颜色(keywords, comments,strings等)、和命令窗口颜色进行设置。
6、最后点击“OK”完成设置。该设置始终有效,不会随matlab的关闭或重启改变。
参考技术A surf(x,y,z,C)画出来就是三维的曲面,x,y,z是坐标数据,C是颜色数据
函数会根据x,y,z坐标的数据,画出曲面
而根据C数据在对应的位置显示对应的颜色
当你传递给函数的参数C是一个大小和x,y,z一样的矩阵时
而颜色对应采取一个简单的线性对应
colormap需要一个Nx3的矩阵
其中N行表示N种颜色,3列表示每种颜色的r,g,b分量
将C中的数据从最小到最大值,按照线性的间隔分成N类
但C的数据在第n类时,就选colormap中第n行的颜色
所以实现数据和颜色的对应非常简单
只要指定一个colormap再将数据传递给C参数就可以了
那位大神用了
surf(m,n,0*m,B,'linestyle',':');
其中想x,y就是m,n 而z=0*m都是零
所以画的图面就是z=0这个平面,而颜色数据就是B
并且他用view(2),以二维的视角去观看
所以他使用一个画3维曲面的函数surf,去实现一个画2维平面的功能
实际上要实现二维网格不同颜色显示,可以用更简单的
imagesc函数追问
您解释的非常清楚,我看懂了。看来您比大神还大神。但是我还想问,他这个代码中哪个地方是把B的数据和map这个颜色矩阵线性对应。也就是说一个B中的一个值就对应的一个[r,g,b],这个是怎么办到的?
追答颜色的对应是有surf函数自己完成的
你只要把B矩阵作为参数传递给surf就可以了
而至于用什么颜色
就用colormap (map)指定一个颜色map
那位大神还用一些几句,自己创造了一个map,也就是红-白-绿的map
map=ones(199,3);
c=linspace(0,1)';
map(1:100,[2,3])=[c,c];
map(199:-1:100,[1,3])=[c,c];
你也可以不用自己去创造map,而用matlab自带的定义好的map
例如用黑白灰度map
colormap(gray);
用类似骨科x光图片的颜色map
colormap(bone);
而还可以指定需要分为多少种颜色
colormap(gray(100));%分100中颜色
你也可以再画完图之后,弹出图片对话框figure中
的在菜单中找到 Edit->colormap选项,就会弹出Colormap Editor 对话框,如下图
对话框会显示现在所用的colormap
你的数据最小值就会显示最左边的颜色,最大值显示最右边的颜色
中间的颜色线性分布
在对话框中Tools->Standard Colormaps中可以选择matlab定义好的map
你可以逐一试试
非常感谢您的回答,嗯,我已经试出来了。效果挺好的。另外那个colorbar怎么显示出来,函数的格式是什么样子的?
追答在代码中加一行
colorbar;
就可以了
也可以在figure的菜单中找到这个按钮点一下就可以了
求助QT高手,怎么将传感器收集到的数据显示在qt界面上,还要实现数据制图(温湿度的变化图)
参考技术A 直接画,太麻烦!你直接用第三方库,qwt 吧,简单,好用!追问
qwt跟qt一样吗?不知道怎么使用啊
能说的详细点吗?
马上就得交项目了
以上是关于matlab怎样将数据变化和颜色变化对应,求助各位大神的主要内容,如果未能解决你的问题,请参考以下文章