- 积分
- 54
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2017-3-15
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 细嗅猛虎 于 2019-1-22 22:47 编辑
其实二爷已经发过相关的了,但奈何呢直接搜索是搜不到这个的,所以很多人还是会问
不过我没有看过二爷的……所以用自己微薄的代码造诣粗糙地做了一个新手向“教程”
第一次发帖,排版可能不咋滴,凑合着看吧
先放图,就是随手用一个peaks矩阵随手设置了一些间隔,然后随手画了一下,随手发个帖。 - -大佬们不要揪小辫子,求放过。
随手贴段代码- clc;clear all;
- aaa = peaks(300);
- X=[-6 -5.5 -4.5 -3 -2.5 -2 0 1.5 3 5 7.5 8];
- L = length(X);
- Y = 1:length(X);% 创建一个和X一样场的坐标用作插值和colorbar的tick
- pp = spline(X,Y);% 插值
- V = ppval(pp,aaa);% 将原始的aaa转换成与Y对应的整数
- % >>>>>figure<<<<<<<<<
- pcolor(double(V));
- shading interp;
- colormap(jet);% CM可以为任意N*3的矩阵,3为
- caxis([1,L]);% L可以修改
- ht=colorbar('YTick',Y,'YTicklabel',X);% 配合着上一行的L的修改,可以修改对应的Ytick和label
- set(get(ht,'ylabel'),'String','大懒熊','Rotation',-90);
复制代码
说明一下,aaa这个矩阵最大约8.1,最小约-6.5.根据自己的需求更换X矩阵和Y矩阵就好啦。如果你要使用横向的colorbar的话,只需要把colorbar括号里对应的参数改为'Xtick'和'Xticklabel'就好了
大体思路就是把原来的值不等间隔地“换成”对应的一个1到十几的数(这个看个人爱好,可以换成别的),然后再等间隔分隔colorbar的坐标,再通过colorbar的函数设置(或者set,get)“还原”数据
- cn = 64;
- r = rand(cn,1).^2;
- g = 1-rand(cn,1).^2;
- b = (0:1/cn:1-1/cn)';
- CM = [r,g,b];
- colormap(CM);
复制代码
好吧丑的很,吓到了不管我事- - 不过这个随机的,不怪我。其实就是用一个N*3的矩阵去涂这个图,每一行是一个范围的值的对应颜色(所以N越大colorbar越连续,越小越断续)每一列是对应的RGB颜色通道,你可以自己去一个个颜色试,也可以写函数定义RGB的变化。如果RGB变化速度相同就是个灰度图。matlab也有自带的colormap矩阵,网上也有很多配的很好看的例子,这个就不多说了。
有什么问题可以加二爷的群,可能不怎么常看论坛,我QQ(写好来历否则一律拒,算了也没人看):
|
|