ggvis包的目標是爲探索性數據分析提供一個簡單的方式來建立可交互圖。ggvis與ggplot2
基於類似的底層理論,可是在表達上略有不一樣,並且添加了新的特性---圖片可交互。ggvis
包歸入了shiny可交互編程的模型以及dplyr包數據轉換的內容。html
因ggvis包與ggplot2包有類似的底層理論,因此本筆記在介紹學習ggvis包的內容的時候,
都會與ggplot2包來做比較。編程
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包中%>%符號的使用。
學習
library(dplyr) mtcars %>% ggvis(x = ~mpg, y = ~disp) %>% mutate(disp = disp / 61.0237) %>% layer_points()
解釋:
變量名稱前面使用~
代表咱們不想隨便使用mpg變量,而是咱們想要使用數據集中的mpg變量。這是ggvis包中的常規形式:老是使用這種格式表示數據集中變量。spa
方便起見,ggvis函數中x=
和y=
能夠省略。3d
上面的例子整合了dplyr包的mutate函數對數據集中的disp進行處理,可見利用%>%符號的方便之處。或許你和我同樣有疑問:爲何ggvis函數在mutate函數以前,那麼ggvis函數使用的仍是修改過的disp嗎?下面的例子將兩個函數位置顛倒,最終圖形一致。該例子中雖然顛倒順序最終的圖形是一致的,可是相信我,後面有的例子顛倒順序結果是不同的,因此個人建議就是按照正常人的思路去使用%>%來串聯數據處理與做圖
。所以本例子我我的(正常人)推薦後面這一種寫法。code
library(dplyr) mtcars %>% mutate(disp = disp / 61.0237) %>% ggvis(x = ~mpg, y = ~disp) %>% layer_points()
ggplot2包做圖命令以下:htm
library(dplyr) temdata <- mtcars %>% mutate(disp = disp/61.0237) ggplot(temdata, aes(mpg, disp))+ geom_point()
添加其餘變量到其餘可視化特性中例如fill、stroke、size、shape。blog
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
: 形狀
這四個參數在不一樣的圖形中是否都存在或者表明的圖形屬性都須要針對不一樣的圖形來看,如今就慢慢經過例子來掌握吧。
如何在上面提到的特性參數中使用原始值?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