我是男友的R小帮手

和男友差不多同时开始学习 R,但他是搞理论研究的,程序写的并不多,最近因为工作需求经常向我请教ggplot2,我自然很乐意。谁知道!他总提出一些莫名其妙的要求,又没时间去 Google,于是我就担任起了 R 语言小助手的职责。

  • 如何更改 facet 标签
  • 如何让标签竖着显示(是不是很奇葩)
  • 如何让 facet 显示子图坐标刻度

如何更改 facet 标签

自从学了 ggplot2 中的分面(facet)功能,只能说好好用!看个图你就知道了。

library(ggplot2)
data(mtcars)
ggplot(mtcars, aes(drat, mpg)) + geom_point() + facet_wrap(~cyl)

我是男友的R小帮手_第1张图片

是不是很酷炫!但男友总有些奇奇怪怪的要求,比如,他说怎样把显示的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))

我是男友的R小帮手_第2张图片

如何让标签竖着显示

刚向男友炫耀完,问题又来了。除了 facet_wrap, 还有 facet_grid 可以生成多行多列的图片排版。可是,他说行标签是横着印的,要歪脖子看,可不可以竖着显示。天!你歪一下脖子会怎么样啊到底,况且不歪也看得见啊。比如下图

ggplot(mtcars, aes(drat, mpg)) + geom_point() + facet_grid(gear~cyl)

我是男友的R小帮手_第3张图片

不过不查不知道,还真有把标签竖过来的方法,只要加一句!

ggplot(mtcars, aes(drat, mpg)) + geom_point() + facet_grid(gear~cyl) + 
theme(strip.text.y = element_text(angle = 0))

我是男友的R小帮手_第4张图片

如何让 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")

我是男友的R小帮手_第5张图片

又接到电话,有了新的需求,继续吧。。

你可能感兴趣的:(R)