无法使用ggplotly函数将ggplot转换为交互式绘图

时间:2019-06-16 06:02:22

标签: r ggplot2 plotly ggplotly

我正在制作一个堆积的条形图。条的宽度是根据变量w设置的。

library(plotly)
library(tidyverse)

df = data.frame(x = c("a","b","c"),
                w = c(1.2, 1.3, 4),
                y = c(9, 10, 6) )

dat = df %>% mutate(pos = 0.5 * (cumsum(w) + cumsum(c(0, w[-length(w)]))))

g= dat %>% ggplot(aes(x = pos,  y = y, fill = x)) + 
  geom_bar(aes( width = w), stat = "identity") + 
  scale_x_continuous(labels = df$x, breaks =  dat$pos)

ggplotly(g)

ggplot很好。但是,当我尝试使用ggplotly将其转换为交互式时,出现如下错误消息:

Error in nchar(axisObj$ticktext) : 'nchar()' requires a character vector

有人知道为什么这失败了吗?谢谢。

1 个答案:

答案 0 :(得分:1)

问题在于您的x轴缩放比例。

这应该有效:

library(plotly)
  library(tidyverse)

  df = data.frame(x = c("a","b","c"),
                  w = c(1.2, 1.3, 4),
                  y = c(9, 10, 6) )

  dat = df %>% mutate(pos = 0.5 * (cumsum(w) + cumsum(c(0, w[-length(w)]))))

  g= dat %>% ggplot(aes(x = pos,  y = y, fill = x)) + 
    geom_bar(aes(width = w), stat = "identity") + 
    scale_x_continuous(labels = levels(df$x), breaks =  dat$pos)

  ggplotly(g)

ggplot似乎会将您的x轴标签保留为ggplotly无法理解的因子水平。 因此,您只需要将它们转换为character