R语言数据可视化tidyr与ggplot2多个变量分层展示举例实现

目录
  • 每个变量的密度分布情况
  • 思考
  • tidyr
  • ggplot2进行绘图

在R语言普通的绘图中,使用par()参数可以在一张图上实现不同变量的子图。如果我们想要用ggplot2实现,则需要整理我们的原始数据,这通常是非常麻烦的,这时就需要用到我们的tidyr来帮助我们绘图。

可能说上面一段话不是很容易理解,下面我们来举个栗子。

每个变量的密度分布情况

y1 <- rnorm(20)
y2 <- rnorm(20)
dat <- data.frame(y1, y2)

现有的数据集:

            y1          y2
1  -0.12781723 -2.39376880
2   0.50074083  0.72555237
3  -0.02419456  0.94721701
4  -0.26366759 -0.60006759
5   1.13042618 -0.07591046
6   0.04313160  1.18677742
7   0.01180343  0.17627700
8   0.15208821 -0.12472391
9  -0.72690758 -1.92233170
10  1.04903577 -0.66208974
11  0.89689082  0.16331929
12  0.28471495  2.00629127
13 -0.26956768 -0.11897779
14 -0.81699454 -1.05575302
15 -0.65923768  1.20971004
16  0.18237270  1.55745467
17 -0.52359358 -0.74253496
18  1.36949647  1.07759474
19 -0.39882438  0.83915414
20  0.92084949 -1.04859906

目标绘图:

思考

我们要如何利用ggplot达到上图的效果?

需要用数据集,将y1与y2分别整理到一个新的变量上,叫做var

里面所有的值也变成一个新的变量,叫做value

如果只有两个变量整理起来还比较简单,但如果变量一旦增多,整理起来相对就较为繁琐。所以这里推荐使用tidyr包来进行整理。

其用起来也非常简单。

tidyr

使用如下代码,我们就可以整理成想要的结果:

dat %>%
  gather(y1, y2, key = "var", value = "value")

解释一下上述代码的含义:y1, y2表示原本数据中的变量;key = "var" 表示转换之后,变量所在的那一列的名称为var;value = "value"表示转换之后,原本的值所在的那一列的名称为value

输出结果如下:

   var       value
1   y1 -0.12781723
2   y1  0.50074083
3   y1 -0.02419456
4   y1 -0.26366759
5   y1  1.13042618
6   y1  0.04313160
7   y1  0.01180343
8   y1  0.15208821
9   y1 -0.72690758
10  y1  1.04903577
11  y1  0.89689082
12  y1  0.28471495
13  y1 -0.26956768
14  y1 -0.81699454
15  y1 -0.65923768
16  y1  0.18237270
17  y1 -0.52359358
18  y1  1.36949647
19  y1 -0.39882438
20  y1  0.92084949
21  y2 -2.39376880
22  y2  0.72555237
23  y2  0.94721701
24  y2 -0.60006759
25  y2 -0.07591046
26  y2  1.18677742
27  y2  0.17627700
28  y2 -0.12472391
29  y2 -1.92233170
30  y2 -0.66208974
31  y2  0.16331929
32  y2  2.00629127
33  y2 -0.11897779
34  y2 -1.05575302
35  y2  1.20971004
36  y2  1.55745467
37  y2 -0.74253496
38  y2  1.07759474
39  y2  0.83915414
40  y2 -1.04859906

用了上述结果,就可以非常简单地使用ggplot2进行画图了。

ggplot2进行绘图

我们可以直接使用管道数据的处理方式进行绘图,简便快捷:

dat %>%
  gather(y1, y2, key = "var", value = "value") %>%
  ggplot(aes(x = value)) +
  geom_histogram(aes(fill = factor(var), y = ..density..),
                 alpha = 0.3, colour = 'black') +
  stat_density(geom = 'line', position = 'identity', size = 1.5,
               aes(colour = factor(var))) +
  facet_wrap(~ var, ncol = 2) +
  labs(y = '直方图与密度曲线', x = '值',
       title = '标题', fill = '变量') +
  theme(plot.title = element_text(hjust = 0.5)) +
  guides(color = FALSE)

这里基本都是前面的博客:R语言学习ggplot2绘制统计图形包全面详解 里面有提及到。

只有一个就是guides(color = FALSE),表示隐藏线颜色的图例,因为线的颜色我们是用color =来指定的。同理如果要隐藏柱状图颜色的图例则使用 guides(fill = FALSE)即可。

最终就可以得到我们的目标绘图了!

以上就是R语言可视化tidyr与ggplot2多个变量分层展示举例实现的详细内容,更多关于R语言可视化tidyr与ggplot2多个变量分层的资料请关注我们其它相关文章!

