2013-03-21 6 views
15

W rysunku Matlab, chciałbym usunąć tyknięcia tylko z górnej i prawej osi z zachowaniem kreślenia pola.Matlab usuń tylko górne i prawe tyknięcia z pozostawieniem pola na

Wiem, że jeśli usunę działkę, tyknięcia na górze i prawej stronie znikną. Ale nie tego chcę. Innymi słowy, chcę zachować tyknięcia tylko na dole i na lewo, a jednocześnie chcę zachować pole kreślenia.

+2

To jedna z tych rzeczy, które po prostu nie można zrobić ładnie. Musisz uciekać się do oszustwa. Jeśli próbujesz uzyskać dwie osie na siebie z połączoną osią x i dwiema oddzielnymi osiami y po obu stronach, najłatwiejszym sposobem jest ustawienie obu osi na "box off". Następnie przesuń oś x drugiej osi do góry, usuń etykiety zaznaczenia i osi i dobrze zamknie obraz. –

+0

To działało. Dzięki! Nie mogłem tutaj ładnie edytować kodu, ale umieszczam poniższy kod. rysunek lw = 2; x = 0: 5: 10; działka (x, x) a1 = gca; zestaw (a1, "box", "off", "tickdir", "out", "xticklabel", {}, "yticklabel", {}, ... "linewidth", lw, 'Xtick', [ 0: 5: 10], 'ytick', [0: 5: 10]) oś kwadratowy a2 = copyobj (a1, gcf); zestaw (a2, 'color', 'none', 'xaxislocation', 'top', 'yaxislocation', 'right', 'xtick', [], 'ytick', []) –

Odpowiedz

9

Moja obejście podobny do @j_kubik propozycję:

plot(1:10) 
% get handle to current axes 
a = gca; 
% set box property to off and remove background color 
set(a,'box','off','color','none') 
% create new, empty axes with box but without ticks 
b = axes('Position',get(a,'Position'),'box','on','xtick',[],'ytick',[]); 
% set original axes as active 
axes(a) 
% link axes in case of zooming 
linkaxes([a b]) 
+0

Nie wiedziałem o siniakach. To jest poprawa. Dzięki!! –

+0

Aktualizacja: dla użytkowników Matlab 2014 i nowszych, zamień 'linkaxes' na' linkprop' –

+0

@CarlWitthoft Myślę, że 'linkaxes' jest nadal ważny w 2014+. Wywołanie 'linkprop ([a b])' spowoduje wystąpienie błędu – Delyle

1

Możesz użyć narzędzia box off, aby usunąć zaznaczenia, a następnie narysować okno z powrotem za pomocą wykresu. Na przykład:

figure 
hold on 
box off 
plot(1:10) 
plot([1,10],[10, 10],'k') 
plot([10,10],[1,10],'k') 
+0

Dzięki za sugestię. Próbowałem tego. Ale nie działa tak dobrze, jak chcę. Kiedy ustawię grubość linii grubszą, powiedz 3, wtedy linie narysowane na górze i na prawo (te rysowane za pomocą wykresu) wyglądają na cieńsze niż osie (linie z lewym i na dole), mimo że używam tej samej szerokości linii dla pola wyciągniętego z fabuła i osie. –

Powiązane problemy