MATLAB изменяет значения ylabel как глубины

#matlab #depth

#matlab #глубина

Вопрос:

У меня есть следующий сценарий

 clear all; clc;close all;

dx = 0:100:400 % in meters
rho_30 = [ 33.2185   33.3202   33.4763   33.5851   33.6078];


rho_50 = [ 58.4567   58.1212   57.5382   56.8300   56.0449];


rho_70 = [76.1825   76.0842   75.9825   75.9252   75.9507];

plot(dx,rho_30, 'r', 'LineWidth', 2) % rho at depth = 30 meters

hold on

plot(dx,rho_50, 'b', 'LineWidth', 2) % rho at depth = 50 meters

hold on

plot(dx,rho_70, 'g', 'LineWidth', 2) % rho at depth = 70 meters

grid on

legend('rho at depth = 30m', 'rho at depth = 50m', 'rho at depth = 70m')

xlabel('length of channel (meters)'); ylabel('depth(meters)')
  

Как вы можете видеть из графика, глубина начинается с 80 м на поверхности до 30 м на дне.

Мой вопрос: как изменить, чтобы глубина начиналась с -30 на поверхности до -80 метров внизу или ylabel должна начинаться с -30 до -80

Комментарии:

1. вы имеете в виду xticks и xticklabels ? или саму метку?

2. ylabel должен быть -30 на поверхности и -80 внизу, в то же время rho_30 (красный) должен быть помещен вверху, rho_50 (синий) посередине и rho_70 (зеленый) внизу.

3. Почему бы просто не построить график -rho_30 , -rho_50 и -rho_70 вместо rho_30 , rho_50 и rho_70 ?

4. Луис Мендо, результаты будут неверными. Синий, например, будет увеличиваться.

5. Прошу прощения… Вы правы, Луис Мендо. Синий должен увеличиваться теперь после того, как ylabel отменен. Большое спасибо Луису Мендо.

Ответ №1:

Если вы хотите изменить направление оси Y, вы можете сделать:

 set(gca,'YDir','reverse');
  

gca возвращает дескриптор для текущего объекта axes . В этой set команде вы устанавливаете направление оси y ( 'YDir' ) на 'reverse' (в отличие от значения по умолчанию 'normal' ).

Комментарии:

1. Спасибо KQS. Это работает, но как изменить 30 на -30, а 80 на -80?

2. Вы можете использовать предложение @Luis Mendo (график -rho_30 и т.д.). Это изменит все на отрицательное. И затем вы можете изменить направление оси Y, если это необходимо.

3. Если вы действительно хотите изменить метки по оси y вместо данных, вы можете это сделать set(gca, 'YTick',[30 40 50 60 70 80], 'YTickLabel',{'-30','-40','-50','-60','-70','-80'}) , но это довольно громоздко и легко ошибиться.