2016-07-14 14 views
0

Ich passe die x-Achsenbeschriftungen eines Plots an. Jedes Etikett enthält mehrere Werte und mehrere Zeichen, von denen eines ('x') kursiv sein sollte. Dieser Code funktioniert gut, obwohl der Inhalt von Etiketten erscheint nur in normaler Schrift:Wie verwendet man mehrere Schriftarten in r-Plot-Achsenbeschriftungen?

df <- data.frame(sp=c('a', 'b', 'c', 'd', 'e'), n=c(1, 2, 3, 4, 5)) 
labels <- c() 
for(i in 1:nrow(df)){ 
labels[i] = paste(df$sp[i], '\n(x = ', df$n[i], ')', sep = '') 
} 
plot(df$n, df$sp, xaxt = 'n') 
axis(1, at = seq(1, nrow(df)), labels = labels) 

Wie kann ich italize Charakter x? Dieser Aufruf von substitute zum Beispiel funktioniert nicht:

substitute(paste(df$sp[i], italic('\n(x = '), df$n[i], ')', sep = ''), list(df$sp=df$sp, df$n=df$n)) 

Antwort

1

Eine Lösung axis rief für jedes Etikett einmal wäre, und mit atop() statt \n

plot(df$sp, df$n, xaxt = 'n') 
axis(1, at = 1:nrow(df), labels = rep("", nrow(df))) 
labels <-sapply(1:nrow(df), function(i){ 
    axis(1, at = i, line = 2, lty = 0, 
    labels = bquote(atop(.(as.character(df$sp[i])),.("(")~italic(x)~"="~.(i)~")"))) 
}) 
+0

Leider ist dies das nicht tun Trick. Ich wollte, dass Zeichen x italisiert wird, nicht 'df $ sp' –

+0

@SantiXGR OK - revidierte Antwort –

+0

Fast da! Jedoch sollte dieser letzte Teil des Codes '. (I ~") 'den Wert'. (Df $ n [i] ~ ") enthalten, aber diese Änderung funktioniert nicht. Es funktioniert auch nicht. "(As.character (df $ n [i] ~") ' –

Verwandte Themen