使用ggplotly时,将鼠标格式化为标签

时间:2016-01-05 07:03:27

标签: r ggplot2 plotly

使用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))

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

3 个答案:

答案 0 :(得分:27)

请参阅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

答案 1 :(得分:18)

plotly可以使用换行符HTML标记。您可以使用<br>标记获取后续内容:

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

(gg <- ggplotly(g))

答案 2 :(得分:0)

这是使用purrr's map function的解决方案。它奏效令我有些惊讶,但我喜欢它。

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

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))