什么是ggvis包?
ggvis包的目标是为探索性数据分析提供一个简单的方式来创建可交互图。ggvis与ggplot2
基于相似的底层理论,但是在表达上略有不同,而且添加了新的特性---图片可交互。ggvis
包纳入了shiny可交互编程的模型以及dplyr包数据转换的内容。
因ggvis包与ggplot2包有相似的底层理论,所以本笔记在介绍学习ggvis包的内容的时候,
都会与ggplot2包来作比较。
初识ggvis包?
ggvis包中创建图像的基本函数qvis
(可能不再支持了)与ggvis
,
而ggplot2包中创建图像的基本函数qplot
与ggplot
。
library(ggvis)
#等价于下面的部分:layer_points(ggvis(mtcars, x = ~wt, y = ~mpg))
mtcars %>%
ggvis(x = ~mpg, y = ~disp) %>%
layer_points()
library(ggplot2)
ggplot(mtcars, aes(x = mpg, y = disp)) + geom_point()
注:ggvis支持magrittr包中%>%符号的使用。
ggvis具体例子
例 1
library(dplyr)
mtcars %>%
ggvis(x = ~mpg, y = ~disp) %>%
mutate(disp = disp / 61.0237) %>%
layer_points()
解释:
变量名称前面使用~
表明我们不想随便使用mpg变量,而是我们想要使用数据集中的mpg变量。这是ggvis包中的常规形式:总是使用这种格式表示数据集中变量。方便起见,ggvis函数中
x=
和y=
可以省略。上面的例子整合了dplyr包的mutate函数对数据集中的disp进行处理,可见利用%>%符号的方便之处。或许你和我一样有疑问:为什么ggvis函数在mutate函数之前,那么ggvis函数使用的还是修改过的disp吗?下面的例子将两个函数位置颠倒,最终图形一致。该例子中虽然颠倒顺序最终的图形是一致的,但是相信我,后面有的例子颠倒顺序结果是不一样的,所以我的建议就是
按照正常人的思路去使用%>%来串联数据处理与作图
。因此本例子我个人(正常人)推荐后面这一种写法。
library(dplyr)
mtcars %>%
mutate(disp = disp / 61.0237) %>%
ggvis(x = ~mpg, y = ~disp) %>%
layer_points()
ggplot2包作图命令如下:
library(dplyr)
temdata <- mtcars %>% mutate(disp = disp/61.0237)
ggplot(temdata, aes(mpg, disp))+
geom_point()
例 2
添加其他变量到其他可视化特性中例如fill、stroke、size、shape。
mtcars %>% ggvis(~mpg, ~disp, stroke = ~vs) %>% layer_points()
ggplot(mtcars, aes(mpg, disp, colour = vs))+geom_point(shape=21, fill="black")
stroke
: 画笔颜色
mtcars %>% ggvis(~mpg, ~disp, fill = ~vs) %>% layer_points()
ggplot(mtcars, aes(mpg, disp, colour = vs))+geom_point()
fill
: 填充颜色
mtcars %>% ggvis(~mpg, ~disp, size = ~vs) %>% layer_points()
ggplot(mtcars, aes(mpg, disp, size = vs))+geom_point()
size
: 大小
mtcars %>% ggvis(~mpg, ~disp, shape = ~factor(cyl)) %>% layer_points()
ggplot(mtcars, aes(mpg, disp, shape = factor(cyl)))+geom_point()
shape
: 形状
这四个参数在不同的图形中是否都存在或者代表的图形属性都需要针对不同的图形来看,现在就慢慢通过例子来掌握吧。
例 3
如何在上面提到的特性参数中使用原始值?opacity特性参数
mtcars %>% ggvis(~wt, ~mpg, fill := "red", stroke := "black") %>% layer_points()
ggplot(mtcars, aes(wt, mpg))+geom_point(shape=21, fill="red", color="black")
如果你想用一个混合的colour或者size,你可以使用
:=
代替=
。:=
表示你想用一个原始的值而不是数据集中变量。如果不使用
:=
,而且你还使用了一个原始值,那么对不起,这个参数不会起作用,不信你就试一试吧。
mtcars %>% ggvis(~wt, ~mpg, size := 300, opacity := 0.7) %>% layer_points()
ggplot(mtcars, aes(wt, mpg))+geom_point(size=7, alpha=0.7)
opacity
: 透明度如果将变量映射到opacity特性参数上需要注意,有一部分数据是显示不出来的,因为它们不透明度是0。
mtcars %>% ggvis(~wt, ~mpg, size := 300, opacity = ~cyl) %>% layer_points()
ggplot(mtcars, aes(wt, mpg, alpha=cyl))+geom_point(size=7)
本文主要内容来自:
http://ggvis.rstudio.com/ggvi...
http://ggvis.rstudio.com