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")
})
