2017-04-05 6 views
2

Ich befolgte die Verfahren in this question und versuchte auch, einzelne Textobjekte mit größeren Schriftarten zu setzen. Hier ist mein Beispielcode:Beschriftungstext abgeschnitten nach Erhöhung der Schriftgröße

hf = figure; 
set(hf, 'DefaultAxesFontSize', 14) 
hx = axes('Parent',hf); 
[hx,hp1,hp2] = plotyy(hx, rand(10,1),rand(10,1),rand(10,1),rand(10,1),'scatter'); 
hlx = xlabel(hx(1), 'Only half of this line show up'); 
hl1 = ylabel(hx(1), 'Not usually truncated but less border'); 
hl2 = ylabel(hx(2), 'Only part of this line show up'); 
ht = title(hx(1), 'Too close to border'); 

Wie im Bild zu sehen ist, die Etiketten von der Grenze der Figur abgeschnitten bekommen. Ich muss die Figur zu sehr groß ziehen - entgegen der gewünschten - um den ganzen Text zu enthüllen.

figure window

Wie kann ich das Textfeld nach dem Text Schriftgröße automatisch eingestellt, so dass auch für kleine Graphen schneiden sie nicht bekommen?

Ich weiß, ich kann es manuell tun, indem Sie Position der Achsen einstellen, aber es ist eine Art Handbuch und rate-and-try. Gibt es einen automatischen Weg, um die Margen zu berechnen?

Antwort

0

Eine Sache, die getan werden kann, ist, erhöhten Rand entsprechend neuer Textschriftgröße zu berechnen. Nehmen wir an, wir wissen, dass die Standardschriftgröße von Matlab 10 ist, oder andernfalls get(hf,'DefaultAxesFontSize').

Dann erhalten Sie die relative Position der Achsen von get(hx, 'Position'), die vier Prozentwerte gibt. Die ersten beiden definieren den linken und den unteren Rand. Da es für die Etiketten ist, bedeutet das Erhöhen der Schriftgröße von 10 auf 14, dass das Textfeld um das 1,4-fache vergrößert wird. Die nächsten zwei Zahlen definieren die Größe der Achse. Da Textfelder auf beiden Seiten um das 1,4-fache wachsen, unter der Annahme, dass die Originalgröße x ist, ist die neue Größe 1 - [(1-x) * 1,4] = 1,4 × - 0,4.

Mögliche Lösung:

hf = figure; 
set(hf, 'DefaultAxesFontSize', 14) 
hx = axes('Parent',hf); 
set(hx, 'Position', [1.4 1.4 1.4 1.4].*get(hx, 'Position')+ [0 0 -.4 -.4]) 
[hx,hp1,hp2] = plotyy(hx, rand(10,1),rand(10,1),rand(10,1),rand(10,1),'scatter'); 
hlx = xlabel(hx(1), 'Only half of this line show up'); 
hl1 = ylabel(hx(1), 'Not usually truncated but less border'); 
hl2 = ylabel(hx(2), 'Only part of this line show up'); 
ht = title(hx(1), 'Too close to border'); 

Sie können die manuell eingegebene Nummer 1.4 mit dem Verhältnis zwischen ersetzen neu zugewiesen (größer, hoffentlich) Schriftgröße und der ursprünglichen Größe, die 10. ist

fixed result

Verwandte Themen