使用以下表示,当将鼠标悬停在上面或下面的线上时,工具提示保持显示相同的值。为什么会这样?有什么解决方法吗?
library(ggplot2)
library(plotly)
df <- data.frame(a = c(2020,2021,2022,2020,2021,2022),
b = c('Product A','Product A','Product A','Product B','Product B','Product B'),
c = c(500,540,630,70,140,100))
plot <- ggplot(df, aes(x = a, y = c, fill = b)) +
geom_area(position = 'stack')
# geom_bar(stat = 'identity', position = 'stack')
ggplotly(plot)
如果您注释掉 geom_area 行并包含 geom_bar 行,您会发现问题消失了。
这是由于
ggplot2
的变化(在去年左右的某个时候引入)导致 geom_area
现在使用 stat="align"
并进行一些插值。来自文档 (?geom_area
)
为了便于堆叠,默认的 stat = "align" 将组插值到一组公共的 x 坐标。要关闭此插值,可以使用 stat = "identity" 来代替。
显然,plotly 不支持此更改(我想知道是否可以支持此功能)。因此,
text
属性将默认为第一个数据点的值(通过检查 plotly_json()
对象并在尝试手动添加工具提示文本时确定)。
但是正如文档建议的那样,您可以通过切换到
stat="identity"
来解决这个问题:
library(plotly, warn = FALSE)
plot <- ggplot(df, aes(x = a, y = c, fill = b)) +
geom_area(stat = "identity")
ggplotly(plot)