前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R绘图 | 快速入门ggplot2

R绘图 | 快速入门ggplot2

作者头像
生信real
发布2022-12-20 09:31:52
1.4K0
发布2022-12-20 09:31:52
举报
文章被收录于专栏:Linux基础入门

0. 前言

❝在正式介绍ggplot2绘图之前,我们先来介绍一下ggplot2的绘图框架,以便后面介绍时更容易理解。一般来说,ggplot2绘图框架分为:图层、几何对象、映射、标度和主题。 本次以散点图为例简略带领大家快速了解ggplot2的绘图逻辑,更详细内容后面我们会一一推送。 ❞

1. 加载与安装包

安装并加载绘图所需的R包ggplot2

代码语言:javascript
复制
# 安装ggplot2
install.packages("ggplot2")
# 加载ggplot2
library(ggplot2)

2. 载入绘图数据

本次演示我们以R自带的数据集diamonds为例进行绘图,由于数据量比较大我们使用tidyverse随机抽取1000条数据进行演示。

代码语言:javascript
复制
# 载入数据
data("diamonds")
# 抽取1000条数据
library(tidyverse)
test_data <- sample_n(diamonds,1000)
# 查看数据
head(test_data)
# A tibble: 6 x 10
  carat cut       color clarity depth table price     x     y     z
  <dbl> <ord>     <ord> <ord>   <dbl> <dbl> <int> <dbl> <dbl> <dbl>
1  1.27 Very Good H     SI1      62.3    58  7125  6.87  6.94  4.3 
2  0.3  Ideal     G     IF       61.9    55   863  4.33  4.36  2.69
3  1.09 Ideal     D     SI2      61.7    59  5410  6.64  6.62  4.09
4  0.7  Premium   F     SI1      59.4    60  2239  5.77  5.74  3.42
5  0.71 Premium   F     SI2      62.2    57  2040  5.66  5.6   3.5 
6  1.08 Fair      E     SI1      53.8    63  4790  6.99  6.81  3.71

3. 绘图

3.1 创建画布

通过在ggplot函数内使用data=指定绘图数据,通过aes进行映射,指定x轴和y轴

theme_bw()函数用于设置主题。

代码语言:javascript
复制
ggplot(data = test_data,aes(x = carat,y = price)) + theme_bw()

3.2 添加几何对象

在这里以geom_point()指定几何图层(散点图),出现图形元素。

代码语言:javascript
复制
ggplot(data = test_data,aes(x = carat,y = price)) + 
  geom_point() + 
  theme_bw() 

3.3 为几何对象添加映射

我们可以通过在geom_point()中使用aes()函数为点添加新的映射。

在这里我们将cut这个分类变量映射给color

代码语言:javascript
复制
ggplot(data = test_data,aes(x = carat,y = price)) + 
  geom_point(aes(color = cut)) + 
  theme_bw() 

当然不通过aes()映射的话,我们也可以直接color =指定点的颜色。

代码语言:javascript
复制
p1 <- ggplot(data = test_data,aes(x = carat,y = price)) + 
   geom_point(color = "red") + 
   theme_bw() 

3.4 使用标度控制映射

3.4.1 使用标度控制颜色

标度(scale)可以控制映射的属性,ggplot2中内置了很多标度

在这里我们使用ggsci包中的标度scale_color_d3()来控制color属性,改变cut的默认颜色。

代码语言:javascript
复制
# 安装加载包
installed.packages("ggsci")
library(ggsci)
# 使用scale控制颜色属性
ggplot(data = test_data,aes(x = carat,y = price)) + 
  geom_point(aes(color = cut)) + 
  scale_color_d3() + 
  theme_bw() 
3.4.2 使用标度控制点

R中常用的点的形状如下图所示,默认时使用16号形状。

这里我们使用mtcars这个数据集进行演示。

在这里我们首先在aes()外使用shape指定使用21号形状(该点内部为空,可以使用颜色进行填充);通过alpha指定点的透明度

再在aes()内部将drat映射给size;通过factor()将连续变量cyl转换为因子后将其映射给fill

最后使用scale_size设置点的大小范围,使用scale_fill_npg()设置点的内部填充色

代码语言:javascript
复制
ggplot(mtcars,aes(x =wt ,y = mpg)) + 
  geom_point(shape = 21,alpha = 0.6,aes(size = drat,fill = factor(cyl))) + 
  scale_size(range = c(1,10)) + 
  scale_fill_npg() + 
  theme_bw()
