2011-07-21 8 views
11

Chcę narysować dane na wykresie o większym rozmiarze czcionki dla lables.Unikaj nakładających się etykiet osi w R

x = c(0:10) 
y = sin(x) + 10 

plot (
    x, y, type="o", 
    xlab = "X values", 
    ylab = "Y values", 
    cex.axis = "2", 
    cex.lab = "2", 
    las = 1 
) 

Niestety liczby na osi Y pokrywają się z etykietą osi Y. Próbowałem użyć mar, ale to nie działało (Nawiasem mówiąc, jak mogę się dowiedzieć, które parametry graficzne mogą być bezpośrednio użyte w komendzie plotowania i które muszą być ustawione za pomocą metody par()?).

Jak mogę uniknąć nakładania się etykiet?

Dzięki za pomoc.

Sven

+0

Uwaga: Jeśli chcesz przenieść etykiety osi, wydrukować go oddzielnie: http://stackoverflow.com/questions/5506046/how-do-i-put-more-space-between- the-axis-labels-and-axis-title-in-an-r-boxplot – BurninLeo

Odpowiedz

17

Użyj par(mar), aby zwiększyć marginesy działek i par(mgp), aby przesunąć etykietę osi.

par(mar = c(6.5, 6.5, 0.5, 0.5), mgp = c(5, 1, 0)) 
#Then call plot as before 

Na stronie pomocy ?par wyjaśnia, jakie parametry mogą być wykorzystane bezpośrednio w plot i która musi być wywoływana poprzez par.

Istnieje kilka parametry mogą być ustawione tylko przez wywołanie „par()”:

• ‘"ask"’, 

    • ‘"fig"’, ‘"fin"’, 

    • ‘"lheight"’, 

    • ‘"mai"’, ‘"mar"’, ‘"mex"’, ‘"mfcol"’, ‘"mfrow"’, ‘"mfg"’, 

    • ‘"new"’, 

    • ‘"oma"’, ‘"omd"’, ‘"omi"’, 

    • ‘"pin"’, ‘"plt"’, ‘"ps"’, ‘"pty"’, 

    • ‘"usr"’, 

    • ‘"xlog"’, ‘"ylog"’ 

The remaining parameters can also be set as arguments (often via 
‘...’) to high-level plot functions such as ‘plot.default’, 
‘plot.window’, ‘points’, ‘lines’, ‘abline’, ‘axis’, ‘title’, 
‘text’, ‘mtext’, ‘segments’, ‘symbols’, ‘arrows’, ‘polygon’, 
‘rect’, ‘box’, ‘contour’, ‘filled.contour’ and ‘image’. Such 
settings will be active during the execution of the function, 
only. However, see the comments on ‘bg’ and ‘cex’, which may be 
taken as _arguments_ to certain plot functions rather than as 
graphical parameters. 
+0

Kiedy używam MGP, etykieta Y oraz etykieta x są przenoszone. Czy możliwe jest przeniesienie tylko etykiety Y? Czy istnieje dobry samouczek, który uczy tych podstawowych rzeczy? Zawsze gubię się w pomocy, ... :-( –

+2

Jeśli nie lubisz domyślnego położenia niż zwykłe podejście to 'ylab =" "' i użyj 'axis (..., line = )'. ? oś –

+0

@DWin: Spróbuję twojej sugestii Teraz ustawiam najpierw'par (mgp) 'tytuł dla jednej osi, następnie'par (mgp)' ponownie i "napis()" dla osi bext. –

2

Szybki i brudny sposób byłoby użyć par i dodanie nowej linii w ylab, mimo że jest koncepcyjnie straszne.

x = 0:10 
y = sin(x) + 10 

par(mar=c(5,7,4,2)) 
plot (
    x, y, type="o", 
    xlab = "X values", 
    ylab = "Y values\n", 
    cex.axis = "2", 
    cex.lab = "2", 
    las = 1 
) 

chodzi o parametry, które można ustawić bezpośrednio w plot spojrzeć na ?plot.default i ?plot.xy jak będą otrzymywać te ... arugments. Jest też kilka połączeń z nieudokumentowanymi funkcjami (o ile mogę to zrobić), takimi jak localWindow i localBox, ale nie wiem, co się z nimi stanie. Sądzę, że po prostu są ignorowane.

0

można umieścić parametr MGP do funkcji tytuł(), aby uniknąć konieczności resetowania twoje domyślne później. W ten sposób parametr działa tylko na etykietach dodanych przez funkcję. tak:

plot (
x, y, type="o", 
xlab = "",   #Don't include xlab in main plot 
ylab = "Y values", 
cex.axis = "2", 
cex.lab = "2", 
las = 1 
) 
title(xlab="X values" 
,mgp=c(6,1,0)) #Set the distance of title from plot to 6 (default is 3).