2016-08-03 20 views
4

この質問は何度か尋ねられたことは知っていますが、プロットの基礎となる構文のいくつかは変更されていると思います。 ggplotly()を使用してchoroplethマップを作成すると、my aestheticsのlong、lat、group、およびmy変数のデフォルトのツールチップが表示されます。私は、ツールチップが美学のものだけを写像することを理解しています。私がしたいのは、私のデータセット(美学にマッピングされていないものを含む)の中のいくつかの変数を表示し、他のもの(座標など)を表示しないようにツールチップをカスタマイズすることだけです。以下は再現可能な例であり、私がこれまでに試したことは何か。他の質問に答えずにアドバイスをしたが、役に立たなかった。ggplot2を使ってプロットマップのツールチップのラベルを編集する

#Load dependencies 
library(rgeos) 
library(stringr) 
library(rgdal) 
library(maptools) 
library(ggplot2) 
library(plotly) 

#Function to read shapefile from website 
dlshape=function(shploc, shpfile) { 
    temp=tempfile() 
    download.file(shploc, temp) 
    unzip(temp) 
    shp.data <- sapply(".", function(f) { 
    fp <- file.path(temp, f) 
    return(readOGR(".",shpfile)) 
    }) 
} 

austria <- dlshape(shploc="http://biogeo.ucdavis.edu/data/gadm2.8/shp/AUT_adm_shp.zip", 
        "AUT_adm1")[[1]] 
#Create random data to add as variables 
[email protected]$example1<-sample(seq(from = 1, to = 100, by = 1), size = 11, replace = TRUE) 
[email protected]$example2<-sample(seq(from = 1, to = 100, by = 1), size = 11, replace = TRUE) 
[email protected]$example3<-sample(seq(from = 1, to = 100, by = 1), size = 11, replace = TRUE) 

#Fortify shapefile to use w/ ggplot 
austria.ft <- fortify(austria, region="ID_1") 
data<-merge(austria.ft, austria, region="id", by.x = "id", by.y = "ID_1") 

#Save as ggplot object  
gg<-ggplot(data, aes(x = long, y = lat, fill = example1, group = group)) + 
    geom_polygon() + geom_path(color="black",linetype=1) + 
    coord_equal() + 
    scale_fill_gradient(low = "lightgrey", high = "darkred", name='Index') +xlab("")+ylab("") + 
    theme(axis.text = element_blank(), 
     axis.title = element_blank(), 
     axis.ticks = element_blank()) + 
    theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(), 
     panel.background = element_blank(), axis.line = element_line(colour = "black")) + 
    theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(), 
     panel.background = element_blank(), axis.line = element_line(colour = "black")) 

#Plot using ggplotly 
ggplotly(gg) 

ここからは、2つの異なる方法を試しました。最も成功した方法の1つは、そこに私をそこに連れて行きます。私は新しい変数をツールチップに追加することはできますが、私は2つのことを行うことはできません。1)デフォルトで既に表示されている他の変数を取り除くことはできません(2)変数を列名以外の名前に変更することはできません。データセット(例えば、私は例III 『「として例3』をラベル付けしたいと思います)ここではそのアプローチです:。

#Save as a new ggplot object except this time add ``label = example3`` to the aesthetics 
gg2<-ggplot(data, aes(x = long, y = lat, fill = example1, group = group, label = example3)) + 
    geom_polygon() + geom_path(color="black",linetype=1) + 
    coord_equal() + 
    scale_fill_gradient(low = "lightgrey", high = "darkred", name='Index') +xlab("")+ylab("") + 
    theme(axis.text = element_blank(), 
     axis.title = element_blank(), 
     axis.ticks = element_blank()) + 
    theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(), 
     panel.background = element_blank(), axis.line = element_line(colour = "black")) + 
    theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(), 
     panel.background = element_blank(), axis.line = element_line(colour = "black")) 

#Save as plotly object then plot 
gg2 <- plotly_build(gg2) 
gg2 

