我正在制作一个堆积的条形图。条的宽度是根据变量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
有人知道为什么这失败了吗?谢谢。
答案 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
。