ggplotly由于数据点过多而导致问题

时间:2016-12-14 21:47:33

标签: r ggplot2 plotly

所以我用ggplotly渲染堆积区域图,这就是显示的内容:

enter image description here

问题是我一直在使用此方法添加自定义工具提示:

library(data.table)
library(ggplot2)
library(plotly)

Values1 <- rep(10, 10)
Values2 <- rep(20, 10)
X <- rep(seq(1, 10),2)
df <- data.frame(Values1=Values1, Values2=Values2)
df <- melt(df)
df2 <- data.frame(X=X, Label=df$variable, Value=df$value)

Plot <- ggplot(data=df2, aes(x=X, y=Value, fill=Label, text = paste("Value:", Value))) + 
geom_area(position='stack')
ggplotly(Plot, tooltip = c("text", "x", "fill")) 

此示例代码显然不会重新创建问题,而只是简单地说明了我在自己的工具提示值中强制执行的操作。我的实际数据在堆积区域图表中有9500个数据点。当我删除自定义文本工具提示时,它很好。工具提示仍然在图表上,我可以告诉它应该是什么,这些区域不能正确填充。

有什么方法可以解决这个问题吗?代码挂起了一段时间,所以我认为它不是我的电脑的图形问题,而是图形中的实际渲染过程的问题。

编辑:

我已将问题缩小到text = paste("Value:", Value)。如果我将代码修改为text=Value,它就会很好。

现在的问题是工具提示看起来很愚蠢,如下所示:

_value_
X: _X_
Label: _label_

我希望它阅读:

Value: _value_ 
X: _x_
Label: _label_

任何人都知道如何解决这个问题?

Edit2:仍无法解决问题。

1 个答案:

答案 0 :(得分:0)

原来ggplot2有一个内置于geom_text()的标签功能,可以更有效地利用它。

Plot <- ggplot(data=df2, aes(x=X, y=Value, fill=Label, label = paste("Value:", Value))) + 
geom_area(position='stack')
ggplotly(Plot, tooltip = c("label", "x", "fill")) 

总之,在aes()映射中,将text更改为label,并在tooltip = "label"函数中指定ggplotly()