2016-07-14 3 views
0

Я настраиваю метки оси x графика. Каждая метка содержит несколько значений и несколько символов, один из которых ('x') должен быть выделен курсивом. Этот код работает отлично, хотя содержание меток появляется только обычным шрифтом:Как использовать несколько шрифтов в графе оси-метки?

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) 

Как я могу italize характер x? Этот призыв к substitute, например, не работает:

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

ответ

1

Одним из решений было бы назвать axis один раз для каждой метки, и используя atop() вместо \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

К сожалению, это не делать трюк. Я хотел, чтобы символ х был выделен не 'df $ sp' –

+0

@SantiXGR OK - исправленный ответ –

+0

Почти там! Однако этот последний фрагмент кода '. (I ~") 'должен включать значение'. (Df $ n [i] ~ ")', но это изменение не работает. Это не работает '. (As.character (df $ n [i] ~") ' –

Смежные вопросы