ggvis add_tooltip无法使用layer_bars

时间:2015-12-08 10:08:26

标签: r shiny ggvis

我有以下代码,我正在尝试构建闪亮的仪表板。如果我改为layer_point代码可以工作。

我尝试更改为layer_rect - 但是我无法获得带有图层rects的堆积条形图。

我在错误下方附上了一张照片。

enter image description here

color_choices <- c("#08519C","#238B45")

tab2_1 %>%  
  ungroup() %>%
  ggvis(x=~variable, y=~value, fill = ~Tender_won) %>%
  layer_bars() %>% 
  add_axis("y",title="Volume",title_offset=80) %>%
  add_axis("x",title ="Year") %>%
  scale_ordinal("fill",range = color_choices) %>%
  add_tooltip(function(data) paste0("test1",data$value,"test2")) %>%
  add_legend(scales = "fill", values = c("No","Yes"), title = "Tender Status")

数据可以在这里找到:

https://www.dropbox.com/s/3lq6qncru0xuvoc/helphelp.csv?dl=0

1 个答案:

答案 0 :(得分:2)

我将使用hec文档中的compute_stack示例向您展示如何向堆叠条形图添加工具提示的一些示例。工具提示的确切性质取决于您希望工具提示显示的数据。我的猜测是你要显示每个堆积条形部分的长度(原始数据集中的实际y值)。

它帮助我了解layer_bars用于绘图的数据集的外观。您可以直接使用compute_stack并查看生成的数据集来查看此内容。

hec = as.data.frame(xtabs(Freq ~ Hair + Eye, HairEyeColor))
hec %>% compute_stack(~Freq, ~Hair)

Source: local data frame [16 x 6]

     Hair    Eye  Freq group__ stack_upr_ stack_lwr_
   (fctr) (fctr) (dbl)  (fctr)      (dbl)      (dbl)
1   Black  Brown    68   Black         68          0
2   Brown  Brown   119   Brown        119          0
3     Red  Brown    26     Red         26          0
4   Blond  Brown     7   Blond          7          0
5   Black   Blue    20   Black         88         68
6   Brown   Blue    84   Brown        203        119
7     Red   Blue    17     Red         43         26
8   Blond   Blue    94   Blond        101          7
9   Black  Hazel    15   Black        103         88
10  Brown  Hazel    54   Brown        257        203
11    Red  Hazel    14     Red         57         43
12  Blond  Hazel    10   Blond        111        101
13  Black  Green     5   Black        108        103
14  Brown  Green    29   Brown        286        257
15    Red  Green    14     Red         71         57
16  Blond  Green    16   Blond        127        111

请注意,在绘制每个条形图的每个部分时使用的上下y坐标称为stack_upr_stack_lwr_。虽然这些值基于原始y变量Freq,但Freq值不会直接绘制。我想这可能会让你失望。

根据此信息,如果您希望工具提示显示原始y值,则可以从工具提示中的上y坐标中简单地减去每个堆栈的下y坐标。

hec %>% ggvis(x = ~Hair, y = ~Freq, fill = ~Eye) %>%
    layer_bars() %>%
    add_tooltip(function(data) paste0("test1 ", data$stack_upr_ - data$stack_lwr_, " test2"))