2.4.3 使用标度控制刻度

x,y为连续性变量时,我们分别可以通过scale_x_continuousscale_y_continuous来控制x轴y轴

通过breaks=seq()控制刻度范围labels=c()设置刻度内容

代码语言:javascript
复制
  ggplot(mtcars,aes(x =wt ,y = mpg)) + 
    geom_point(shape = 21,alpha = 0.6,aes(size = drat,fill = factor(cyl))) + 
    scale_size(range = c(1,10)) + 
    scale_fill_npg() +
    scale_x_continuous(breaks = seq(0,6,0.5))+
    scale_y_continuous(breaks = seq(0,40,10),labels=c("0 M/US","10 M/US","20 M/US","30 M/US","40 M/US")) +
    theme_bw()

2.5 通过labs设置标题

通过在labs()内指定title=设置主标题x=设置x轴名y=设置y轴名size=fill=分别对应了geom_point中的aes(size = drat,fill = factor(cyl))用来设置图例名

代码语言:javascript
复制
  ggplot(mtcars,aes(x =wt ,y = mpg)) + 
    geom_point(shape = 21,alpha = 0.6,aes(size = drat,fill = factor(cyl))) + 
    scale_size(range = c(1,10)) + 
    scale_fill_npg() +
    scale_x_continuous(breaks = seq(0,6,0.5))+
    scale_y_continuous(breaks=seq(0,40,10),labels=c("0 M/US","10 M/US","20 M/US","30 M/US","40 M/US")) +
    labs(title = "mtcars",x = "Weight (1000 lbs)",y = "Miles/(US) gallon",size = "Displacement (cu.in.)",fill = "Number of cylinders") +
    theme_bw()

2.6 美化主题

我们可以通过在theme()内使用plot.title修改主标题属性axis.title可以同时修改x和y轴标签属性legend.position可以修改图例位置

需要注意的是,这部分代码需要放在theme_bw()后,否则则无法生效。

代码语言:javascript
复制
ggplot(mtcars,aes(x =wt ,y = mpg)) + 
    geom_point(shape = 21,alpha = 0.6,aes(size = drat,fill = factor(cyl))) + 
    scale_size(range = c(1,10)) + 
    scale_fill_npg() +
    scale_x_continuous(breaks = seq(0,6,0.5))+
    scale_y_continuous(breaks=seq(0,40,10),labels=c("0 M/US","10 M/US","20 M/US","30 M/US","40 M/US")) +
    labs(title = "mtcars",x = "Weight (1000 lbs)",y = "Miles/(US) gallon",size = "Displacement (cu.in.)",fill = "Number of cylinders") +
    theme_bw() +
    theme(plot.title = element_text(hjust = 0.5,size = 20),axis.title = element_text(size = 15),legend.position = "top")

除此之外,我们还可以通过ggThemeAssist包美化主题。

代码语言:javascript
复制
# 安装
install.packages("ggThemeAssist")
# 加载
library(ggThemeAssist)

① 安装加载后,我们首先需要选中需要加载的代码,点击如图所示的位置ggplot Theme Assistant进行修改主题。

② 如图所示,手动修改选项参数即可,完成点击右上角done即可加载新代码。

本次内容旨在抛砖引玉,更详细的内容后续会推送。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信百宝箱 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0. 前言
  • 1. 加载与安装包
  • 2. 载入绘图数据
  • 3. 绘图
    • 3.1 创建画布
      • 3.2 添加几何对象
        • 3.3 为几何对象添加映射
          • 3.4 使用标度控制映射
            • 3.4.1 使用标度控制颜色
            • 3.4.2 使用标度控制点
            • 2.4.3 使用标度控制刻度
          • 2.5 通过labs设置标题
            • 2.6 美化主题
            相关产品与服务
            图数据库 KonisGraph
            图数据库 KonisGraph(TencentDB for KonisGraph)是一种云端图数据库服务,基于腾讯在海量图数据上的实践经验,提供一站式海量图数据存储、管理、实时查询、计算、可视化分析能力;KonisGraph 支持属性图模型和 TinkerPop Gremlin 查询语言,能够帮助用户快速完成对图数据的建模、查询和可视化分析。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档