Масштабирование осей без масштабирования

Я хотел бы изменить масштаб оси графика MATLAB без изменения базовых данных. Я не пытаюсь увеличить конкретную область графика.

В качестве примера, скажем, у меня есть ось X в миллиметрах. Мои американские коллеги, возможно, предпочли бы видеть результаты в дюймах, но все закодировано в миллиметрах, и было бы чертовски сложно создать новые данные в дюймах для всех предметов, которые я хотел бы отобразить. В идеале я бы просто начертил все как обычно и в паре строк кода регулировал бы ось X в дюймах в конце.

Как мне это сделать?

Базовый код для начала работы:

plot([1:2:100], [1:50])
xlabel('Millimetres')
ylabel('Something else')

% Magic happens

xlabel('Inches')

Примечание: 1 дюйм равен 25,4 миллиметра.


person CaptainProg    schedule 11.10.2013    source источник


Ответы (1)


Во-первых, в чем проблема разделить ваши x-данные на 25,4?

x=[1:2:100]; y=[1:50];
plot(x/25.4,y)

Сделаю. Это также автоматически поместит позиции X-Ticks и Labels в удобные круглые позиции.

Если вы настаиваете, это преобразует текущие метки X-Tick из мм в дюймы:

xt     = get(gca, 'XTick');
xlabels= get(gca, 'XTickLabel');
set(gca, 'XTick', xt, 'XTickLabel',num2str(str2num(xlabels)/25.4) );
person bla    schedule 11.10.2013
comment
Идеальный. Причина того, что сами данные не масштабируются, заключается в том, что в моей реальной программе я рисую множество вещей на одних и тех же осях. - person CaptainProg; 11.10.2013
comment
Одна маленькая деталь: это решение устраняет возможность увеличения графика и позволяет MATLAB генерировать новые деления. По сути, у меня есть только один уровень масштабирования. Есть ли способ заставить MATLAB делать это для всех уровней масштабирования? - person CaptainProg; 11.10.2013
comment
масштабируйте вашу ось x (мой первый вариант). - person bla; 11.10.2013