2012-02-24 2 views
2

Когда я использую plotyy для создания графика с двумя y-осями. Существует проблема, что тики на первичной оси y также показаны на вторичной оси y. здесь кодв плоскостном левом направлении оси y накладываются на правые галактики. как удалить это перекрытие? Я не хочу, чтобы левые оси y были видны по оси y y

clear all; 
clc; 
load ('bval_time.txt'); 
load ('loadtime.txt'); 
load ('timeload.txt'); 
load1 =loadtime(:,1); 
time1 =timeload(:,1); 
time = bval_time(:,1); 
B_value = bval_time(:,2); 
[AX,H1,H2]=plotyy(time1,load1,time,B_value,'plot'); 
title('Load-bvalue-Time variation graph-150grp'); 
legend('Load','B_value',1); 
xlabel('Time(sec)') 
set(get(AX(1),'Ylabel'),'String','Load(KN)') 
set(get(AX(2),'Ylabel'),'String','b-value') 
set(H1,'LineStyle','-') 
set(H2,'LineStyle','-','marker','*') 
set(AX(1), 'ylim', [0 15]) 
set(AX(2), 'ylim', [0 2]) 
set(AX(1),'YTick',[0:1:15]) 
set(AX(2),'YTick',[0:0.2:2]) 
+1

Можете ли вы показать нам какой-то код, который воспроизводит проблему без необходимости иметь все ваши .txt-файлы? –

ответ

2

Самый простой способ установить box свойство для левого (1) осей off:

set(AX(1),'box','off') 

В качестве альтернативы вы можете установить такое же количество клещей на обеих оси Y , Вы можете сделать это двумя способами:

1) расстояние изменения между клещами

set(AX(1),'YTick',[0:15]) 
set(AX(2),'YTick',linspace(0,2,16)) 

2) оси изменения ограничивают

set(AX(1), 'ylim', [0 15]) 
set(ax(2), 'ylim', [0 3]) 
set(ax(1),'YTick',0:15) 
set(ax(2),'YTick',0:0.2:3) 
1

Я просто столкнулся с той же проблемой. Я пересмотрел правильные галочки по оси y, но я хотел оставить поле вокруг сюжета.

Решение состоит в том, чтобы добавить новый axes поверх созданных plotyy и установить поле этого axes в положение "включено". Однако вы должны убедиться, что это поле имеет правильные x-тики и что оно не замаскирует цвет левой и правой осей y.

Вот примерный график, который показывает проблему:

x = 1:10; 
y = x.^2; 
AX = plotyy(x,y,x,y*3) 
set(AX(2),'YTick',0:90:400) 

Обратите внимание на дополнительный тик справа. Решение:

set(AX(1),'box','off') 
set(AX(2),'box','off') 
% create a new axes on top of old ones 
new_AX = axes('Position',get(AX(1),'Position'),'XLim',get(AX(1),'XLim'),'YTick',[]); 
set(new_AX,'box', 'on') 
% reorder things to make y-axes and box visible at the same time 
uistack(AX(1),'top') 
uistack(AX(2),'top') 
set(AX(1),'Color','None') 

Примечание: Масштабирование и панорамирование не будет корректно работать после создания этого дополнительного axes. Кроме того, я протестировал этот код с помощью Matlab2011a, но он может не работать из коробки с другими версиями Matlab.

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