私も次を追加しようとしたが、それは何もしなかった:

gg2$data[[1]]$text <- paste("Example I:", data$example1, "<br>", 
          "Example II:", data$example2, "<br>", 
          "Example III:", data$example3) 

すべてのヘルプ

更新:私は0を更新しましたCRANの代わりにgithubからインストールすると、になります。このアップデートされたバージョン(4.0.0)を使用して、私はそこにある方法を別にしました。

gg2$x$data[[2]]$text <- paste("Example I:", data$example1, "<br>", 
          "Example II:", data$example2, "<br>", 
          "Example III:", data$example3) 
gg2 

ここで何が起こるのかというと、簡単にはわかりません。これにより、前のツールチップとは別のツールチップが追加されます。この新しいツールチップはまさに私が望むものですが、それらの両方が一度に表示されませんが、マウスを動かすと表示されます。下の2枚のスクリーンショットを参照してください

This is the old tooltip from before that still lingersThis is the new one and the only one I want to keep

注意がこれらのツールチップは、同じ単位(チロル)からのものです。これはパッケージのバグでしょうか?これは、地図の代わりに時系列などの他のグラフを表示する場合には発生しません。また、ラベル「例I」(またはIIまたはIII)を割り当てたが、これは追加した新しいツールチップには表示されないことにも注意してください。

UPDATE#2:古いツールチップ(長いと緯度が表示されている)が表示されるのは、ボーダーを移動するときにのみ表示されるため、geom_path(color="black",linetype=1)コマンドを削除してその問題を解決するしかし、私はまだツールチップに表示されるラベルを変更することはできません。

UPDATE#3:ラベルの編集方法はわかりましたが、1つの変数のみを考えました。どちらがナッツです!以下のプロットを作成し

#Load dependencies 
    library(rgeos) 
    library(stringr) 
    library(rgdal) 
    library(maptools) 
    library(ggplot2) 
    library(plotly) 

    #Function to read shapefile from website 
    dlshape=function(shploc, shpfile) { 
     temp=tempfile() 
     download.file(shploc, temp) 
     unzip(temp) 
     shp.data <- sapply(".", function(f) { 
     fp <- file.path(temp, f) 
     return(readOGR(".",shpfile)) 
     }) 
    } 

    austria <- dlshape(shploc="http://biogeo.ucdavis.edu/data/gadm2.8/shp/AUT_adm_shp.zip", 
         "AUT_adm1")[[1]] 
    #Create random data to add as variables 
    [email protected]$example1<-sample(seq(from = 1, to = 100, by = 1), size = 11, replace = TRUE) 
    [email protected]$example2<-sample(seq(from = 1, to = 100, by = 1), size = 11, replace = TRUE) 
    [email protected]$example3<-sample(seq(from = 1, to = 100, by = 1), size = 11, replace = TRUE) 

    #Fortify shapefile to use w/ ggplot 
    austria.ft <- fortify(austria, region="ID_1") 
    data<-merge(austria.ft, austria, region="id", by.x = "id", by.y = "ID_1") 

    #Save as ggplot object  
    gg<-ggplot(data, aes(x = long, y = lat, fill = example1, group = group, text = paste("Province:", NAME_1))) + 
     geom_polygon(color="black", size=0.2) + 
     coord_equal() + 
     scale_fill_gradient(low = "lightgrey", high = "darkred", name='Index') +xlab("")+ylab("") + 
     theme(axis.text = element_blank(), 
      axis.title = element_blank(), 
      axis.ticks = element_blank()) + 
     theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(), 
      panel.background = element_blank(), axis.line = element_line(colour = "black")) + 
     theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(), 
      panel.background = element_blank(), axis.line = element_line(colour = "black")) 


gg <- plotly_build(gg) 
gg 

:「省は」(それがないの前にあった)今大文字であることを

enter image description here