(0)

相关推荐

  • R语言绘图时输出希腊字符上下标及数学公式实现方法

    目录 希腊字母 上下标 paste 一个复杂的例子 进阶 数学公式 通常在我们写论文时,所需要的统计图是非常严谨的,里面的希腊字符与上下脚标都必须要严格书写.因此在使用R绘图时,如何在我们目标图中使用希腊字符.上标.下标及一些数学公式呢?在本博客中我们会进行详细的说明. 后面我们都将以一个最简单的绘图为例,只是将其标题进行修改. 希腊字母 使用希腊字符.上标.下标及数学公式,都需要利用一个函数:expression(),具体使用方式如下: plot(cars) title(main = expr

  • R语言 ggplot2改变柱状图的顺序操作

    如下所示: library(ggplot2) library(ggthemes) dt = data.frame(obj = c('A','D','B','E','C'), val = c(2,15,6,9,7)) dt$obj = factor(dt$obj, levels=c('D','B','C','A','E')) ## 设置柱条的顺序 p = ggplot(dt, aes(x = obj, y = val, fill = obj, group = factor(1))) + geom_

  • R语言数据可视化ggplot添加左右y轴绘制天猫双十一销售图

    目录 构造数据集 绘制散点 修改两坐标轴信息 本文是以天猫双十一销量与增长率为例,原始的数据可以参考上一篇文章:用 ggplot 重绘天猫双十一销售额图,这里不再作过多的介绍. 同时整个的天猫双十一的销售额数据分析可以关注:天猫双十一"数据造假"是真的吗? 老规矩,先上最终成果(两张图只是颜色的差别): 上图左边 y 轴表示增长率的刻度,右边 y 轴表示销售额的数据,我们将两者在同一张图上进行展现.其实将两个统计图在同一个坐标系中呈现不算是这个绘图的难点,其真正的难点在与刻度的变换以及

  • R语言数据可视化分析天猫双十一销售额增长率

    目录 最近和小伙伴一起探索了一下双十一后闹得沸沸扬扬的一篇文章:"淘宝2009-2018年历年双十一销售额数据造假".原文作者使用初中阶段学过的抛物线,就将每年的销售额增长趋势拟合得非常完美. (如果大家想学习如何画出上述的图像,可参见前面一篇博客:用 ggplot 重绘天猫双十一销售额图) 同时在知乎上,这个问题也成功上了当时的热搜榜,各路大神云集,也发表了很多很有意思的观点: 如何看待有人质疑淘宝双十一数据造假,并在4月份成功预测今年销售额为2680亿? 看了很多大神的文章后,自己

  • R语言实现ggplot重绘天猫双十一销售额曲线图过程

    目录 Let's start 输入数据 粗略绘图 完善散点图 添加拟合曲线 在散点上添加销售额 删除不必要的背景线 终极美化 小作业 前一段时间,很多人被这张图刷屏了: 这张图的来源是一篇名为 "淘宝2009-2018年历年双11销售额数据造假" 的文章.图中散点为天猫双十一销售额数据,曲线为原作者拟合的回归线.乍一看散点完美地分布在曲线上,原作者便直接声称:"淘宝双十一销售额数据造假!不可能有这么完美的拟合!" 可事实真的是这样吗? 作为一个热爱画画的博主,我们先

  • R语言学习ggplot2绘制统计图形包全面详解

    目录 一.序 二.ggplot2是什么? 三.ggplot2能画出什么样的图? 四.组装机器 五.设计图纸 六.机器的零件 1. 零件--散点图 1) 变换颜色 2) 拟合曲线 3) 变换大小 4) 修改透明度 5) 分层 6) 改中文 2. 零件--直方图与条形图 1) 直方图 2) 润色 3) 条形图 3. 零件--饼图 4. 零件--箱线图 5. 零件--小提琴图 6. 零件打磨 7. 超级变变变 8. 其他常用零件 七.实践出真知 八.学习资源 九.参考资料 一.序 作为一枚统计专业的学

  • R语言数据可视化tidyr与ggplot2多个变量分层展示举例实现

    目录 每个变量的密度分布情况 思考 tidyr ggplot2进行绘图 在R语言普通的绘图中,使用par()参数可以在一张图上实现不同变量的子图.如果我们想要用ggplot2实现,则需要整理我们的原始数据,这通常是非常麻烦的,这时就需要用到我们的tidyr来帮助我们绘图. 可能说上面一段话不是很容易理解,下面我们来举个栗子. 每个变量的密度分布情况 y1 <- rnorm(20) y2 <- rnorm(20) dat <- data.frame(y1, y2) 现有的数据集: y1 y

  • R语言数据可视化包ggplot2画图之散点图的基本画法

    目录 前言 下面以一个简单的例子引入: 首先介绍第一类常用的图像类型:散点图 给原始数据加上分类标签: 按z列分类以不同的颜色在图中画出散点图: 按z列分类以不同的形状在图中画出散点图: 多面化(将ABC三类分开展示): 自定义颜色: 添加拟合曲线: 更换主题 : 总结 前言 ggplot2的功能很强大,并因为其出色的画图能力而闻名,下面来介绍一下它的基本画图功能,本期介绍散点图的基本画法. 在ggplot2里,所有图片由6个基本要素组成: 1. 数据(Data) 2. 层次(Layers),包

  • R语言数据可视化ggplot绘制置信区间与分组绘图技巧

    目录 1. 单组情况 1)构造数据集 2)绘制置信区间 2. 多组情况 方法1 1)构造数据集 2)绘制置信区间 方法2 1)构造数据集 2)绘制置信区间 3)美化 1. 单组情况 1)构造数据集 x <- 1:10 y <- x^2 ci_l <- x^2 - 0.5 * x ci_r <- x^2 + 0.5 * x dat_plot <- data.frame(x, y, ci_l, ci_r) 数据集长下面这样: x y ci_l ci_r 1 1 1 0.5 1.5

  • R语言数据可视化绘制Circular bar plot实现环形柱状图

    目录 Step1. 绘图数据的准备 Step2. 绘图数据的读取 Step3.绘图所需package的调用 Step4.绘图 环形柱状图 排好序的环形柱状图 调整颜色 注意事项 不知不觉,距离小仙上次发文已经过去五个多月了.R语言作图系列的更新频率跟理想中的一月一次差别有点忒大了,不得不让小仙陷入深深的反思,对于时间的规划也有了一些新的感悟.不知道大家有没有跟我一样的感受啊,举些例子:放学.下班或者放假之后先把学习任务扔在一边,心想着,我先玩会游戏,等会玩够了再做:网上看到一篇干货满满的文章,先

  • R语言数据可视化绘图Dot plot点图画法示例

    目录 Step1. 绘图数据的准备 Step2. 绘图数据的读取 Step3.绘图所需package的安装.调用 Step4.绘图 添加平均值 添加误差线 今天要给大家介绍的是点图(Dot plot),点图展示的数据比较简单,但胜在好看啊. 作图数据如下: Step1. 绘图数据的准备 首先要把你想要绘图的数据调整成R语言可以识别的格式,建议大家在excel中保存成csv格式. Step2. 绘图数据的读取 data<-read.csv("your file path", hea

  • R语言数据可视化绘图Slope chart坡度图画法

    目录 Step1. 绘图数据的准备 Step2. 绘图数据的读取 Step3. 绘图所需package的安装.调用 Step4. 绘图 今天小仙给大家分享一下Slope chart(坡度图)的画法,我在paper中看到的图是这样的 这个图的意思大概是Nasal Tissue比Brochial Tissue的ACE2表达量高(ACE2就是新冠病毒的受体啦) .为了复刻这张图,小仙捏造了一组差不多的数据,竟然感觉比原图好看! 废话不多说,进入正题. Step1. 绘图数据的准备 首先要把你想要绘图的

  • R语言数据可视化学习之图形参数修改详解

    1.图形参数的修改par()函数 我们可以通过使用par()函数来修改图形的参数,其调用格式为par(optionname=name, optionname=name,-).当par()不加参数时,返回当前图形参数设置的列表:par(no.readonly=T)将生成一个可以修改当前参数设置的列表.注意以这种方式修改参数设置,除非参数再次被修改,否则一直执行此参数设置. 例如现在想画出mtcars数据集中mpg的折线图,并用虚线代替实线,并将两幅图排列在同一幅图里,代码及图形如下: > opar

  • R语言数据可视化绘图bar chart条形图实现示例

    时光飞逝,岁月如梭,转眼又是一年过去了,本小仙怎么还是一事无成呢! 转念一想,这种事也不是一次两次了,再多一个又何妨,哈哈! 回归正题,今天就给大家介绍下直方图(histogram)的“好兄弟”——条形图(bar chart).假设小仙同学现在要帮一家书店用图形展示2018年最受大家欢迎的书目,数据如下图. 条形图画出来还挺好看,可是跟小仙想象中的可不一样.明明我的数据是按照销量从高到低排列的,为什么画出来却是按照字母顺序排列的呢? 使用了对因子进行排序的函数reorder()之后,就变成了下图

随机推荐