この質問は何度か尋ねられたことは知っていますが、プロットの基礎となる構文のいくつかは変更されていると思います。 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枚のスクリーンショットを参照してください
注意がこれらのツールチップは、同じ単位(チロル)からのものです。これはパッケージのバグでしょうか?これは、地図の代わりに時系列などの他のグラフを表示する場合には発生しません。また、ラベル「例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
:「省は」(それがないの前にあった)今大文字であることを
お知らせここでは、開始から終了までの私のワークフローです。そのトリックは、美学にtext = paste("Province:", NAME_1)
を追加していました。私はtext2=paste("Example III:", example1)
使用して追加のラベルの変更を追加しようとしたときただし、次の処理が行われます。それはテキスト1をレンダリングするのと同じ方法でテキスト2レンダリングできない
ていることに注意してください。だからではなく、私は単純に次のようにテキスト2なしに複製を追加してみてください:text=paste("Example III:", example1)
次奇数結果生成-which:私は「伝説」のオプションを切り替えるような単純なものを考え始めてい
をプロットのggplot変換は不可能です。 更新#4:私はこれに別の方法でアプローチすることにしました。代わりに、変数名自体を変更することにしました。 ggplot2がスペースで変数を受け入れるかどうかわからないことを除いて、私はこれを最初からやっていたでしょう。-iは`variable`
を働かせることができました。そこで、私は先に進み、変数を再ラベル付けしました。それは働く - KINDA。問題は、テキストが引用符で囲まれて表示されることです。今私はこれらを取り除く方法が必要です!誰のアイデアですか?ありがとう!ここで私は、テキスト内の引用によって何を意味するかのイメージは次のとおりです。
あなたがこれまでにポイントをラベル付けしようとするの問題に遭遇した場合、私は思っていましたアノテーションを作成し、ツールチップに異なる変数を設定します。たとえば、これらの領域に名前を付けて、ツールチップに統計情報を表示させます。私はこれをしようとしてきましたが、テキストとラベルの両方を明示的に渡しても、ggplotlyは常にツールチップのテキストとしてラベルを取ります。助けることができるどんなアイデアですか? – jtanman