R语言数据可视化tidyr与ggplot2多个变量分层展示的实现方法是什么
本篇内容主要讲解"R语言数据可视化tidyr与ggplot2多个变量分层展示的实现方法是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"R语言数据可视化tidyr与ggplot2多个变量分层展示的实现方法是什么"吧!
在R语言普通的绘图中,使用par()
参数可以在一张图上实现不同变量的子图。如果我们想要用ggplot2
实现,则需要整理我们的原始数据,这通常是非常麻烦的,这时就需要用到我们的tidyr
来帮助我们绘图。
可能说上面一段话不是很容易理解,下面我们来举个栗子。
每个变量的密度分布情况
y1 <- rnorm(20)y2 <- rnorm(20)dat <- data.frame(y1, y2)
现有的数据集:
y1 y21 -0.12781723 -2.393768802 0.50074083 0.725552373 -0.02419456 0.947217014 -0.26366759 -0.600067595 1.13042618 -0.075910466 0.04313160 1.186777427 0.01180343 0.176277008 0.15208821 -0.124723919 -0.72690758 -1.9223317010 1.04903577 -0.6620897411 0.89689082 0.1633192912 0.28471495 2.0062912713 -0.26956768 -0.1189777914 -0.81699454 -1.0557530215 -0.65923768 1.2097100416 0.18237270 1.5574546717 -0.52359358 -0.7425349618 1.36949647 1.0775947419 -0.39882438 0.8391541420 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 value1 y1 -0.127817232 y1 0.500740833 y1 -0.024194564 y1 -0.263667595 y1 1.130426186 y1 0.043131607 y1 0.011803438 y1 0.152088219 y1 -0.7269075810 y1 1.0490357711 y1 0.8968908212 y1 0.2847149513 y1 -0.2695676814 y1 -0.8169945415 y1 -0.6592376816 y1 0.1823727017 y1 -0.5235935818 y1 1.3694964719 y1 -0.3988243820 y1 0.9208494921 y2 -2.3937688022 y2 0.7255523723 y2 0.9472170124 y2 -0.6000675925 y2 -0.0759104626 y2 1.1867774227 y2 0.1762770028 y2 -0.1247239129 y2 -1.9223317030 y2 -0.6620897431 y2 0.1633192932 y2 2.0062912733 y2 -0.1189777934 y2 -1.0557530235 y2 1.2097100436 y2 1.5574546737 y2 -0.7425349638 y2 1.0775947439 y2 0.8391541440 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多个变量分层展示的实现方法是什么"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!