如何在同一个图形上使用(和显示)两种不同的颜色映射?

1,305次浏览(过去30天)
嘿,所有的,
我的问题是,我想提出一个轮廓样式地图利用m_map函数(使用m_pcolor与colormap 'jet'),这是覆盖了一些分散的数据(使用m_scatter与colormap 'cool')。然后,这两种颜色地图将显示在图的两侧,以供参考。对我来说,这似乎是一个非常简单的任务,但我似乎无法让Matlab来做它。
有人能帮帮我吗?我搜索了在线社区的答案,似乎有一些答案听起来是相关的,但后来证明不世界杯预选赛小组名单是。
谢谢你,尼克

接受的答案

嘉里蒂迈克
嘉里蒂迈克 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钱
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
Dimani4 2021年5月24日
它的工作与单独的数字,但它不在gui。看我的帖子( //www.ru-cchi.com/matlabcentral/answers/837288-overlay-two-images-in-gui ).也许有人能帮我。

2022世界杯八强谁会赢?

世界杯预选赛小组名单社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!世界杯预选赛小组名单

开始狩猎!

Baidu
map