Matlab изменяет размер фигуры, чтобы правильно сохранить в .png

У меня есть график, который я получаю от Matlab, с осью x в диапазоне от 0 до 1864 значений. Я хочу сохранить этот график как изображение .png без необходимости вручную изменять исходный файл .fig.

Мой сюжет выглядит так:

Мое изображение

Как видите, последние два числа перекрываются. Причина в том, что когда Matlab отображает мое изображение, всплывающее окно слишком маленькое. Я уже пытался изменить соотношение осей с помощью daspect, но это не работает. Я думаю, что это может сработать, так это использовать функцию truesize, моя проблема в том, что когда я пытаюсь ее использовать, я получаю следующую ошибку:

No images or texturemapped surfaces in the figure.

Мой код выглядит так:

x = rand (1864,1);
F = bar (x);
xlim ([0 1864]);
set(gca, 'XTick', sort([1864, get(gca, 'XTick')]));
truesize(1,[100 100])

Почему это происходит? Как я могу решить эту проблему, чтобы сохранить изображения, предотвращающие перекрытие меток x?


person Patapunfate    schedule 30.06.2016    source источник
comment
Это происходит потому, что вы пытаетесь втиснуть ярлык туда, где нет места. Вам необходимо либо изменить свойство 'Position' вашего окно рисунка, свойство 'XTickLabelRotation' ваших осей, или оба.   -  person excaza    schedule 30.06.2016
comment
Важно ли для вас показывать последнюю метку галочки 1864?   -  person EBH    schedule 05.07.2016
comment
Да, это очень важно. Конечно, я мог бы вставить его позже, но это сильно замедлит мою работу, так как я делаю много этих изображений.   -  person Patapunfate    schedule 06.07.2016


Ответы (1)


Вы можете попробовать повернуть свои метки x, используя следующий код:

x = rand (1864,1);
F = bar (x);
xlim ([0 1864]);
set(gca, 'XTick', sort([1864, get(gca, 'XTick')]));
set(gca, 'XTickLabelRotation', 90)

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

Это дает вам график, который выглядит следующим образом: введите здесь описание изображения

person user3716193    schedule 13.07.2016
comment
Спасибо, что ответили мне. На самом деле я не хотел вращать числа, но кажется, что это самый эффективный способ. Могу я также воспользоваться этим моментом, чтобы спросить вас, почему ваша гистограмма кажется более гладкой, чем моя? Я имею в виду, как вы можете видеть на вашем графике, много белых областей различимы, в отличие от моего, где синие гомогенизируют целые области. - person Patapunfate; 15.07.2016
comment
Я не замечал этого раньше. Я вернулся и повторно запустил код в Matlab R2012b, единственной другой версии, которую я установил на свой компьютер, и она сделала график, похожий на ваш, без пробелов между штрихами. Главное, о чем я могу думать, это то, что Matlab обновил свою функцию панели, чтобы использовать более высокое разрешение. Какую версию Матлаба вы используете? - person user3716193; 15.07.2016
comment
В настоящее время я использую Matlab 2015b, поэтому я думаю, что должно быть что-то еще, а не только версия. - person Patapunfate; 15.07.2016
comment
Возможно, это связано с состоянием генератора случайных чисел. Я посмотрю и посмотрю, смогу ли я изменить его. - person user3716193; 15.07.2016
comment
Можете ли вы ввести команду «rng» в командном окне и посмотреть, что такое ответ? - person user3716193; 15.07.2016
comment
Я получаю как rng Type: 'twister'; Начальное значение: 0, состояние: [625x1 uit32]. Я также пытался изменить BarWidth и LineWidth, но, похоже, это не причина. - person Patapunfate; 15.07.2016
comment
Давайте продолжим обсуждение в чате. - person user3716193; 15.07.2016