2013-03-21 13 views
15

In Matlab Abbildung möchte ich Ticks nur von der oberen und rechten Achse entfernen, während die Plotbox eingeschaltet bleibt.matlab entferne nur obere und rechte Ticks mit Verlassen der Box auf

Ich weiß, wenn ich die Plotbox aus mache, verschwinden die Ticks oben und rechts. Aber das ist nicht was ich will. Mit anderen Worten, ich möchte Ticks nur unten und links behalten und gleichzeitig die Plot-Box beibehalten.

+2

Dies ist eines der Dinge, die man einfach nicht gut tun kann. Du musst auf Tricks zurückgreifen. Wenn Sie versuchen, zwei Achsen mit verknüpfter X-Achse und zwei separaten Y-Achsen auf beiden Seiten aufeinander zu setzen, ist es am einfachsten, beide Achsen auf "Box Off" zu setzen. Bewegen Sie dann x-ax der zweiten Achsen nach oben, entfernen Sie Tick- und Achsenbeschriftungen und es wird das Bild schön geschlossen. –

+0

Das hat funktioniert. Vielen Dank! Ich konnte den Code hier nicht schön bearbeiten, aber ich habe den Code unten eingefügt. Abbildung lw = 2; x = 0: 5: 10; Grundstück (x, x) a1 = gca; set (a1, 'box', 'aus', 'tickdir', 'out', 'xticklabel', {}, 'yticklabel', {}, ... 'linienbreite', lw, 'Xtick', [ 0: 5: 10], 'ytick', [0: 5: 10]) Achsenquadrat a2 = copyobj (a1, gcf); set (a2, 'farbe', 'none', 'xaxislocation', 'top', 'yaxislocation', 'rechts', 'xtick', [], 'ytick', []) –

Antwort

9

Meine Abhilfe ähnlich wie @j_kubik Satz:

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

Ich wusste nicht über Linkaxes. Es ist eine Verbesserung. Vielen Dank!! –

+0

Update: für Benutzer von Matlab 2014 und später, ersetzen Linkaxes mit "Linkprop" –

+0

@CarlWitthoft Ich denke, Linkaxes ist noch in 2014+ gültig. Der Aufruf von 'linkprop ([a b])' verursacht einen Fehler – Delyle

1

Sie können box off verwenden, um die Ticks zu entfernen, und dann das Feld mit Plot zurückzeichnen. Zum Beispiel:

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

Danke für den Vorschlag. Ich habe das versucht. Aber es funktioniert nicht so gut, wie ich es wünsche. Wenn ich die Linienstärke dicker mache, sagen wir 3, dann sehen die oben und rechts gezeichneten Linien (die mit Plot gezeichneten Linien) dünner aus als die Achsen (Linien mit links und unten), obwohl ich die gleiche Linienbreite für die gezeichnete Box verwende Handlung und Achsen. –

Verwandte Themen