2012-05-23 12 views
7

Rozważmy następujący przykład:Rozstaw osi w etykiecie przy użyciu pasty wyrażenie ((...))

plot(c(2,4,6)~c(1,2,3),xlab="x", 
ylab=expression(paste('flux (g ',CO[2]~m^{-2}~h^{-1},')'))) 

Oczywiście chcę pełną przestrzeń pomiędzy „G” i „CO”, ale z jakiegoś powodu uzyskać mniejszą (z niektórymi etykietami nawet zero) miejsce na etykiecie wykresu.

Problem jest jeszcze bardziej oczywista, jeśli mogę to zrobić tak:

plot(c(2,4,6)~c(1,2,3),xlab="x", 
ylab=expression(paste('flux (g C',O[2]~m^{-2}~h^{-1},')'))) 

Czy robię coś źle? Czy istnieje sposób, aby naprawić odstępy, a nawet lepszy sposób tworzenia etykiet z dużą ilością sub/superscripts i greckich liter?

+1

to 'ylab = wyrażenie (" strumień "~ (g ~ CO [2] ~ m^{- 2} ~ h^{- 1}))) 'lepiej? (czyli: dlaczego używasz pasty?) – baptiste

+0

nie, to nie jest lepsze, ponieważ wtedy przestrzeń po strumieniu jest za mała. – Roland

+0

dunno, wydaje mi się, że odstępy są poprawne. Spróbuj przekazać nam swój system operacyjny, urządzenie graficzne i zrzut ekranu. Zobacz także, czy poniższe pokazuje rosnące odstępy: 'library (grid); grid.text (wyrażenie (strumień * (g ~ CO [2] ~ m^{- 2} ~ h^{- 1}), strumień ~ (g ~ CO [2] ~ m^{- 2} ~ h^{-1}), strumień ~~ (g ~ CO [2] ~ m^{- 2} ~ h^{- 1})), y = jednostka (0,5, "npc") + jednostka (0: 2, "linie")) ' – baptiste

Odpowiedz

7

Najprawdopodobniej numer to uzyskiwanie poprawnej pod względem poprawności "spacji" w czcionce używanej przez system operacyjny do wyświetlania bez szeryfa. Można zmienić czcionki czy można wstawić spację, która jest wystarczająca, aby posiadać szczególny ciąg znaków z plotmath phantom():

plot(c(2,4,6)~c(1,2,3),xlab="x", 
    ylab=expression(paste('flux',phantom(x),'(g ',CO[2]~m^{-2}~h^{-1},')'))) 

Albo jak @baptiste zwraca uwagę, można to zrobić bez plomath paste użyciu zwykłych separatory plotmath ponieważ tyldą w prawdziwym R wyrażenie traktowane jest jako "spacja":

 ylab=expression(flux*phantom(x)*(g~CO[2]~m^{-2}~h^{-1})))