2015-08-12 2 views
2

Я использую Matlab R2015a и хотел бы управлять DatetimeTickFormat при построении графика с помощью функции plotyy. Однако plotyy не принимает этот аргумент, в отличие от обычной функции plot.Matlab, plotyy, datetime и DatetimeTickFormat

Как я могу получить доступ и установить DatetimeTickFormat через ручку или команду после построения графика с plotyy?

x_datenum = linspace(1,2,10); 
t_datetime = datetime(x_datenum,'ConvertFrom', 'datenum'); 

figure 
% WORKS, BUT GIVES NO CONTROL OVER THE 'DatetimeTickFormat' 
[hAxPlotyy,hLine1,hLine2] = plotyy(t_datetime,1:10,t_datetime,2:11); 

% DOES NOT WORK. HOW DO I SET A SPECIFIC 'DatetimeTickFormat' AFTERWARDS? 
[hAxPlotyy,hLine1,hLine2] = plotyy(hAx,t_datetime,1:10,t_datetime,2:11,'DatetimeTickFormat','HH:mm:ss'); 

спасибо.

+0

делает 'hAxPlotyy.DatetimeTickFormat' работать? как насчет 'gca.DatetimeTickFormat'? –

+0

Ни одна из этих работ, но спасибо. Я также попробовал 'hAxPlotyy.XTickFormat' и' hAxPlotyy.TickFormat'. Я просматривал все свойства hAxPlotyy в окне Inspector, но мне еще не удалось найти свойство, которое, похоже, работает для этой проблемы. EDIT: На самом деле нет свойств 'XTickFormat' или' TickFormat' для моего объекта handle hAxPlotyy, из того, что я вижу в инспекторе, но я просто попробовал их, прежде чем смотреть на инспектора. – ctp

+0

Его странно, потому что если вы меняете шрифт осей, иногда меняется формат. Я получил что-то вроде '20072015' вместо' 20-jun-2015' и т. Д. –

ответ

1

Похоже, я пошел слишком далеко вниз по кроличьей норе plot, не проверив для себя специальную функцию. Упс ...

Вы можете использовать datetime после plotyy вызова для изменения тиков:

x_datenum = linspace(1,2,10); 
t_datetime = datetime(x_datenum,'ConvertFrom', 'datenum'); 

[hAxPlotyy,hLine1,hLine2] = plotyy(t_datetime,1:10,t_datetime,2:11); 
datetick(hAxPlotyy(1), 'x', 'HH:mm:ss'); 

Поскольку hAxPlotyy возвращает 1x2 массив осей объектов и datetime по-видимому, не работает на массивах осей объектов, Я выбрал объект первичных осей для изменения.

Modified X-axis ticks

+0

Спасибо @excaza за ваше решение! Кстати, я думаю, вы имели в виду 'datetick', когда вы написали' datetime', в '_You можете использовать datetime после вашего plotyy call_'. У меня есть одна проблема с 'datetick', которая заключается в том, что, используя ее, отметки по типу оси не будут автоматически обновляться при использовании инструмента масштабирования. Но есть [обходные пути] (http://www.mathworks.com/matlabcentral/answers/95034-why-does-datetick-not-regenerate-tick-marks-on-the-axes-when-using- the-zoom -function-in-matlab) – ctp

+0

@ctp исправлено, спасибо. Проблема масштабирования связана с тем, как метки меток реализованы для графиков тайм-аутов, о чем я говорил выше в комментариях. Поскольку они генерируются во время вызовов 'plot' или' datetick' и не являются свойством оси, MATLAB не знает, чтобы обновлять их после обработки графика. Представление FEX в связанном центральном сообщении MATLAB - это умный мод для функций 'zoom' и' pan'. – excaza

+0

Я просто хотел добавить отзыв о методе укладки ваших осей, так как вы (@excaza) описываете [здесь] (http://stackoverflow.com/questions/30655347/non-homogenous-grouped-data-in-matlab-plotyy/30655776 # 30655776). Это действительно чудеса, и это позволяет мне работать с 'DatetimeTickFormat', как я хочу! И затем я просто удаляю ticklabels от оси x 2, поэтому я не получаю «overprint», например: 'h.ax2.XTickLabel = [];' Еще раз спасибо! – ctp

Смежные вопросы