标签: ggvis

热图与ggvis中的数字

我正在尝试使用ggvis中的ggplot2中的数字来复制热图.ggplot2版本是

library(ggplot2)
hec <- as.data.frame(xtabs(Freq ~ Hair + Eye, HairEyeColor))
ggplot(hec, aes(Hair, Eye)) +
geom_tile(aes(fill = Freq)) + 
geom_text(aes(label = Freq),colour="white") 
Run Code Online (Sandbox Code Playgroud)

它看起来像那样 在此输入图像描述

我在ggvis中的版本是

hec%>%
ggvis(~Hair, ~Eye, fill=~Freq)%>%
layer_rects(width = band(), height = band()) %>%
layer_text(text:=~Freq,fontSize := 20, fill:="white",baseline:="top",align:="center") %>%
scale_nominal("x", padding = 0, points = FALSE) %>%
scale_nominal("y", padding = 0, points = FALSE) 
Run Code Online (Sandbox Code Playgroud)

结果并不完美

在此输入图像描述

我试图通过手动添加边距来修复数字对齐,但这种情况不可调整大小.

有任何想法吗?

r ggvis

8
推荐指数
1
解决办法
2175
查看次数

ggvis中的自定义填充颜色(和其他选项)

我正在尝试使用ggvis为2014赛季创建一个NFL力量表.这些数据来自FootballOutsiders.com,后来我将制作一个Shiny应用程序,在该季节更新时会自动从网站上删除数据.下面的例子非常接近,但我想做一些修改.我想要...

  1. 在图表的每个单元格中包含"防御"的数值,因此可视化类似于原始的"df"数据框.

  2. 自定义色标,使正值越来越橙色,负值越来越蓝(即更负 - 更蓝).

  3. #2的替代方案可以是从橙色到蓝色的渐变,并且当"防御"的值接近零时,使不透明度降低到0.5.

  4. 能够选择NA的颜色,因为它当前在图表中显示为黑色.

我一直在摆弄周围add_scale()props(),但没有迄今工作.

这是图表: 在此输入图像描述

这是数据:

