如何在ggplotly悬停时显示未用于绘图的变量?
在ggplotly悬停时额外显示未参与绘图的变量
假设数据框内包含5个变量,使用ggplot绘图时仅用到其中3个,默认情况下用ggplotly转换后的散点图悬停时只会显示这3个变量。以鸢尾花数据集为例,现有绘图代码如下:
p1 <- iris %>% ggplot(aes(x = Sepal.Length, y = Sepal.Width, color = Species)) + geom_point(alpha=0.5) ggplotly(p1)
需要实现悬停时同时显示Petal.Length的信息。
解决方案
通过在ggplot的aes()中定义自定义悬停文本,再配合ggplotly()的tooltip参数指定显示内容,就能实现需求。以下是两种常见写法:
写法1:按需添加单个额外变量
在aes()中新增text参数,单独指定要额外显示的Petal.Length,然后在ggplotly()里把text加入tooltip列表:
p1 <- iris %>% ggplot(aes(x = Sepal.Length, y = Sepal.Width, color = Species, text = paste("花瓣长度:", Petal.Length))) + geom_point(alpha=0.5) ggplotly(p1, tooltip = c("x", "y", "color", "text"))
写法2:自定义完整悬停内容
如果想让悬停文本格式更规整,用sprintf格式化所有需要显示的内容,然后直接指定tooltip为text:
p1 <- iris %>% ggplot(aes(x = Sepal.Length, y = Sepal.Width, color = Species, text = sprintf("萼片长度: %.2f\n萼片宽度: %.2f\n物种: %s\n花瓣长度: %.2f", Sepal.Length, Sepal.Width, Species, Petal.Length))) + geom_point(alpha=0.5) ggplotly(p1, tooltip = "text")
两种写法都能让悬停时显示Petal.Length的信息,可根据格式需求选择。
内容的提问来源于stack exchange,提问作者Harmanjit Singh
相关产品推荐
相关产品推荐

