r 语言 ggplot上添加平均值_R语言可视化系列——优雅的“ggplot2”散点图

640

点击关注了解更多精彩内容!!

831884fc4fed2c793b7ffd3911cc58b4.png

人生苦短,唯美图与爱不可辜负 – 老铁

对于数据分析的同学来说,一张美图包含着很多信息,也能侧面反映科研的艺术感。很多年以前,铁哥就是因为偶然看到一个很美丽的heatmap从而决定从统计学转向生物信息学这个方向。

本文铁哥会主要介绍R语言中优雅的可视化软件包“ggplot2” 之散点图可视化,并且会讲一些小故事帮助大家理解它的用法?。

在这之前,需要大家先安装并且加载两个软件包:tidyverse 和 ggplot2, 这两个软件包的作者还是大名鼎鼎的 Hadley Wickham, 那个改变了R的男人?。此处的R 代码如下(可以直接复制粘贴到Rstudio额):

70f5663c7fcac57fab3daeb2e9bdc396.png

#安装tidyverse 和 ggplot2 package

install.packages("tidyverse")

library(tidyverse)

install.packages("ggplot2")

library(ggplot2)

bf05d3f0b7fda0baf020e7a549de58e4.png

代码在Rstudio中的输出结果如下:

640

6475ccc8a8c8aa3bfd9d984e58313b40.png

dvdf

640

640

有了这两个软件包以后,我们就可以开始讲故事/学习R语言了?。为了让大家学有所得,本文仅仅讲如何用ggplot2画出散点图。为了帮助大家理解,铁哥又要聊聊身边的小伙伴了(考虑到单身朋友们的感受,我们尽量多讨论友情?)

今年的秋天来的早了点;

看着风中的几根秀发,

去年的秋裤又紧了半寸;

甜了爱情,醉了科研!

他们和铁哥一样特别关注一样东西。大家猜猜是什么?没错,就是体重,此处忍不住捏捏自己的小肚腩。本文涉及到十位小伙伴的体重和年龄信息(如有雷同、纯属巧合):

小云,50kg,25岁;小宏,60kg,28岁;

小杭,55kg,26岁;小通,70kg,30岁;

小旭,75kg,30岁;小瑞,58kg,28岁;

小晨,72kg,28岁;小萌,58kg,26岁;

小磊,80kg,30岁;小明,77kg,29岁;

用R语言代码表示如下: 70f5663c7fcac57fab3daeb2e9bdc396.png

#定义每个个体的体重和年龄

Yun

Hong

Hang

Tong

Xu

Rui

Chen

Meng

Lei

Ming

bf05d3f0b7fda0baf020e7a549de58e4.png 70f5663c7fcac57fab3daeb2e9bdc396.png

#按行合并为数据集

data % data.frame()

#定义数据集的列名字

colnames(data)

data

bf05d3f0b7fda0baf020e7a549de58e4.png

代码输出结果如下:

640

640

然后我们应用ggplot函数画出体重和年龄的散点图,横轴为年龄,纵轴为体重,用R语言表示如下: 70f5663c7fcac57fab3daeb2e9bdc396.png

#ggplot画出散点图

ggplot(data = data) +

geom_point(mapping = aes(x = Age, y = Weight))

bf05d3f0b7fda0baf020e7a549de58e4.png

输出结果如下:

640

这样的话,散点图就画好了,概括一下ggplot的使用模版:

640

当然,上面这个图过于简洁,铁哥希望知道更多信息,比如不同年龄段的个体体重是否一样?为了达到这个目标,我们给数据加一列标签吧,并且用不同的颜色表示不同的标签,R语言代码如下: 70f5663c7fcac57fab3daeb2e9bdc396.png

#定义新的标签

data$Label

  c("硕士生", "博士生",

    "硕士生",  "博士后",

    "博士后",  "博士生",

    "博士生",  "硕士生",

    "博士后",  "博士后")

bf05d3f0b7fda0baf020e7a549de58e4.png 70f5663c7fcac57fab3daeb2e9bdc396.png

#我们使用不同的颜色表示不同的类别

# element_text(family = 'Kai')使得图例可以显示中文

ggplot(data = data) +

geom_point(mapping = aes(x = Age, y = Weight, color = Label))+

theme(text = element_text(family = 'Kai'))

bf05d3f0b7fda0baf020e7a549de58e4.png

640

这个图就好看多了(此处跑个题),我想起了电影《爱乐之城》里面的主题曲:

City of stars,

Are you shining just for me?

City of stars,

You never shined so brightly.

有的时候,散点图可能还不够,我们还想知道它们的趋势,这里我们还对散点图进行了一个平滑处理,R代码如下: 70f5663c7fcac57fab3daeb2e9bdc396.png

#对散点图进行平滑处理

ggplot(data = data) +

 geom_point(mapping = aes(x = Age, y = Weight, color = Label))+

 geom_smooth(mapping = aes(x = Age, y = Weight))+

 theme(text = element_text(family = 'Kai'))

bf05d3f0b7fda0baf020e7a549de58e4.png

输出图像如下:

640

进一步优化该图像,铁哥想要去掉背景中的网格线以及曲线的置信区间,R代码如下:

70f5663c7fcac57fab3daeb2e9bdc396.png

#不显示置信区间和网格线

ggplot(data = data) +

  geom_point(mapping = aes(x = Age, y = Weight, color = Label))+

  geom_smooth(mapping = aes(x = Age, y = Weight), se = FALSE)+

  theme_classic() +

         theme(text = element_text(family = 'Kai'))

bf05d3f0b7fda0baf020e7a549de58e4.png

输出图像如下:

640

最终我们得到了一个比较满意的散点图,并且画出了它们的拟合曲线,而且我们还对数据就有了一个更直观的认识和理解,简单概括一下:随着年龄的增长(硕士生到老博士再到博士后)体重越来越重。。。 我们发现了一个非常残酷的现实,在追逐科研的道路上,年龄越来越大(头发越来越少)且体重越来越大?。看到这里,我想大家也都掌握了ggplot2散点图的奥义,最后附上铁哥最爱的三行情诗(欢迎各位留言): 0a0378a7071b0d8b8efb558d06593c9b.png

衣带渐宽终不悔,为伊修得人渐肥。

祝世上老博士早日毕业,

愿天下有情人终成眷属!

                               ——铁哥

05501f7b7024b831a2860e70c739ae88.png

欢迎关注铁哥公众号,助力科研道路上永不掉发,杜绝长膘,当然还有脍炙人口的铁哥小故事陪伴大家哦!

57c7865cac67a461a63f445ff3e1a547.png

如何基于ggplot2构建相关系数矩阵热图

R语言中强大的map函数——铁哥小故事版

R语言中神奇的管道符“%>%”

Ubuntu系统下通过添加PPA形式更新R软件版本

Mac系列电脑上应用命令行安装R和Rstudio

编辑:沃沃酱  监制:悠悠然

铁哥在等你一起学习哦~ 640 长按扫码关注 “在看”的永远不秃顶~ 12195c8797231e17c3725c714ad19b15.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值