お知らせここでは、開始から終了までの私のワークフローです。そのトリックは、美学にtext = paste("Province:", NAME_1)を追加していました。私はtext2=paste("Example III:", example1)使用して追加のラベルの変更を追加しようとしたときただし、次の処理が行われます。それはテキスト1をレンダリングするのと同じ方法でテキスト2レンダリングできない

enter image description here

ていることに注意してください。だからではなく、私は単純に次のようにテキスト2なしに複製を追加してみてください:text=paste("Example III:", example1)次奇数結果生成-which:私は「伝説」のオプションを切り替えるような単純なものを考え始めてい

enter image description here

をプロットのggplot変換は不可能です。 更新#4:私はこれに別の方法でアプローチすることにしました。代わりに、変数名自体を変更することにしました。 ggplot2がスペースで変数を受け入れるかどうかわからないことを除いて、私はこれを最初からやっていたでしょう。-iは`variable`を働かせることができました。そこで、私は先に進み、変数を再ラベル付けしました。それは働く - KINDA。問題は、テキストが引用符で囲まれて表示されることです。今私はこれらを取り除く方法が必要です!誰のアイデアですか?ありがとう!ここで私は、テキスト内の引用によって何を意味するかのイメージは次のとおりです。

enter image description here

+0

あなたがこれまでにポイントをラベル付けしようとするの問題に遭遇した場合、私は思っていましたアノテーションを作成し、ツールチップに異なる変数を設定します。たとえば、これらの領域に名前を付けて、ツールチップに統計情報を表示させます。私はこれをしようとしてきましたが、テキストとラベルの両方を明示的に渡しても、ggplotlyは常にツールチップのテキストとしてラベルを取ります。助けることができるどんなアイデアですか? – jtanman

答えて

6

私はあまりにもplotlyに新しいですが、ggplotly()を使用しているとき、私のggplot2バブルプロットのために、同様の問題に遭遇してきました。私は最終的に私のために働く解決策を見つけ、それがあなたにも役立つかもしれないと思ったが、私はそれをchoroplethの地図のために試していない。

最初の質問は、(美学にマッピングされていないものも含めて)データセットの変数の一部を表示するようにツールチップをカスタマイズすることでした。
あなたのUPDATE#3ではあなたのエースにtext = paste("Province:", NAME_1)を紹介します。カスタム変数またはテキストの2行を追加したい場合は、単にブラケットにそれを追加し続ける:text = paste("Province:", NAME_1, "<br>", "Example III:", example1)

text = paste("Province:", NAME_1, "Example III:", example1)両方の間に改行を追加するように、あなたが休憩になりたい場所に<br>を追加2番目の質問は、他の(デフォルトの)変数(座標などの美学にマッピングされている)を表示しないようにツールチップをカスタマイズすることでした。
私は私のためのトリックをしたggplotly()機能には、この非常に簡単に追加が見つかりました:私の場合はggplotly(gg, tooltip = c("text"))を、これがツールチップに表示のみのカスタム上記textで指定されているものを示しているすべてのデフォルトの変数を削除しました。 ggplotly(gg, tooltip = c("text","x"))ツールチップに表示される変数の順序は、tooltip引数で指定された順序と同じになります。私は、これはここに文書化された:https://github.com/ropensci/plotly/blob/master/R/ggplotly.R

このソリューションでは、R 3.1.1を使用して私のために(原則として)働いていたとplotly 3.4.13

+0

この質問の枠線のような他のエースマッピング上にカーソルを置いたときに表示されるツールチップを取り除くことが可能かどうか知っていますか?たとえば、私のggplotでは、データポイントの横にラベルがあり、例のように推奨するのと同じ方法でテキストマッピングを作成しました: ggplot(randomData、aes(x、y、label = ip_country、text = paste ( '国:'、ip_country、 '
'、 'X'、X))+ geom_point()+ geom_text(AES(X = xで-1)) それから私は、ggplotlyテキストラベルを使用して変換するとき実際のデータポイントには正しいホバーツールチップが表示されますが、テキストラベルを表示するだけのホバーツールチップもあります。 – jtanman

関連する問題