使用ggplotly时在plotly中格式化鼠标在标签上

Posted

技术标签:

【中文标题】使用ggplotly时在plotly中格式化鼠标在标签上【英文标题】:Formatting mouse over labels in plotly when using ggplotly 【发布时间】:2016-04-08 22:29:55 【问题描述】:

在使用 ggplotly 和鼠标悬停功能时,我在文本格式方面遇到了困难。

library(plotly)
df <- data.frame(a=letters, b=LETTERS, x=runif(26), y=runif(26))
g <- ggplot(df, aes(x,y)) + geom_point(aes(text=sprintf('letter: %s\nLetter: %s', a, b)))
g
(gg <- ggplotly(g))

我想在我的鼠标悬停标签上有一些格式化的文本或至少一个换行符。有没有关于如何设计这个鼠标悬停在气泡上的好文档?

【问题讨论】:

【参考方案1】:

plotly 可以使用换行 html 标签。使用&lt;br&gt; 换行符后,您可以获得您想要的内容:

g <- ggplot(df, aes(x,y)) + 
       geom_point(aes(text=sprintf("letter: %s<br>Letter: %s", a, b)))

(gg <- ggplotly(g))

【讨论】:

太棒了,我没想到...这让甚至变得更加有趣!!! @drmariod 这给了我以下错误:Error: (converted from warning) Ignoring unknown aesthetics: text ggplot2 is in version 2.2.1 在具有多条线(按颜色区分)的折线图中使用此方法,我必须专门为组添加美感。即 geom_line(aes(x=x, y=y, text="", color=z, group=z)) 没有文本 group=z 是不必要的。然后我按照@Jon Olav Vik 的回答使用了 ggplotly(p, tooltip="text")。 就我而言,我还需要 geom_line() 变体。下面的代码有效: myPlot 【参考方案2】:

请参阅tooltip argument to ggplotly()。例如,在悬停时仅显示物种名称(例如,右上角的 virginica):

g <- ggplot(tail(iris), aes(Petal.Length, Sepal.Length, text=Species)) + geom_point()
ggplotly(g, tooltip="text")

其他例子:

ggplotly(g, tooltip="x")             # Petal.Length: 5.7
ggplotly(g, tooltip="Petal.Length")  # Petal.Length: 5.7
ggplotly(g, tooltip=c("x", "y"))

最后一个示例将显示两行工具提示

Petal.Length: 5.7
Sepal.Length: 6.7

【讨论】:

胜利的工具提示。 谢谢,乔恩。该答案有助于解决我的问题。祝你有美好的一天。 是否可以对原始图中未包含的变量执行此操作?将鼠标悬停在数据点上并查看该点的一些/所有其他变量? @AndrewMcCartney 这将是我的第一个示例中的物种。 “文本”美学并不真正存在,也没有被 geom_point() 使用。 @JonOlavVik 谢谢你的帮助。如果您想在不完全覆盖的情况下添加“文本”美感怎么办?【参考方案3】:

这是使用purrr's map function 的解决方案。它的工作让我有点惊讶,但我喜欢它。

我将“字母:”和“字母:”标题加粗。这仍然会打印 x-y 坐标,您可以使用 ggplotly() 中的参数 tooltip 将其删除。

df <- data.frame(a=letters, b=LETTERS, x=runif(26), y=runif(26))
g <- ggplot(df, aes(x,y)) + 
         geom_point(aes(text=map(paste('<b>letter:</b>', a, '<br>', '<b>Letter:</b>', b), HTML)))
g
(gg <- ggplotly(g))

【讨论】:

以上是关于使用ggplotly时在plotly中格式化鼠标在标签上的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 上具有抗锯齿和 wmf 格式的 R ggplots

ggplotly 工具提示中的日期格式

当我在 plotly 中使用 ggplotly 函数时,为啥文本注释会丢失?

R语言ggplot2可视化:使用plotly包的subplot函数将多个ggplot2可视化结果组合在一起形成组合plotly图(Multiple ggplot2 plots with plotly)

在交互式绘图中提取鼠标点击的精确坐标

在 R 函数 ggplotly 中(来自 plotly 包),如何调整标签内容