【问题标题】:Error in longitude contour near the pole MATLAB极点附近的经度等高线误差 MATLAB
【发布时间】:2019-04-04 15:48:15
【问题描述】:

我想在南极绘制纬度/经度等高线,我的数据由网格单元组成,每个单元都有一个纬度和经度值。我的问题是经度在哪里“相遇”,如图所示,图片下部的垂直经度有很多线相互重叠。 有谁知道如何删除它们?这是我的代码:

coldiv = -57.5:2.5:-7.5; 
min_pr = coldiv(1); max_pr = coldiv(end);
cmap = [0 0 0.4; 0 0 0.7; 0 0 1; 0 0.2 1; 0 0.4 1; 0 0.6 1; 0 0.8 1; 0 1 1;         
0 1 0; 0.6 0.8 0; 0.6 0.6 0; 0.6 0.4 0; 0.6 0.2 0; 1 0 0];


x = linspace(1,length(coldiv)-2,length(cmap));
xi = 1:length(coldiv)-2;
cmap = interp1(x,cmap,xi);
cmap = [0. 0. 0.; cmap];
fig=figure();
set(fig, 'Position', [10 10 1500 700])


pcolor(mean(tas_ann_DMI_hist_tot,3))
shading flat
hold on;
contour(flip_lat_DMI, 'k','ShowText','on');
contour(flip_lon_DMI, 'k','ShowText','on');
caxis([min_pr max_pr]);colormap(cmap);
axesHandles = findobj(get(fig,'Children'), 'flat','Type','axes');
axis(axesHandles,'square')
set(gca,'YTick',[]);
set(gca,'XTick',[]);

【问题讨论】:

  • 你能显示你想要的输出是什么吗?
  • 理想情况下,我希望删除所有相互重叠的行。所以经度-150和150之间有直线
  • lineplot 手动绘制经络怎么样?在经度上绘制等高线肯定会失败,因为它们突然从 180° 下降到 -180°。不过,您可能必须手动标记经络。
  • 你能放一个minimal reproducible example吗?为您的代码中未定义的变量提供一些随机数据
  • 你不能使用polaraxes函数吗?

标签: matlab matlab-figure latitude-longitude


【解决方案1】:

我找到了解决方案。

flip_lon_DMI(flip_lon_DMI<-160) = NaN;
flip_lon_DMI(flip_lon_DMI>190) = NaN;

...

contour(flip_lat_DMI,-90:5:-60,'k--','ShowText','on','Color',[.5 .5 .5]);
contour(flip_lon_DMI,-150:30:180,'k--','ShowText','on','Color',[.5 .5 .5]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-10
    • 1970-01-01
    • 1970-01-01
    • 2011-11-13
    • 1970-01-01
    • 2016-10-20
    • 1970-01-01
    相关资源
    最近更新 更多