2013-04-01 13 views
32

Próbuję utworzyć tytuł osi Y o specjalnym charakterze i indeksie górnym. Mogę to zrobić, ale chcę, aby nawiasy końcowe nie były superscriptowane. I właśnie z tym mam problem. Myślę, że to tylko umieszczenie mojego nawiasu, ale próbowałem (pozornie) wszystkiego.Znaki specjalne i indeksy górne na tytułach osi fabuły

plot(WatexCl, ConcuM, col = as.numeric(1), pch = as.numeric(Depth), 
    xlab = expression(paste("Concentration Cl (", mu, "moles/g dry wt)")), 
    ylab = expression(paste("Average Conc of S- on plates (", mu, "Moles/cm"^"2"),)), 
    data = plates) 

Odpowiedz

55

Jedyną rzeczą, że użytkownicy często nie do uchwycenia jest to, że zawsze nie trzeba cytować ciągi i paste je razem, gdy są używane w wyrażeniu dla etykiety wydruku. Zwykle prostsze jest korzystanie bezpośrednio z narzędzi do projektowania (np. ~ i *). Na przykład:

df <- data.frame(y = rnorm(100), x = rnorm(100)) 

plot(y ~ x, data = df, 
    ylab = expression(Average ~ Conc ~ of ~ S- ~ on ~ plates ~ 
         (mu ~ Moles ~ cm^{-2} ~ dry ~ wt)), 
    xlab = expression(Concentration ~ Cl ~ (mu ~ moles ~ g^{-1} ~ dry ~ wt))) 

Można również dołączyć ciągi do dłuższych sekcji tekstu; w tym przypadku jest to zapewne łatwiej zrobić:

plot(y ~ x, data = df, 
    ylab = expression("Average Conc of S- on plates" ~ 
         (mu ~ moles ~ cm^{-2} ~ "dry wt")), 
    xlab = expression("Concentration Cl" ~ (mu ~ moles ~ g^{-1} ~ "dry wt"))) 

jednak pamiętać, że nie ma potrzeby paste łańcuchów i innych funkcji tutaj.

Zarówno produkować:

enter image description here

Zanotuj plotmath ma problem z odnośnikiem 2. Możesz chcieć dodać dodatkową przestrzeń do marginesu osi y, aby pomieścić że:

op <- par(mar = c(5,4.5,4,2) + 0.1) 
plot(y ~ x, data = df, 
    ylab = expression("Average Conc of S- on plates" ~ 
          (mu ~ moles ~ cm^{-2} ~ "dry wt")), 
    xlab = expression("Concentration Cl" ~ (mu ~ moles ~ g^{-1} ~ "dry wt"))) 
par(op) 

produkujące

enter image description here

5

To rozwiązuje problem zamknięcia nawiasu super scenariusza:

# reproducible data 
plates <- data.frame(WatexCl = rnorm(100), ConcuM = rnorm(100), Depth = rnorm(100)) 

# alter the default plot margins so the 
# superscript in the y-axis label is completely displayed 
par(mar=c(5,5,4,2)) 

# draw the plot 
plot(WatexCl ~ ConcuM, data = plates, 
    col = as.numeric(1), 
    pch = as.numeric(Depth), 
    xlab = bquote("Concentration Cl ("*mu~"moles/g dry wt)"), 
    ylab = bquote("Average Conc of S- on plates ("~mu~"Moles/cm"^"2"*")")) 

enter image description here

+2

'bquote' to trochę przesady tutaj. "Wyrażenie" powinno działać poprawnie. 'bquote' jest najbardziej użyteczny, gdy chcemy zamienić obiekt w wyrażeniu na jego wartość. –

+0

@GavinSimpson, dzięki, to dobrze wiedzieć! Wygląda na to, że 'expression' również ma lepszą pracę z spacjami niż' bquote', mam kilka dziwnych spacji w pobliżu nawiasów na moim spisku ... – Ben

+5

Dzieje się tak, ponieważ używasz '~ mu ~', aby oddzielić dwa cytowane ciągi. Jeśli ustawisz to na '* mu ~', uzyskasz odpowiedni odstęp. '~' jest operatorem odstępu, '*' zestawia argumenty (tj. bez spacji). –