2013-04-01 24 views
32

Sto cercando di creare un titolo asse y con un carattere speciale e un apice. Sono in grado di farlo, ma voglio che le parentesi di chiusura non siano in apice. Ed è quello con cui sto avendo un problema. Penso che sia solo una mia parentesi, ma ho provato (apparentemente) tutto.Caratteri speciali e apici sui titoli degli assi di trama

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) 

risposta

55

L'unica cosa che spesso gli utenti non riescono a cogliere è che invariabilmente non c'è bisogno di citare stringhe e paste insieme quando vengono utilizzate in un'espressione per un'etichetta di stampa. Di solito è più semplice utilizzare direttamente gli strumenti di layout (ad esempio ~ e *). Per esempio:

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

In alternativa, è possibile includere le stringhe per le sezioni più lunghe di testo; in questo caso è senza dubbio più facile da fare:

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

ma nota non v'è alcuna necessità di paste stringhe e altre caratteristiche qui.

Entrambi producono:

enter image description here

Annotare il plotmath problema ha con l'apice 2. Si può decidere di aggiungere un po 'di spazio in più per il margine asse y per ospitare che:

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) 

producendo

enter image description here

5

Questo risolve il problema del super-sceneggiato parentesi di chiusura:

# 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' è un po 'eccessivo qui. 'expression' dovrebbe funzionare bene. 'bquote' è molto utile quando si vuole sostituire un oggetto nell'espressione con il suo valore. –

+0

@GavinSimpson, grazie, è bello saperlo! Sembra che 'expression' faccia anche un lavoro migliore con la spaziatura dei caratteri di' bquote', ho alcuni spazi dispari vicino alle parentesi sulla mia trama ... – Ben

+5

Questo perché si usa '~ mu ~' per separare i due stringhe citate. Se lo imposti a '* mu ~' otterrai la giusta spaziatura. '~' è un operatore di spaziatura, '*' giustappone gli argomenti (cioè senza uno spazio). –

Problemi correlati