使用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 标签。使用<br>
换行符后,您可以获得您想要的内容:
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
当我在 plotly 中使用 ggplotly 函数时,为啥文本注释会丢失?
R语言ggplot2可视化:使用plotly包的subplot函数将多个ggplot2可视化结果组合在一起形成组合plotly图(Multiple ggplot2 plots with plotly)