r语言各形状编号_190+张图片!吐血整理!搞定R语言基础绘图全部知识点

转自:生信宝典|Bio_Data,不一样的生信学习平台

原文链接:ggplot2高效实用指南 (可视化脚本、工具、套路、配色)

作者:严涛 浙江大学作物遗传育种在读研究生(生物信息学方向)伪码农,R语言爱好者,爱开源

数据可视化是解析、理解和展示数据不可缺少的一部分。炫或不炫看个人喜好和功底,能否达意是最基本的要求---最合适的图示和配色表达最直观的含义。长文多图预警,这是关于ggplot2使用的极详细教程(190+图),是入门和晋级参考的不二手册。

前面部分是关于qplot的使用,后面是ggplot2图层的使用。原文使用R自带数据集,后面有生信宝典出品的针对生信常见作图的ggplot2使用教程。为完善之际,本文整理了关于可视化套路 (什么图适合做什么), 图形配色 (美观不突兀)和多种在线、本地、编程和界面类绘图工具和脚本供集中学习和收藏使用。

简介

本文内容基本是来源于STHDA,这是一份十分详细的ggplot2使用指南,因此我将其翻译成中文,一是有助于我自己学习理解,另外其他R语言爱好者或者可视化爱好者可以用来学习。翻译过程肯定不能十全十美,各位读者有建议或改进的话,十分欢迎发Email([email protected])给我。

ggplot2是由Hadley Wickham创建的一个十分强大的可视化R包。按照ggplot2的绘图理念,Plot(图)= data(数据集)+ Aesthetics(美学映射)+ Geometry(几何对象):data: 数据集,主要是data frame;

Aesthetics: 美学映射,比如将变量映射给x,y坐标轴,或者映射给颜色、大小、形状等图形属性;

Geometry: 几何对象,比如柱形图、直方图、散点图、线图、密度图等。

在ggplot2中有两个主要绘图函数:qplot()以及ggplot()。qplot(): 顾名思义,快速绘图;

ggplot():此函数才是ggplot2的精髓,远比qplot()强大,可以一步步绘制十分复杂的图形。

由ggplot2绘制出来的ggplot图可以作为一个变量,然后由print()显示出来。

图形类型

根据数据集,ggplot2提供不同的方法绘制图形,主要是为下面几类数据类型提供绘图方法:一个变量x: 连续或离散

两个变量x&y:连续和(或)离散

连续双变量分布x&y: 都是连续

误差棒

地图

三变量

安装及加载

安装ggplot2提供三种方式:

#直接安装tidyverse,一劳永逸(推荐,数据分析大礼包)

install.packages("tidyverse")

#直接安装ggplot2

install.packages("ggplot2")

#从Github上安装最新的版本,先安装devtools(如果没安装的话)

devtools::install_github("tidyverse/ggplot2")

加载

library(ggplot2)

数据准备数据集类型:数据框data.frame

本文将使用数据集mtcars。

#load the data set

data(mtcars)

df

#将cyl转为因子型factor

df$cyl

head(df)

## mpg cyl wt

## Mazda RX4 21.0 6 2.620

## Mazda RX4 Wag 21.0 6 2.875

## Datsun 710 22.8 4 2.320

## Hornet 4 Drive 21.4 6 3.215

## Hornet Sportabout 18.7 8 3.440

## Valiant 18.1 6 3.460

qplot()

qplot()类似于R基本绘图函数plot(),可以快速绘制常见的几种图形:散点图、箱线图、小提琴图、直方图以及密度曲线图。其绘图格式为:

qplot(x, y=NULL, data, geom="auto")

其中:x,y: 根据需要绘制的图形使用;

data:数据集;

geom:几何图形,变量x,y同时指定的话默认为散点图,只指定x的话默认为直方图。

散点图

qplot(x=mpg, y=wt, data=df, geom = "point")

也可以添加平滑曲线

qplot(x=mpg, y=wt, data = df, geom = c("point", "smooth"))

还有其他参数可以修改,比如点的形状、大小、颜色等

#将变量cyl映射给颜色和形状

qplot(x=mpg, y=wt, data = df, colour=cyl, shape=cyl)

箱线图、小提琴图、点图

#构造数据集

set.seed(1234)

wdata

sex=factor(rep(c("F", "M"), each=200)),

weight=c(rnorm(200, 55), rnorm(200, 58))

)

head(wdata)

## sex weight

## 1 F 53.79293

## 2 F 55.27743

## 3 F 56.08444

## 4 F 52.65430

## 5 F 55.42912

## 6 F 55.50606

箱线图

qplot(sex, weight, data = wdata, geom = "boxplot", fill=sex)

小提琴图

qplot(sex, weight, data = wdata, geom = "violin")

点图

