如何在同一个图形上使用(和显示)两种不同的颜色映射?
1,305次浏览(过去30天)
显示旧的注释
接受的答案
嘉里蒂迈克
2015年3月26日
视情况而定。你是想把pcolor放在同一个轴上还是不同的轴上。从R2014b开始,MATLAB为每个轴提供了单独的颜色映射,因此第二种情况变得非常简单。
如果你有第一种情况(它们在同一个坐标轴上)事情就不那么简单了。如果你有R2014b或R2015a,那么你可以创建两个轴并覆盖它们。它看起来有点像下面这样:
%%创建两个轴
Ax1 =轴;
[x,y,z] =峰值;
冲浪(ax₁,x, y, z)
视图(2)
Ax2 =轴;
散射(ax2 randn (1120), randn(1120), 50岁,randn (1120),“填充”)
将它们连接在一起
linkaxes ([ax₁,ax2])
隐藏顶部轴
ax2。可见=“关闭”;
ax2。XTick = [];
ax2。YTick = [];
给每个人一个自己的颜色图
colormap (ax₁“热”)
colormap (ax2,“酷”)
然后添加颜色条并将所有内容对齐
集((ax₁,ax2),“位置”,(。17 .11 .685 .815]);
Cb1 = colorbar(ax1,“位置”,(。05 .11 .0675 .815]);
Cb2 = colorbar(ax2,“位置”,(。88 .11 .0675 .815]);
正如你所看到的,最混乱的部分是你没有得到两个色条的自动布局。这意味着你需要自己给他们定位。
如果你使用的是早期版本的MATLAB,那么事情就有点难了。有几个文件交换实用程序用于组合两个颜色映射,然后抵消其中一个对象的CData。这可能是你不得不采取的方法。
13个评论
Yiqian钱
2021年4月5日
最后通过改变实现了
linkaxes
来
linkprop
,成功地将3D散点图与自己的颜色图结合起来,与冲浪图也有自己的颜色图。
空谈很便宜,给我看看代码
:
负载([idDataDir filesep,“Acond.mat”]);%加载天空图条件号
[x,y,z] =球面(300);%生成一个300面单位球体
将源坐标转换为球面
[id_x,id_y,id_z] = sph2cart(idRA,idDec,1);
[sim_x,sim_y,sim_z] = sph2cart(simRA_nm,simDec_nm,1);
[matched_x,matched_y,matched_z] = sph2cart(matched_alpha,matched_dec,1);
数字
Ax1 =轴;
冲浪(ax₁,x, y, z, Acond,“EdgeColor”,的插值函数,“FaceColor”,的插值函数);
轴平等的
Ax2 =轴;
scatter3 (ax2、id_x id_y id_z, 40岁,idSNR,“填充”);
持有在
scatter3 (ax2、sim_x sim_y sim_z,“o”,“MarkerEdgeColor”,“# 888 e8f”)
scatter3 (ax2、matched_x matched_y matched_z, [], matched_snr,“年代”);
将已识别的源与匹配的真实源连接,并在上面画上大圈
%的球体
中心= 0 (1,3);圆心百分比
为src = 1:长度
[v] = GreatCircle(中心[id_x (src) id_y (src) id_z (src)], [matched_x (src) matched_y (src) matched_z (src)], 1);
plot3 (ax2, v (1:), v (2:), v (3:)“米”)
%的停顿
结束
轴平等的
连接两个轴
hLink = linkprop([ax1,ax2],{“XLim”,“YLim”,“ZLim”,“CameraUpVector”,“CameraPosition”,“CameraTarget”});
隐藏顶部轴
ax2。可见=“关闭”;
ax2。XTick = [];
ax2。YTick = [];
给每一个颜色图
colormap (ax₁)
colormap (ax2,“春天”)
把每件事都安排好
Cb1 = colorbar(ax1,“位置”,[0.1 0.1 0.05 0.815]);%四元素向量指定位置[左下宽高]
Cb2 = colorbar(ax2,“位置”,[0.81 0.1 0.05 0.815]);
cb1.Label。字符串=“条件”;
cb2.Label。字符串=“信噪比”;
cb1.Label。FontSize = 14;
cb2.Label。FontSize = 14;
传奇({“网格”,识别来源的,“真正的来源”,“匹配的真实来源”,“匹配和身份。”},“位置”,“东南”)
setappdata (gcf“StoreTheLink”, hLink);%存储链接,以便它们可以同步旋转和缩放
上面的代码最终生成了surf和scatter3图的组合同步3D视图。
更多答案(1)
Dimani4
2021年5月24日
它的工作与单独的数字,但它不在gui。看我的帖子(
//www.ru-cchi.com/matlabcentral/answers/837288-overlay-two-images-in-gui
).也许有人能帮我。