由于数据点过多导致 ggplotly 渲染问题
ggplotly rendering issues due to too many data points
所以我正在使用 ggplotly 渲染堆积面积图,结果如下:
问题是我一直在使用此方法添加自定义工具提示:
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 个数据点。当我删除自定义文本工具提示时,它绘制得很好。工具提示仍然全部在图表上,我可以告诉一切都在它应该在的地方,只是这些区域没有正确填充。
有什么方法可以解决这个问题?代码挂了一段时间,所以我认为这不是我 PC 的图形问题,而是实际渲染过程的问题。
编辑:
我已将问题缩小为 text = paste("Value:", Value)
。如果我将代码修改为 text=Value
,它可以正常显示。
现在的问题是工具提示看起来很愚蠢,因为它会显示:
_value_
X: _X_
Label: _label_
当我想要它阅读时:
Value: _value_
X: _x_
Label: _label_
有人知道如何解决这个问题吗?
Edit2:问题还是没有解决。
原来 ggplot2 有一个内置的标签函数 geom_text()
可以更有效地利用 plotly。
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
,并在ggplotly()
函数中指定tooltip = "label"
。
所以我正在使用 ggplotly 渲染堆积面积图,结果如下:
问题是我一直在使用此方法添加自定义工具提示:
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 个数据点。当我删除自定义文本工具提示时,它绘制得很好。工具提示仍然全部在图表上,我可以告诉一切都在它应该在的地方,只是这些区域没有正确填充。
有什么方法可以解决这个问题?代码挂了一段时间,所以我认为这不是我 PC 的图形问题,而是实际渲染过程的问题。
编辑:
我已将问题缩小为 text = paste("Value:", Value)
。如果我将代码修改为 text=Value
,它可以正常显示。
现在的问题是工具提示看起来很愚蠢,因为它会显示:
_value_
X: _X_
Label: _label_
当我想要它阅读时:
Value: _value_
X: _x_
Label: _label_
有人知道如何解决这个问题吗?
Edit2:问题还是没有解决。
原来 ggplot2 有一个内置的标签函数 geom_text()
可以更有效地利用 plotly。
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
,并在ggplotly()
函数中指定tooltip = "label"
。