добавить латексное выражение на отметки оси x @ ggplot2 - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть этот фрейм данных:

library(ggplot2)
library('latex2exp')

dfvi<-structure(list(rel.imp = c(7.97309042736285, 3.68859054679465, 
-0.672404901177933, -0.56914400358685, 0.461768686793877,-0.393707520847751, 
0.331273538653149, 0.257999910761084, -0.226891321033094, 0.179124365066449
), x.names = c("a", "x", "d", "ft", "ew", "qw", "ccc", "sas", 
"imb", "msf")), row.names = c(NA, -10L), .Names = c("rel.imp", 
"x.names"), class = "data.frame")

Я делаю сюжет следующим образом, используя ggplot2:

ggplot(dfvi, aes(x=x.names, y=rel.imp)) +
geom_segment( aes(x=x.names, xend=x.names, y=0, yend=rel.imp),color="grey") +
geom_point( color="orange", size=4) +
scale_y_continuous(breaks=c(-1,seq(0,8,2)))+
scale_x_discrete(labels=c('a'='a','x'='x','d'=TeX('$mode(L_{ij})$'),'ft'=expression('$R_{ij}$'),'ew'=TeX('$Q_{ij}$'),'qw'='qw','ccc'='ccc','sas'='sas','imb'='imb','msf'='msfff'))+
theme_light() + 
theme(
axis.text.x = element_text(angle=90,hjust=1),
panel.grid.major.x = element_blank(),
panel.border = element_blank(),
axis.ticks.x = element_blank()) 
+ xlab("X label") +  ylab("Y label")


что дает нам:

enter image description here

Я хотел бы использовать некоторые математические символы на галочках оси X (например, $ R_ {ij} $). Я следовал этому решению , но оно не работает для меня. Обратите внимание, что я пробовал expression('$R_{ij}$') и TeX('$Q_{ij}$') внутри scale_x_discrete через labels. Как я могу печатать как в LaTeX для галочек x? Я использовал TeX в прошлом в xlab в ggplot, но, очевидно, что-то происходит с scale_x_discrete.

1 Ответ

0 голосов
/ 27 апреля 2018

Все, что вам нужно сделать, это parse(text = ...) TeX-выражения:

ggplot(dfvi, aes(x=x.names, y=rel.imp)) +
  geom_segment( aes(x=x.names, xend=x.names, y=0, yend=rel.imp),color="grey") +
  geom_point( color="orange", size=4) +
  scale_y_continuous(breaks=c(-1,seq(0,8,2)))+
  scale_x_discrete(labels=c('a'='a','x'='x',
                            'd'=TeX('$mode(L_{ij})$'),
                            'ft'=parse(text = TeX('$R_{ij}$')),
                            'ew'=parse(text = TeX('$Q_{ij}$')),
                            'qw'='qw','ccc'='ccc','sas'='sas','imb'='imb','msf'='msfff'))
....

Примечание: Вы можете изменить размер шрифта. Я использовал axis.text.x = element_text(angle=90,hjust=1, size = 12).

enter image description here

...