R plotly:当只有一个堆叠条时,不会出现自定义悬停文本

时间:2016-11-28 17:44:56

标签: r hover plotly

我一直在使用自定义悬停文本(https://plot.ly/r/text-and-annotations/)上的示例来更改我正在处理的条形图中的悬停文本。如果我的条形图仅包含一个堆叠条,则不会显示新的悬停文本。示例(它位于缺少hoverinfo的最后一个图中):

library(plotly)
year <- c(2015,2015,2016,2016)
type <- c('A','B','A','B')
perc <- c(10,90,20,80)

data <- data.frame(year,type,perc)

# Plot all the data ... default hoverinfo shown
plot_ly(data,x=~year,y=~perc,color=~type) %>% 
  add_bars()%>% 
  layout(barmode = "stack")

# Plot all the data ... custom hoverinfo shown
plot_ly(data,x=~year,y=~perc,color=~type,
  text = ~paste('Type',type,': ',perc,'%'),hoverinfo = 'text') %>% 
  add_bars()%>% 
  layout(barmode = "stack")

# Plot part of the data ... default hoverinfo shown
plot_ly(data[data$year == 2015,],x=~year,y=~perc,color=~type) %>% 
  add_bars()%>% 
  layout(barmode = "stack")

# Plot part of the data ... custom hoverinfo does not appear!
plot_ly(data[data$year == 2015,],x=~year,y=~perc,color=~type,
  text = ~paste('Type',type,': ',perc,'%'),hoverinfo = 'text') %>% 
  add_bars()%>% 
  layout(barmode = "stack")

使用R版本3.3.2和图表版本4.5.6。

1 个答案:

答案 0 :(得分:2)

获得了一些帮助,解决方案是将文本定义为列表。

plot_ly(data[data$year == 2015,],x=~year,y=~perc,color=~type,
  text = ~list(paste('Type',type,': ',perc,'%')),hoverinfo = 'text') %>% 
  add_bars()%>% 
  layout(barmode = "stack")

只要我知道只有一个条形,并且〜类型的顺序在整个数据集中是相同的,这是有效的。如果我将类型更改为

type <- c('A','B','B','A')

并运行

data <- data.frame(year,type,perc)
plot_ly(data[data$year == 2016,],x=~year,y=~perc,color=~type,
      text = ~list(paste(year,'Type',type,': ',perc,'%')),hoverinfo = 'text') %>% 
  add_bars()%>% 
  layout(barmode = "stack") 

我没有获得正确的hoverinfo订单。所以这不是完美的解决方案。