qplot(sex, weight, data = wdata, geom = "dotplot", stackdir="center", binaxis="y", dotsize=0.5, color=sex)

直方图、密度图

直方图

qplot(weight, data = wdata, geom = "histogram", fill=sex)

密度图

qplot(weight, data = wdata, geom = "density", color=sex, linetype=sex)

ggplot()

上文中的qplot()绘制散点图:

qplot(x=mpg, y=wt, data=df, geom = "point")

在ggplot()中完全可以如下实现:

ggplot(data=df, aes(x=mpg, y=wt))+

geom_point()

改变点形状、大小、颜色等属性

ggplot(data=df, aes(x=mpg, y=wt))+geom_point(color="blue", size=2, shape=23)

绘图过程中常常要用到转换(transformation),这时添加图层的另一个方法是用stat_*()函数。

下例中的geom_density()与stat_density()是等价的

ggplot(wdata, aes(x=weight))+geom_density()

等价于

ggplot(wdata, aes(x=weight))+stat_density()

对于每一种几何图形。ggplot2 基本都提供了 geom()和 stat()

一个变量:连续型

使用数据集wdata,先计算出不同性别的体重平均值

library(plyr)

mu

先绘制一个图层a,后面逐步添加图层

a

可能添加的图层有:对于一个连续变量:面积图geom_area()

密度图geom_density()

点图geom_dotplot()

频率多边图geom_freqpoly()

直方图geom_histogram()

经验累积密度图stat_ecdf()

QQ图stat_qq()

对于一个离散变量:条形图geom_bar()

面积图

a+geom_area(stat = "bin")

改变颜色

a+geom_area(aes(fill=sex), stat = "bin", alpha=0.6)+

theme_classic()注意:y轴默认为变量weight的数量即count,如果y轴要显示密度,可用以下代码:

a+geom_area(aes(y=..density..), stat = "bin")

可以通过修改不同属性如透明度、填充颜色、大小、线型等自定义图形:

密度图

使用以下函数:geom_density():绘制密度图

geom_vline():添加竖直线

scale_color_manual():手动修改颜色

a+geom_density()

根据sex修改颜色,将sex映射给line颜色

a+geom_density(aes(color=sex))

修改填充颜色以及透明度

a+geom_density(aes(fill=sex), alpha=0.4)

添加均值线以及手动修改颜色

a+geom_density(aes(color=sex))+

geom_vline(data=mu, aes(xintercept=grp.mean, color=sex), linetype="dashed")+

scale_color_manual(values = c("red", "blue"))

点图

a+geom_dotplot()

将sex映射给颜色

a+geom_dotplot(aes(fill=sex))

手动修改颜色

a+geom_dotplot(aes(fill=sex))+

scale_fill_manual(values=c("#999999", "#E69F00"))

频率多边图

a+geom_freqpoly()

y轴显示为密度

a+geom_freqpoly(aes(y=..density..))+

theme_minimal()

修改颜色以及线型

a+geom_freqpoly(aes(color=sex, linetype=sex))+

theme_minimal()

直方图

a+geom_histogram()

将sex映射给线颜色

a+geom_histogram(aes(color=sex), fill="white", position = "dodge")+theme_classic()

经验累积密度图

a+stat_ecdf()

QQ图

ggplot(data = mtcars, aes(sample=mpg))+stat_qq()

一个离散变量

#加载数据集

data(mpg)

b

b+geom_bar()

修改填充颜色

b+geom_bar(fill="steelblue", color="black")+theme_classic()

两个变量:x,y皆连续

使用数据集mtcars, 先创建一个ggplot图层

b

可能添加的图层有:geom_point():散点图

geom_smooth():平滑线

geom_quantile():分位线

geom_rug():边际地毯线

geom_jitter():避免重叠

geom_text():添加文本注释

散点图

b+geom_point()

将变量cyl映射给点的颜色和形状

b + geom_point(aes(color = factor(cyl), shape = factor(cyl)))

自定义颜色

b+geom_point(aes(color=factor(cyl), shape=factor(cyl)))+

scale_color_manual(values=c("#999999", "#E69F00", "#56B4E9"))+theme_classic()

平滑线

可以添加回归曲线

b+geom_smooth()

散点图+回归线

b+geom_point()+

geom_smooth(method = "lm", se=FALSE)#去掉置信区间

使用loess方法

b+geom_point()+

geom_smooth(method = "loess")

将变量映射给颜色和形状

b+geom_point(aes(color=factor(cyl), shape=factor(cyl)))+

geom_smooth(aes(color=factor(cyl), shape=factor(cyl)), method = "lm", se=FALSE, fullrange=TRUE)

分位线

ggplot(data = mpg, aes(cty, hwy))+

geom_point()+geom_quantile()+

theme_minimal()

  • 0
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值