移动经度轴上面的散点图

6视图(30天)
黛比绿色
黛比绿色 2021年6月2日
评论道: 亚当Danz 2021年6月3日
下面是我的matlab代码块的位置在一个感兴趣的区域:
轴= geoaxes (“技术”,“卫星”);
S =结构(轴);
持有
lat = normrnd(29日0.2,50 [1]);
朗= normrnd(0.2, -90年[1,50]);
geoscatter(轴,纬度,经度,30岁,“。”)
纬度/经度数据虚拟数据再现性的目的。我想把上面的经度轴散点图,因为我最终会把colorbar下面图。当使用 情节 功能,我理解下面的线可以把轴上的一个情节:
集(gca),“XAxisLocation”,“高级”,“YAxisLocation”,“左”)
但是,我找不到同样的capabilitiy geoscatter 函数。
任何建议我可以实现我的目标?
4评论
dpb
dpb 2021年6月3日
害怕……为什么Mathworks最近开发了这种嗜好为这些不透明/黑暗隐藏有用的图形对象所需的属性的基础显然是“知子莫若母!”是发狂,浪费无数的用户的时间花费更有成效地做研究/生产工作而不是战斗工具集。
我建议提交改进请求的特性(和任何其他你沿途遇到)。

登录置评。

接受的答案

亚当Danz
亚当Danz 2021年6月3日
编辑:亚当Danz 2021年6月3日
我寻找类似的东西 XAxisLocation 在geoaxes但什么也找不到。
这里有一个解决方案,直到这个功能可用。 向下滚动到第二个版本见!
  • 它适用于文本对象geoaxes的顶部。
  • 文本对象副本的实际经度蜱虫的标签和属性
  • 重要的是,他们的文本标签将更新如果有更改坐标轴如用户交互或改变轴的极限。
  • 因为蜱虫标签的文本对象复制属性,你仍然可以设置蜱虫和轴属性和文本对象将被更新。
  • 平移和缩放时,你会看到一个闪烁。这是之间的时间删除旧的文本obj和分配新的。
%创建geoaxes
ax = geoaxes (“技术”,“卫星”);
% % % % % % % % % % % % % % % %
% %
%先做你所有的策划%
% %
% % % % % % % % % % % % % % % %
% %分配侦听器创建和更新
%作为xtick标签的文本标签
%的轴。
框(ax,“上”)%,刻度线出现在上面
ax.UserData。UpperTicks = [];
ax.LongitudeAxis。颜色=“没有”;%,使蜱虫&标签不可见
ax.UserData。侦听器= addlistener (ax,“MarkedClean”,
@ (ax, ~) updateGeoTicks (ax, []));
%初始化上“ticklabels”(即文本对象)
updateGeoTicks (ax)%如果需要
函数updateGeoTicks (ax, ~)
%响应MarkedClean事件。
%更新文本对象充当xtick标签上轴。
TickValues = ax.LongitudeAxis.TickValues;
nTicks =元素个数(TickValues);
latlim = geolimits (ax);
textYpos = latlim (2) + (latlim) *措施;
%删除旧ticklables(文本obj)和分配新的。
%,我们不能仅仅更新现有文本obj因为数量
%的蜱虫可能会发生变化。
删除(ax.UserData.UpperTicks);%这里而不是保持在fcn发出召唤。
ax.UserData。UpperTicks = gobject (nTicks, 1);
我= 1:nTicks
ax.UserData.UpperTicks (i) =文本(ax, textYpos, TickValues(我),
我ax.LongitudeAxis.TickLabels {},
“HorizontalAlignment”,“中心”,“VerticalAlignment”,“底”,
“翻译”ax.LongitudeAxis.TickLabelInterpreter,
“旋转”ax.LongitudeAxis.TickLabelRotation,
“字体名”ax.FontName,
“字形大小”ax.FontSize,
“FontWeight”ax.FontWeight,
“FontAngle”ax.FontAngle,
“颜色”,ax.LatitudeAxis.Color);
结束
结束
包括经度轴标签
这个解决方案不复制经度轴标签。下面这个版本降低了93%的原始高度的轴高度为经度轴标签顶部的轴。然后复制上面的经度轴标签使用相同的逻辑。标签的位置将更新当轴限制改变和轴控制的属性更改轴标签使用标准的Matlab命令还将更新文本对象作为标签。
%创建geoaxes
ax = geoaxes (“技术”,“卫星”);
% % % % % % % % % % % % % % % %
% %
%先做你所有的策划%
% %
% % % % % % % % % % % % % % % %
% %分配侦听器创建和更新
%作为xtick标签的文本标签
%的轴。
框(ax,“上”)%,刻度线出现在上面
ax.LongitudeAxis。颜色=“没有”;%,使蜱虫&标签不可见
ax.UserData。UpperTicks = [];
ax.UserData。LonLable =文本(ax,南南,
“HorizontalAlignment”,“中心”,“VerticalAlignment”,“底”);
ax.UserData。侦听器= addlistener (ax,“MarkedClean”,
@ (ax, ~) updateGeoTicks (ax, []));
%初始化上“ticklabels”(即文本对象)
updateGeoTicks (ax)%如果需要
%为经度轴标签
ax.Position (4) = ax.Position (4) * iseq指数;
函数updateGeoTicks (ax, ~)
%响应MarkedClean事件。
%更新文本对象充当xtick标签上轴。
TickValues = ax.LongitudeAxis.TickValues;
nTicks =元素个数(TickValues);
[latlim, lonlim] = geolimits (ax);
latBuffer =范围(latlim) *措施;
textYpos = latlim (2) + latBuffer;
%删除旧ticklables(文本obj)和分配新的。
%,我们不能仅仅更新现有文本obj因为数量
%的蜱虫可能会发生变化。
删除(ax.UserData.UpperTicks);%这里而不是保持在fcn发出召唤。
ax.UserData。UpperTicks = gobject (nTicks, 1);
我= 1:nTicks
ax.UserData.UpperTicks (i) =文本(ax, textYpos, TickValues(我),
我ax.LongitudeAxis.TickLabels {},
“HorizontalAlignment”,“中心”,“VerticalAlignment”,“底”,
“翻译”ax.LongitudeAxis.TickLabelInterpreter,
“旋转”ax.LongitudeAxis.TickLabelRotation,
“字体名”ax.FontName,
“字形大小”ax.FontSize,
“FontWeight”ax.FontWeight,
“FontAngle”ax.FontAngle,
“颜色”,ax.LatitudeAxis.Color);
结束
%更新轴标签
labelPos =[总和(ax.UserData.UpperTicks (1) .Extent ([1,3])) + latBuffer,%纬度
lonlim(2)范围(lonlim) / 2, 0);%朗
集(ax.UserData.LonLable,“位置”labelPos,
“字符串”ax.LongitudeLabel.String,
“字体名”ax.LongitudeLabel.FontName,
“字形大小”ax.LongitudeLabel.FontSize,
“FontWeight”ax.LongitudeLabel.FontWeight,
“FontAngle”ax.LongitudeLabel.FontAngle,
“颜色”,ax.LatitudeLabel.Color);
结束
2的评论
亚当Danz
亚当Danz 2021年6月3日
我更新我的回答的第二个版本的下半部分答案。它增加了纵轴标签侦听器函数。你的次要情节的解决方案是简单而有效的如果适合你,保持它!

登录置评。

更多的答案(0)

类别

找到更多的在图形对象属性帮助中心文件交换

s manbetx 845


释放

R2020b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!