в плоты левой клещей оси Y перекрываются на правой клещи Yaxis.как удалить это перекрытие?я не хочу, чтобы левые оси Y отмечались на правой оси Y - PullRequest
2 голосов
/ 24 февраля 2012

Когда я использую plotyy, чтобы сделать график с двумя осями 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])

Ответы [ 2 ]

2 голосов
/ 24 февраля 2012

Самый простой способ - установить свойство 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 голос
/ 07 июня 2013

Я просто столкнулся с той же проблемой.Я переопределил правильные отметки по оси 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...