和男友差不多同时开始学习 R,但他是搞理论研究的,程序写的并不多,最近因为工作需求经常向我请教ggplot2,我自然很乐意。谁知道!他总提出一些莫名其妙的要求,又没时间去 Google,于是我就担任起了 R 语言小助手的职责。
- 如何更改 facet 标签
- 如何让标签竖着显示(是不是很奇葩)
- 如何让 facet 显示子图坐标刻度
如何更改 facet 标签
自从学了 ggplot2 中的分面(facet)功能,只能说好好用!看个图你就知道了。
library(ggplot2)
data(mtcars)
ggplot(mtcars, aes(drat, mpg)) + geom_point() + facet_wrap(~cyl)
是不是很酷炫!但男友总有些奇奇怪怪的要求,比如,他说怎样把显示的4 6 8 的标签改掉呢,还跟我说这不是很自然嘛。
我第一反应就是把 data.frame 的4 6 8 直接改成对应的levels,他又说改改多麻烦。于是求助 Google,得到了答案,可以利用 labeller 这个参数。
new_label = c("4" = "si", "6" = "liu", "8" = "ba")
ggplot(mtcars, aes(drat, mpg)) + geom_point() +
facet_wrap(~cyl, labeller = labeller(cyl = new_label))
如何让标签竖着显示
刚向男友炫耀完,问题又来了。除了 facet_wrap, 还有 facet_grid 可以生成多行多列的图片排版。可是,他说行标签是横着印的,要歪脖子看,可不可以竖着显示。天!你歪一下脖子会怎么样啊到底,况且不歪也看得见啊。比如下图
ggplot(mtcars, aes(drat, mpg)) + geom_point() + facet_grid(gear~cyl)
不过不查不知道,还真有把标签竖过来的方法,只要加一句!
ggplot(mtcars, aes(drat, mpg)) + geom_point() + facet_grid(gear~cyl) +
theme(strip.text.y = element_text(angle = 0))
如何让 facet 显示子图坐标刻度
正想邀功,男友居然又有问题了。怎样让每个分面都显示坐标刻度呢?
我:试试 facet_grid(gear~cyl, scales = “free”)
他:这个是让坐标刻度不一样,不是我要的
我:每个子图都显示刻度有什么用啊, 这样失去 facet 的意义了啊
他:和你太难交流了
哭。。。
继续 Google 之后,发现在 facet_wrap 里可以用 scales = “free” 显示子图坐标轴,但 facet_grid 里就没有作用。不知道男友满不满意= =
ggplot(mtcars, aes(drat, mpg)) + geom_point() + facet_wrap(~cyl, scales = "free")
又接到电话,有了新的需求,继续吧。。