MATLAB Наложение точки в определенной области по контурной диаграмме

Вопрос:

У меня есть контурный сюжет, на котором я хочу поставить точку. Контурный сюжет сам по себе отлично работает без ошибок. Но когда я пытаюсь поместить точку в определенную точку, она переопределяет сюжет контурной линии и просто помещает точку на белом фоне без фигуры экккона и с линиями широты и долготы, сжатыми вместе. Я использую hold, и я сначала попытался построить данные и нарисовать точку сначала, но оба они дают одинаковый результат. Может ли кто-нибудь сказать мне, что я делаю неправильно? Я думаю, может быть, я не должен использовать «plot» в качестве команды.

** Код был изменен, чтобы отразить ответ. plotm использовался вместо графика. значения x и y для точки были переключены на отображение MATLAB lat, lon order (вместо lon, lat.)

% Eqdconic script
% Define figure and axes
fg1 = figure(1);
% set(fg1, 'paperposition', [0 0 8.5 8.5]);
axesm('MapProjection','eqdconic', 'MapParallels', [], 'MapLatLimit',[-80 -60],'MapLonLimit',[190 250]) % 60-70S and 120-160W
framem on; gridm on; mlabel on; plabel on; hold all;

% Old code that was incorrect:
% xValue = find(x(:,1) == 224); % Longitude closest to  136 03.56W
% yValue = find(y(1,:) == -66.75); % Latitude closest to 66 39.67S
% plot(xValue,yValue,'b.','MarkerSize',20);  % Plot a black dot

% Plot dot
plotm(-66.75,224,'k.','MarkerSize',20);

hold on

% Plot data
frame = dataPoint(:,:,k);
contourfm(y,x,frame, 'LineStyle', 'none');

% Colorbar
caxis([0 100]);
h = colorbar;
ylabel(h,'Percent');

% Title: Days 1:1258 inclusive. 20100101 to 20130611
date = datenum(2009, 12, 31) + k; % Convert t into serial numbers
str = datestr(date, 'mmm yyyy');
title(str);

Лучший ответ:
Содержание
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5

1

Используйте plotm вместо plot.

2

Заменить эту строку

plot(xValue,yValue,'b.','MarkerSize',20);  % Plot a black dot

с

plotm(x(xValue,1),y(1,yValue),'b.','MarkerSize',20);  % Plot a black dot

Обратите внимание, что find возвращает индекс найденного элемента не его значение. Однако в вашем случае вы можете фактически передать фактические значения

3

Если вы не будете использовать xValue и yValue позже, вы можете удалить эти строки

xValue = find(x(:,1) == 224); % Longitude closest to  136 03.56W
yValue = find(y(1,:) == -66.75); % Latitude closest to 66 39.67S

и измените линию построения графика на

plotm(224,-66.75,'b.','MarkerSize',20);  % Plot a black dot

4

Однако это не будет определять точку, потому что широта и долгота меняются местами по сравнению с диапазонами, упомянутыми в команде axesm. Но так как вы используете contourfm(y,x), я предполагаю, что их нужно поменять местами, чтобы линия построения была

plotm(-66.75,224,'b.','MarkerSize',20);  % Plot a black dot

5

который дает нам синюю точку, поэтому мы меняем цвет на черный с помощью 'k.' вместо 'b.' и у нас есть

% Eqdconic script    
    % Define figure and axes
    fg1 = figure(1);
    % set(fg1, 'paperposition', [0 0 8.5 8.5]);
    axesm('MapProjection','eqdconic', 'MapParallels', [], 'MapLatLimit',[-80 -60],'MapLonLimit',[190 250]) % 60-70S and 120-160W
    framem on; gridm on; mlabel on; plabel on; hold all;
    plotm(-66.75,224,'k.','MarkerSize',20);  % Plot a black dot

который производит enter image description here

Оцените статью
TechArks.Ru
Добавить комментарий