r - 使用ggplotly时如何选择要在工具提示中显示的变量?

标签 r ggplot2 plotly r-plotly ggplotly

我有一个简单的数据框:

seq <- 1:10
name <- c(paste0("company",1:10))
value <- c(250,125,50,40,40,30,20,20,10,10)
d <- data.frame(seq,name,value)

我想以这种方式绘制它:
require(ggplot2)
ggplot(data = d,aes(x=seq,y=value))+geom_line() + geom_point()

现在我想使用 plotly,主要是为了能够在将鼠标悬停在一个点上时,获取值以外的其他信息,例如公司名称。我试试这个:
require(plotly)
ggplotly()

这给了我一个工具提示,但只有 seq 和 value。我尝试了选项 tooltip= 但它指定您可以使用美学中描述的唯一变量,并且我不在我的 aes 中使用该名称。

有什么解决办法吗?我看到我不是第一个遇到这个问题的人,但我还没有找到与 ggplotly 一起工作的答案。

最佳答案

您不需要修改 plotly @royr2 建议的对象。只需添加 label = name作为第三审美

ggplot(data = d, aes(x = seq, y = value, label = name)) + geom_line() + geom_point()

工具提示将显示 name除了seqvalue .
ggplotly帮助文件说到 tooltip范围:

The default, "all", means show all the aesthetic mappings (including the unofficial "text" aesthetic).



所以你可以使用 label美观,只要您不想将其用于 geom_text .

顺便说一句:我也试过 text而不是 label
ggplot(data = d, aes(x = seq, y = value, text = name)) + geom_line() + geom_point()

但随后 ggplot2提示

geom_path: Each group consists of only one observation. Do you need to adjust the group aesthetic?



并且只绘制点。我不得不向 geom_line 添加一个虚拟组删除问题:
ggplot(data = d, aes(x = seq, y = value, text = name)) + geom_line(group = 1) + geom_point()

(但请注意,如果您将虚拟组作为第四个美学元素放置在 aes() 中,默认情况下它也会出现在工具提示中。)

但是,我找到了非官方的 text美学可以与 label 一起变得有用如果你想用 geom_text 绘制不同的字符串并显示在工具提示中。

编辑以回答评论中的问题:tooltip ggplotly() 的参数可用于控制外观。 ggplotly(tooltip = NULL)将完全抑制工具提示。 ggplotly(tooltip = c("label"))选择要包含在工具提示中的美学。

关于r - 使用ggplotly时如何选择要在工具提示中显示的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36325154/

相关文章:

r - 在 R 中使用scale_color_gradientn()手动缩放颜色渐变

r - 将类从 'character' 更改为支持 r 中的 rowSums 的其他类型

r - 使用 purrr 和 ggplot 创建残差图矩阵

python - 绘制差异较大的两个数据

javascript - 在 Plotly.js 中的条形之间放置刻度线

R - 隐藏的线条

r - 如何在两个特定值之间重新编码一定范围的行

r - 在数据框中的特定位置添加列的优雅方式

r - 在 R 中绘制具有不同日期的两个时间序列

r - ggplot 热图网格线格式 geom_tile 和 geom_rect