web-dev-qa-db-ja.com

ggplotlyを使用する場合、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))

ラベルの上にマウスで書式設定されたテキストまたは少なくとも改行を入れたいです。このマウスオーバーバブルを設計する方法に関する優れたドキュメントはありますか?

23
drmariod

plotlyは、改行HTMLタグを使用できます。改行に<br>タグを使用すると、後のものを取得できます。

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

(gg <- ggplotly(g))
18
Jota

Ggplotly()への tooltip引数 を参照してください。たとえば、ホバーで種名(たとえば、右上の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"))

最後の例では、2行のツールチップが表示されます

Petal.Length: 5.7
Sepal.Length: 6.7
27
Jon Olav Vik

purrrのマップ関数 を使用したソリューションです。それが機能したことはちょっと驚きましたが、私はそれが好きです。

「文字:」と「文字:」の見出しを太字にしました。これにより、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))
0
MokeEire