df <- structure(list(team = c("ARI", "ATL", "BAL", "BUF", "CAR", "CHI", 
"CIN", "CLE", "DAL", "DEN", "DET", "GB", "HOU", "IND", "JAX", 
"KC", "MIA", "MIN", "NE", "NO", "NYG", "NYJ", "OAK", "PHI", "PIT", 
"SD", "SEA", "SF", "STL", "TB", "TEN", "WAS"), w1 = c(17.5, -5.8, 
-12.6, 8.7, -6.8, -13.8, -8.7, 4, -4.6, 0.9, -11.4, -25.9, 4.2, 
-0.2, 4.9, 4.2, 4.2, -5.7, 2.4, 13.5, -0.8, 10.3, -5.6, 10.9, 
8.2, -16.4, 14.4, 13.8, …
Run Code Online (Sandbox Code Playgroud)

r ggvis

8
推荐指数
1
解决办法
4344
查看次数

ggvis/layer_paths中的颜色路径段

我有多个具有多个段的路径.如何用相同的颜色为每条路径的第N段着色?

例如:

require(dplyr)
require(ggvis)
df <- data.frame(x = runif(10,0,10), y = runif(10,0,10), 
                 group=c(rep(5,5),rep(10,5)), colorIdx=rep(c(1:5), 2))
df$group = factor(df$group)

color_fun = colorRampPalette(c("yellow","blue"),5)

myColors = color_fun(5)

df$color = myColors[df$colorIdx]

df %>% group_by(group) %>% 
  ggvis(~x, ~y, strokeWidth:=~group) %>% layer_paths(stroke :=~color)
Run Code Online (Sandbox Code Playgroud)

产生的路径是单色的 - 我希望它们从黄色到蓝色.

在此输入图像描述

使用ggplot2,可以通过以下方式完成:

require(ggplot2)
ggplot(df, aes(x=x, y=y, group=group, colour=colorIdx, size=group)) + geom_path() +
  scale_colour_gradient("", low="#FED863", high="#2A6EBB", limits=c(1,4))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

r ggvis

8
推荐指数
1
解决办法
737
查看次数

ggVis:在不同的数据集上创建具有多个图层的图

我正在尝试使用ggvis重现ggplot2图.该图旨在表示点的坐标(来自对应分析)以及它们的簇(hclust)标准色散椭圆.


TL; DR

我想基于多个数据集制作一个包含多个图层的ggvis图.因此,功能/管道方法阻止我分组其中一个层而不是另一个.

整个(简要评论)代码在那里:https://gist.github.com/RCura/a135446cda079f4fbc10


这是创建数据的代码:

 a <- rnorm(n = 100, mean = 50, sd = 5)

 b <- rnorm(n = 100, mean = 50, sd = 5)

 c <- rnorm(n = 100, mean = 50, sd = 5)

 mydf <- data.frame(A = a, B = b, C = c, row.names = c(1:100))

 library(ade4)

 myCA <- dudi.coa(df = mydf,scannf = FALSE,  nf = 2)

 myDist <- dist.dudi(myCA, amongrow = TRUE)

 myClust <- hclust(d = myDist, method = …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 ggvis

8
推荐指数
1
解决办法
2350
查看次数

无法通过ggvis进行交互式缩放

我正在尝试使用ggvis进行交互式缩放,尤其是使用画笔进行缩放.从https://github.com/rstudio/ggvis/issues/143来看,我认为这应该有效.

我有以下闪亮和ggvis代码(完全可重现):

## ui.R
library(ggvis)

shinyUI(fluidRow(
  uiOutput('ui_plot1'),
  ggvisOutput("graph_plot1")
))

## server.R
shinyServer(function(input, output, session) {
  domains <- reactiveValues(x = c(NA, NA), y = c(NA, NA))

  zoom_brush = function(items, session, page_loc, plot_loc, ...) {
    domains$x = c(200, 400)
  }

  plot = reactive({
    mtcars %>% 
      ggvis(~disp, ~mpg) %>%
      layer_points() %>%
      scale_numeric('x', domain = domains$x, clamp = TRUE) %>% 
      handle_brush(zoom_brush)
  }) %>% bind_shiny('graph_plot1', 'ui_plot1')
})
Run Code Online (Sandbox Code Playgroud)

因此,只要绘制画笔,就会改变反应域,这反过来会改变x的域scale_numeric.如果仍有以下挑战:

  • 在里面zoom_brush我得到画笔的坐标,但是在图的像素坐标系中不是域坐标系.如何将像素转换为域规模?在d3中我可以简单地使用范围来缩放变换函数,但是我没有看到这些在ggvis中是如何可用的(通过vega).
  • handle_brush函数仅支持设置on_move事件处理程序.在这种情况下,我只想在画笔完成时触发缩放,因此刷子上下文中的onmouseup事件.我担心现在根本不可能这样做?
  • 只有当我设置clamp = TRUE时才能获得有效的变焦.否则,仍会显示域外的点,只有轴设置为新域.这有一个简单的解决方案吗?或者我应该使数据集成为被动的,并根据刷子设置的域对其进行子集化?

我运行以下R版本和软件包版本.

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

r ggvis

8
推荐指数
1
解决办法
796
查看次数

鼠标悬停时Rstudio闪亮的ggvis工具提示

在下面的例子,我有一个互动的闪亮ggvis情节,但我添加了一个long列,它是一个长字符串,由于某种原因,我悬停弹出节目wtmpg,但不显示long.

此外,如果图例中的元素列表太长,它们将隐藏在图的右下角.有没有办法在图例中的几列中堆叠这些?

有任何想法吗?

# ui.R
library(ggvis)
shinyUI(pageWithSidebar(
  div(),
  sidebarPanel(
    sliderInput("n", "Number of points", min = 1, max = nrow(mtcars),
                value = 10, step = 1),
    uiOutput("plot_ui")
  ),
  mainPanel(
    ggvisOutput("plot"),
    tableOutput("mtc_table")
  )
))


# server.R
library(shiny)
library(ggvis)
shinyServer(function(input, output, session) {
  # A reactive subset of mtcars
  mtc <- reactive({
      data = mtcars[1:input$n, ]
      data$long = as.character(paste0("A car with ",data$cyl," cylinders and ",data$gear," gears and ",data$carb, " carburators"))
      data
  })
  # A simple …
Run Code Online (Sandbox Code Playgroud)

r shiny ggvis

7
推荐指数
2
解决办法
9034
查看次数

设置整个ggvis图的高度和宽度,包括轴和轴标签

我希望我的ggvis图有一个特定的高度和宽度.

%>% set_options(height = 480, width = 480)仅添加实际绘图的大小,即带有数据的网格为480x480.我希望能够指定整个图像的尺寸,包括轴,刻度和标签.

有什么建议?

编辑:一个完整的例子:

library(ggvis)
mtcars %>% 
    ggvis(~hp,~wt) %>% 
    layer_points() %>% 
    set_options(height = 480, width = 480)
Run Code Online (Sandbox Code Playgroud)

plot r ggvis

7
推荐指数
1
解决办法
1622
查看次数

控制ggvis中r因子组的颜色

我有一个关于控制ggvis中数据点的颜色的问题.

我有一个数据框,我正在以多种方式过滤(在一个闪亮的应用程序内,如果它很重要).这导致通常不通过存在于得到的滤波数据帧中来观察组I着色数据点.这显然导致出现在不同图中的不同颜色,这是令人困惑的.

这是一个非常接近的例子:

set.seed(101)
dfvis <- data.frame(x = runif(20), y = runif(20), mygroup = LETTERS[1:5])
dfvis


dfvis %>% 
  ggvis(x= ~x, y= ~y)  %>% 
  layer_points(fill = ~factor(mygroup))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

让我们过滤一组 -

  dfvis <- dfvis %>% filter(mygroup!="A")

    dfvis %>% 
      ggvis(x= ~x, y= ~y)  %>% 
      layer_points(fill = ~factor(mygroup))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这里,"B"现在是蓝色,所有其他组在颜色顺序方面向上移动一个.

有没有办法,当在同一个df上做多个过滤器时,总是为每个因子/组的级别确保相同的颜色?

之前在ggplot中工作的一个技巧是在每个因子级别的数据帧末尾添加一个NA观测值.乍一看,这可以正常工作,因为颜色按照正确的顺序返回,但请注意左上角的流氓数据点!

dfvis1 <- rbind(dfvis, data.frame(x=NA, y=NA, mygroup="A"))

dfvis1 %>% 
  ggvis(x= ~x, y= ~y)  %>% 
  layer_points(fill = ~factor(mygroup))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

所有帮助赞赏.

r ggvis

7
推荐指数
1
解决办法
2068
查看次数

使用ggvis记录比例和限制

嗨,我对ggvis中的音阶有点困惑.我正在尝试做两件事:一件是对数刻度(相当于plot()中的log ="x").我也在寻找相当于xlim = c()的东西.在这两种情况下,下面的代码都没有给出预期的结果.

# install.packages("ggvis", dependencies = TRUE)
library(ggvis)
df <- data.frame(a=c(1, 2, 3, 1000, 10000), b=c(0.1069, 0.0278, 0.0860, 15.5640, 30.1745))
df %>% ggvis(~a, ~b)
df %>% ggvis(~a, ~b) %>% scale_numeric("x", trans="log")
Run Code Online (Sandbox Code Playgroud)

请注意,使用trans ="log"时,所有点都位于绘图的左侧,并且刻度消失.

接下来,我想将绘图限制为某些值.我可以对数据框进行子集化,但我希望从plot()获得相当于xlim的数据.

df %>% ggvis(~a, ~b) %>% scale_numeric("x", trans="linear", domain=c(10, 40))
Run Code Online (Sandbox Code Playgroud)

这甚至给出了更奇怪的结果,所以我猜我可能会错误解释域的作用.

谢谢你的帮助!

r ggvis

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

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 ×10

r ×10

shiny ×2

ggplot2 ×1

plot ×1