ggvis是R的一個數據可視化包,它可以:
- 聲明性地使用與ggplot2類似的語法描述數據圖形;
- 創建豐富的交互式圖形,在本地Rstudio或瀏覽器中使用這些圖形;
- 利用shiny的基礎結構發布可從任何瀏覽器(在公司內部或向全世界)使用的交互式圖形。
目標是將R的優點(比如你能想到的所有建模功能)和web的優點(每個人都有一個web瀏覽器)結合起來。數據操作和轉換是在R中完成的,圖形是在web瀏覽器中使用Vega呈現的。對於RStudio用戶,ggvis圖形顯示在查看器面板中,這是可能的,因為RStudio是一個web瀏覽器。
1. 入門
library(ggvis) library(dplyr) mtcars %>% ggvis(~wt, ~mpg) %>% layer_points(fill = ~factor(cyl), size := 25, shape := "diamond", stroke := "red") %>% group_by(cyl) %>% layer_model_predictions(model = "lm", se = TRUE)
ggvis VS ggplot2主要區別:http://ggvis.rstudio.com/ggplot2.html
- ggplot→ggvis
- geom→layer function
- stat→compute function
- aes→props
- +→%>%
- ggvis目前不支持分面;
- 使用ggvis而不添加任何層類似於qplot。
2. 交互
動態輸入:
mtcars %>% ggvis(~wt, ~mpg, size := input_slider(10, 100), opacity := input_slider(0, 1) ) %>% layer_points()
鼠標提示:
mtcars %>% ggvis(~wt, ~mpg) %>% layer_points() %>% add_tooltip(function(df) df$wt)
在Shiny中使用:
# ui.R library(shiny) # Define UI for miles per gallon application shinyUI(sidebarLayout( sidebarPanel( sliderInput("size", "Area", 10, 1000, 500) ), mainPanel( uiOutput("ggvis_ui"), ggvisOutput("ggvis") ) ))
# server.R library(shiny) library(ggvis) library(dplyr) mpgData <- mtcars mpgData$am <- factor(mpgData$am, labels = c("Automatic", "Manual")) # Define server logic required to plot various variables against mpg shinyServer(function(input, output) { input_size <- reactive(input$size) mtcars %>% ggvis(~disp, ~mpg, size := input_size) %>% layer_points() %>% bind_shiny("ggvis", "ggvis_ui") })