47

私は単純なデータフレームを持っています:

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

今、私はプロットを使用したいと考えています。主に、マウスをポイントに合わせたときに、会社名などの値以外の情報を取得できるようにするためです。私はこれを試します:

require(plotly)
ggplotly()

ツールチップが表示されますが、seq と value のみです。オプション tooltip= を試しましたが、美学で説明する唯一の変数を使用できることが指定されており、aes では名前を使用していません。

解決策はありますか?この問題は私が最初ではないことがわかりましたが、ggplotly で動作する答えが見つかりませんでした。

4

4 に答える 4

71

plotly@royr2 で提案されているように、オブジェクトを変更する必要はありません。label = name3番目の美学として追加するだけです

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

nameとに加えてツールチップが表示さseqvalueます。

ggplotlyヘルプ ファイルには、tooltipパラメーターについて次のように記載されています。

デフォルトの「all」は、すべての美的マッピング (非公式の「テキスト」美学を含む) を表示することを意味します。

したがって、label使用したくない場合は美学を使用できますgeom_text

textところで:代わりに試してみましたlabel

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

しかし、その後ggplot2不平を言った

geom_path: 各グループは 1 つの観測のみで構成されます。グループの美学を調整する必要がありますか?

ポイントのみをプロットしました。geom_lineこの問題を解決するには、ダミー グループを追加する必要がありました。

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

(ただし、ダミー グループを 4 番目の美的要素として内部aes()に配置すると、デフォルトでツールチップにも表示されることに注意してください。)

ただし、さまざまな文字列をプロットしてツールチップに表示したい場合は、非公式のtext美学が役立つことがわかりました。labelgeom_text

コメントで質問に答えるように編集: パラメータtooltiptoggplotly()を使用して、外観を制御できます。ggplotly(tooltip = NULL)ツールチップをまったく抑制します。ggplotly(tooltip = c("label"))ツールチップに含める美学を選択します。

于 2016-03-31T23:08:37.630 に答える
49

@UweBlock の回答に基づいて、ツールチップに複数のラベルを表示するためにダミーの美学を作成することもできます。これが文書化されている場所を見つけることはできませんが、経験的に発見しました。ダミー変数は指定した順序で表示されますが、デフォルト変数 (x と y など) が優先されます。これを回避するには、以下に示すように、これらの変数を別の美学で指定できます。

library(plotly)
p = ggplot(iris, aes(label=Species, label2=Petal.Length, label3=Petal.Width)) + 
  geom_point(aes(Sepal.Length,Sepal.Width))
ggplotly(p)

ここに画像の説明を入力

于 2016-07-27T18:53:02.160 に答える