2013-04-01 8 views
32

Ich versuche, einen y-Achsentitel mit einem Sonderzeichen und einem hochgestellten Zeichen zu erstellen. Ich bin dazu in der Lage, aber ich möchte, dass die abschließenden Klammern nicht hochgestellt sind. Und damit habe ich ein Problem. Ich denke, es ist nur eine Platzierung meiner Klammern, aber ich habe (scheinbar) alles versucht.Sonderzeichen und hochgestellte Zeichen auf den Plot-Achsentiteln

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) 

Antwort

55

Die eine Sache, die oft nicht Benutzer zu erfassen, ist, dass man immer braucht nicht zu zitieren Strings und paste sie zusammen, wenn in einem Ausdruck für eine Plot-Label verwendet. Es ist normalerweise einfacher, die Layout-Werkzeuge direkt zu verwenden (z. B. ~ und *). Beispiel:

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))) 

Alternativ können Sie Zeichenfolgen für längere Textabschnitte einfügen; in diesem Fall ist es wohl einfacher zu machen:

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"))) 

aber beachten Sie, dass keine Notwendigkeit, hier zu paste Strings und anderen Funktionen ist.

Beide produzieren:

enter image description here

Beachten Sie die Ausgabe plotmath mit der Exponent hat 2. Vielleicht möchten Sie etwas mehr Platz für die y-Achse Rand hinzuzufügen, dass aufzunehmen:

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) 

produzieren

enter image description here

5

Dies löst das Problem der Super-scripted schließenden Klammer:

# 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' ist ein bisschen Overkill hier. "Ausdruck" sollte gut funktionieren. 'bquote' ist am nützlichsten, wenn ein Objekt im Ausdruck durch seinen Wert ersetzt werden soll. –

+0

@GavinSimpson, danke, das ist gut zu wissen! Sieht so aus, als ob "Ausdruck" mit Leerzeichen besser funktioniert als 'bquote', ich habe ein paar seltsame Leerzeichen in der Nähe der Klammern auf meinem Plot ... – Ben

+5

Das ist, weil Sie' ~ mu ~ 'verwenden, um die beiden zu trennen zitierte Strings. Wenn Sie das auf '* mu ~' setzen, erhalten Sie den richtigen Abstand. "~" ist ein Abstandsoperator, "*" stellt die Argumente nebeneinander (d. h. ohne Leerzeichen). –

Verwandte Themen