标签: ggvis

带有HTML的shiny,ggvis和add_tooltip

如何tags$...在ggvis交互式图形中使用这些功能?

一个"小"和人为的例子:

library(ggvis)
library(shiny)
n <- 20
data <- data.frame(
    xs = 1:n, ys = rnorm(n),
    color = sample(c('red', 'green', 'blue'), n, replace = TRUE),
    size = 25 * sample(6, n, replace = TRUE),
    rownum = 1:n)

ttFunc1 <- function(x) {
    paste('<table>',
          paste(apply(data.frame(n = names(data),
                                 x = unlist(format(data[x$rownum,]))), 1,
                      function(h) paste('<tr><td>', h[1],
                                        '</td><td>', h[2],
                                        '</td></tr>')),
                collapse = ''),
          '</table>')
}

ttFunc2 <- function(x) {
    tags$table(
        lapply(1:ncol(data),
               function(cc) {
                   tags$tr(tags$td(names(data)[cc]),
                           tags$td(format(data[x$rownum,cc])))
               }))
}

shinyApp(
    ui = fluidPage(
        uiOutput('gg_ui'),
        ggvisOutput('gg') …
Run Code Online (Sandbox Code Playgroud)

r shiny ggvis

6
推荐指数
1
解决办法
1263
查看次数

R中的散点图与ggvis:如何绘制具有不同形状标记和相应拟合回归线的多个组

要用ggvis包装在R中绘制以下内容,

在此输入图像描述

代码是

mtcars %>% 
  ggvis(~wt, ~mpg, fill = ~factor(cyl)) %>% 
  layer_points() %>% 
  group_by(cyl) %>% 
  layer_model_predictions(model = "lm")
Run Code Online (Sandbox Code Playgroud)

如果我在上面更改了fillto shape,则会出现错误:

Error: Unknown properties: shape.
Did you mean: stroke?
Run Code Online (Sandbox Code Playgroud)

为什么?如何达到预期的效果?

plot r scatter-plot ggvis

6
推荐指数
1
解决办法
1624
查看次数

让ggvis :: export_png()正常工作

目标

ggvis图形导出为PNG文件(包含在.Rmd文档中).

问题

我基本上对Node.js一无所知,除了它很棒,我应该知道更多.

我得到:

library(ggvis)
mtcars %>% ggvis(~mpg, ~wt) %>% export_png()
Writing to file plot.png
Guessing layer_points()

module.js:340
    throw err;
          ^
Error: Cannot find module 'd3'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (/usr/local/src/vega/index.js:11:6)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
Run Code Online (Sandbox Code Playgroud)

建立

平台

  • OS X Mavericks(10.9.5)
  • RStudio(0.98.945)
  • 用于devtools::install_github("hadley/ggvis")安装ggvis(0.3.0.9001)和依赖项
  • 克隆https://github.com/trifacta/vega/usr/local/src/vega
  • 符号链接 ./bin/vg2png -> /usr/local/src/vega/bin/vg2png

sessionInfo()

sessionInfo() …
Run Code Online (Sandbox Code Playgroud)

r node.js knitr vega ggvis

6
推荐指数
1
解决办法
575
查看次数

knitr文档中的ggvis动态/交互式图

我想知道是否有人能够使用动态图来处理文档.当我制作我的情节并且使用后交互式工具提示不起作用时,我收到以下警告knitr.

警告:无法在knitr文档中输出动态/交互式ggvis图.生成绘图的静态(非动态,非交互)版本.

df %>%
  ungroup() %>%
  ggvis(~Week,~Rank, stroke = ~Team) %>%
  layer_points(size := 40, size.hover := 200, fill = ~Team, key:=~id) %>%
  layer_lines(stroke.hover = ~Team, strokeWidth.hover := 8, strokeWidth := 1) %>%
  add_axis("x", title="Week",  subdivide = 0, values = seq(1, 17, by = 1), format="####") %>%
  add_axis("y", title="Rank", subdivide = 0, values = seq(1, 10, by = 1), format='####') %>%
  scale_numeric("y", reverse=TRUE) %>%
  add_tooltip(all_values, "hover")
Run Code Online (Sandbox Code Playgroud)

编织.Rmd文件后,一切正常,除了add_tooltip()

r knitr ggvis

6
推荐指数
0
解决办法
337
查看次数

ggvis - 条形图的交互式X轴

我正在研究用ggvis构建一个闪亮的应用程序.为此,我使用了一个名为"company"的小数据集.它包含每行代表和员工的员工数据.

从ggvis的角度来看,我正在尝试以下方法:创建一个条形图,显示以下变量的分布:

  • 年龄
  • 角色
  • 性别

而不是使用以下代码创建三个不同的条形图:

#Barcharts - Role
company %>% ggvis(~Role,opacity := 0.8, fill:= "firebrick") %>%
  layer_bars() %>%
  scale_ordinal('x', domain=c('Analyst','Consultant','Software Engineer','Manager','Director'))

#Barcharts - Age
company %>% ggvis(~Age,opacity := 0.8, fill:= "firebrick") %>%
  layer_bars()

#Barcharts - Sex
company %>% ggvis(~Sex,opacity := 0.8, fill:= "firebrick") %>%    
  layer_bars()
Run Code Online (Sandbox Code Playgroud)

我想创建一个允许输入选择器的ggvis条形图.

我试过以下代码:

company %>% ggvis(input_select(c("Sex","Role","Age"), map = as.name)) %>% layer_bars()
Run Code Online (Sandbox Code Playgroud)

返回以下错误:

Error: Visual property x.update is not a variable
Run Code Online (Sandbox Code Playgroud)

使用的数据是:

raw <- "Age Sex Role
35   M          Director
37   M          Director
30   M           Manager …
Run Code Online (Sandbox Code Playgroud)

r shiny ggvis

6
推荐指数
1
解决办法
912
查看次数

R:如何在ggvis闪亮应用中更改特定范围的绘图背景颜色

我有一个简单的闪亮应用程序,如下所示,你可以运行它.这些图是由ggvis用户创建的,用户可以从中选择学生姓名inputSelect.在图中,我想要更改特定分数范围内的背景颜色.例如,在每个图中,分数高于80或低于50的绘图背景颜色用蓝色突出显示(参见附图).我试图添加图层并使用绘制矩形到情节layer_rects(),但问题是如果选择不同的学生,x轴的值会改变.任何人之前做过这个或任何想法?如果我只想要那个得分范围内的积分弹出,是否有可能?非常感谢!

示例图片

  library(shiny)
    library(ggvis)

df <- data.frame(Student = c("a","a","a","a","a","b","b","b","b","b","c","c","c","c"),
                 year = c(seq(2001,2005,1),seq(2010,2014,1),seq(2012,2015,1)),
                 score = runif(14,min = 50,max = 100), stringsAsFactors=F)

ui = (fluidPage(
  sidebarLayout(
    sidebarPanel(
      selectInput("stu","Choose Student",
                  choice = unique(df$Student))
    ),
    mainPanel(ggvisOutput("plot"))
    )
  )
)

server = function(input,output,session){   

  dataInput = reactive({
    gg = df[which(df$Student == input$stu),]
  })

  vis = reactive({
    data = dataInput()
    data %>%
      ggvis(x = ~year, y = ~score) %>%
      scale_numeric("y",domain = c(40,120))%>%
      layer_lines()
  })

  vis %>% bind_shiny("plot")
}

runApp(list(ui = …
Run Code Online (Sandbox Code Playgroud)

r shiny ggvis

6
推荐指数
1
解决办法
416
查看次数

如何使用ggvis将多个图形放在一个图中

样本数据:

y1 = c(1,2,3,4)
y2 = c(6,5,4,3)
x  = c(1,2,3,4)
df = data.frame(x,y1,y2)
Run Code Online (Sandbox Code Playgroud)

我的问题:

我想将以下两个图组合成一个,使用ggvis:

df %>% ggvis(~x,~y1) %>% layer_paths()
df %>% ggvis(~x,~y2) %>% layer_paths()
Run Code Online (Sandbox Code Playgroud)

但是,以下不起作用:

df %>% ggvis(~x,~y1) %>% layer_paths() %>% ggvis(~x,~y2) %>% layer_paths()
Run Code Online (Sandbox Code Playgroud)

r ggvis

5
推荐指数
1
解决办法
5084
查看次数

ggvis并排条形图按第二个变量分组

我正在从Excel迁移到ggvis进行数据分析.对于具有两个变量的典型分组条形图,但是我难以并排绘制 条形图而不是堆叠.

以下数据具有四个步骤A,B,C,D,其具有来自两个特征cc,ca的"比率"数据.我的尝试是并排绘制cc和ca特征的比率.但是,默认情节是将两个数据叠加在一起.检查ggvis vignetts有一个选项来设置stack = FALSE.但它会与其他功能重叠.

ggvis中是否有选项可以在ggplot中执行"geom_bar(position ="dodge")"等操作?

library(ggvis)
steps <-c("A","B","C","D","A","B","C","D")
ratio <-c(1.1,1.5,1.7,1.4,1.5,1.7,1.4,1.9)
feature <-c("cc","cc","cc","cc","ca","ca","ca","ca")
shrink <- data.frame(steps,ratio,feature)
shrink %>% ggvis(x= ~steps, y= ~ratio, fill = ~feature) %>% layer_bars()
Run Code Online (Sandbox Code Playgroud)

r bar-chart ggvis

5
推荐指数
1
解决办法
1909
查看次数

调整x限制ggplot2 geom_density()中的xlim()以模仿ggvis layer_densities()行为

有没有办法让ggplot2的geom_density()函数模仿ggvis的行为layer_densities()?也就是说,在没有调用的情况下使它p1看起来如此p3(见下文)xlim()?具体来说,我更喜欢使密度曲线的尾部平滑的视图.

library(ggvis)
library(ggplot2)

faithful %>% 
  ggvis(~waiting) %>% 
  layer_densities(fill := "green") -> p1

ggplot(faithful, aes(x = waiting)) +
  geom_density(fill = "green", alpha = 0.2) -> p2

ggplot(faithful, aes(x = waiting)) +
  geom_density(fill = "green", alpha = 0.2) +
  xlim(c(30, 110)) -> p3

p1
p2
p3
Run Code Online (Sandbox Code Playgroud)

ggvis输出: P1

ggplot2"默认": P2

ggplot2"需要": P3

注意:可以通过以下(使用trim=TRUE)制作ggvis mimic ggplot2 ,但我想转向另一个方向......

faithful %>% 
  compute_density(~waiting, trim=TRUE) %>% 
  ggvis(~pred_, ~resp_) %>% 
  layer_lines()
Run Code Online (Sandbox Code Playgroud)

r ggplot2 ggvis

5
推荐指数
1
解决办法
6238
查看次数

R ggvis来自单个数据帧的多个图

我已经搜索过了,如果我遗失了什么,请原谅我.

我们假设一个数据框包含名称,日期,卡路里,其中卡路里是当天消费的卡路里总数.

Name    Date    Calories
Amy     1/1/01  1500
Amy     1/2/01  1600
Amy     ...     ...
Sue     1/1/01  1450
Sue     1/1/02  1500
Sue     ...     ...
Jim     ...     ...
Run Code Online (Sandbox Code Playgroud)

我想做的是使用ggvis绘制每个人的卡路里(姓名).我知道我可以使用dplyr的group_by,并在单个情节中得到这个,但那太忙了.而且我知道我可以使用dplyr的过滤器并过滤掉每个人并为每个人制作一个图表,但这不会扩展.

有没有办法让ggvis自动为每个人吐出每天卡路里的情节?

请注意,我尝试创建如下所示的函数:

makeCharts <- function(myName){
   myTbl %>% filter(Name == myName) %>% ggvis(~Date, ~Calories)
}
Run Code Online (Sandbox Code Playgroud)

手动调用它时效果很好:

makeCharts("Amy")
Run Code Online (Sandbox Code Playgroud)

但是当你通过sapply调用它时:

sapply(levels(myTbl$Name), makeCharts)
Run Code Online (Sandbox Code Playgroud)

输出如下所示:

           Amy    Sue    Jim    John   Sally  Frank  Sandy   etc...     
marks      List,0 List,0 List,0 List,0 List,0 List,0 List,0 List,0 List,0  List,0 List,0 List,0 List,0  List,0 List,0
data       List,1 List,1 List,1 List,1 List,1 List,1 List,1 List,1 …
Run Code Online (Sandbox Code Playgroud)

r dplyr ggvis

5
推荐指数
1
解决办法
860
查看次数

标签 统计

ggvis ×10

r ×10

shiny ×3

knitr ×2

bar-chart ×1

dplyr ×1

ggplot2 ×1

node.js ×1

plot ×1

scatter-plot ×1

vega ×1