Rで解析:ggplot2で矢印プロットを作成「ggquiver」パッケージ

Rの解析に役に立つ記事
スポンサーリンク

ggplot2で矢印プロットを作成するパッケージの紹介です。ggmapパッケージなどと組み合わせると利用の幅が広がると考えます。ggquiverパッケージ単独とggmapパッケージの組み合わせを紹介します。

パッケージバージョンは0.1.0。windows 10のR version 3.4.1で動作を確認しています。

スポンサーリンク

パッケージのインストール

下記コマンドを実行してください。

#パッケージのインストール
install.packages("ggquiver")

コマンドの紹介

詳細はコマンド、パッケージのヘルプを確認してください。体裁はggplot2のコマンドで調整可能です。

#パッケージの読み込み
library("ggquiver")
#tidyverseパッケージがなければインストール
if(!require("tidyverse", quietly = TRUE)){
  install.packages("tidyverse");require("tidyverse")
}

###データ例の作成#####
TestData <- expand.grid(x = seq(0, pi, pi/12),
                        y = seq(0, pi, pi/12))
########

#&#36895;&#24230;&#12503;&#12525;&#12483;&#12488;&#12398;&#20316;&#25104;:geom_quiver&#12467;&#12510;&#12531;&#12489;
#&#38283;&#22987;&#22320;&#28857;:x,y&#12458;&#12503;&#12471;&#12519;&#12531;
#&#38283;&#22987;&#22320;&#28857;&#12363;&#12425;x&#36600;&#26041;&#21521;&#12398;&#32066;&#20102;&#22320;&#28857;:u&#12458;&#12503;&#12471;&#12519;&#12531;
#&#38283;&#22987;&#22320;&#28857;&#12363;&#12425;y&#36600;&#26041;&#21521;&#12398;&#32066;&#20102;&#22320;&#28857;:v&#12458;&#12503;&#12471;&#12519;&#12531;
ggplot(TestData, aes(x = TestData[, 1], y = TestData[, 2],
                     u = sinpi(TestData[, 1])*cospi(TestData[, 2]),
                     v = cos(TestData[, 2]))) +
  geom_quiver(aes(col = sinpi(TestData[, 1])*cospi(TestData[, 2])),
              center = TRUE, show.legend = FALSE, vecsize = NULL,
              rescale = FALSE) +
  scale_colour_gradientn(colours = heat.colors(6)) +
  theme(title = element_text(colour = "#ffffe0"),
        axis.title = element_text(colour = "#ffffe0"),
        axis.text = element_text(colour = "#ffffe0"),
        axis.text.y = element_text(size = 5),
        panel.grid = element_blank(), 
        panel.background = element_rect(fill = "#0a0a0a"),
        plot.background = element_rect(fill = "#0a0a0a"))

#######################################
###ggmap&#12497;&#12483;&#12465;&#12540;&#12472;&#12392;&#32068;&#12415;&#21512;&#12431;&#12379;&#12383;&#20363;#####
#######################################

#&#12497;&#12483;&#12465;&#12540;&#12472;&#12398;&#12452;&#12531;&#12473;&#12488;&#12540;&#12523;
install.packages("ggmap")
install.packages("stringi")

#&#12497;&#12483;&#12465;&#12540;&#12472;&#12398;&#35501;&#12415;&#36796;&#12415;
library("ggmap")
library("stringi")

#ggmap&#12497;&#12483;&#12465;&#12540;&#12472;&#12434;&#21033;&#29992;&#12375;&#12390;&#32239;&#24230;&#32076;&#24230;&#12434;&#21462;&#24471;
#stringi:stri_encode&#12467;&#12510;&#12531;&#12489;&#12434;&#21033;&#29992;&#12377;&#12427;&#12392;&#26085;&#26412;&#35486;&#12391;&#12418;&#12456;&#12521;&#12540;&#12364;&#20986;&#12414;&#12379;&#12435;&#12290;
LonLatData <- geocode(stri_encode("&#20140;&#37117;", "", "utf-8"))

#&#32239;&#24230;&#32076;&#24230;&#12398;&#31684;&#22258;&#12434;&#35373;&#23450;
LonLatDataAra <- c(LonLatData - .02, LonLatData + .02)

#&#36969;&#24403;&#12395;&#12503;&#12525;&#12483;&#12488;&#12487;&#12540;&#12479;&#12434;&#20316;&#25104;
TestPlotData <- data.frame(x = seq(LonLatDataAra[[1]], LonLatDataAra[[3]], 0.004),
                              y = seq(LonLatDataAra[[2]], LonLatDataAra[[4]], 0.004))

#Map&#12487;&#12540;&#12479;&#12434;&#21462;&#24471;:ggmap&#12497;&#12483;&#12465;&#12540;&#12472;;get_googlemap&#12467;&#12510;&#12531;&#12489;
GetMap <- get_googlemap(center = c(lon = LonLatData[[1]], lat = LonLatData[[2]]),
                           zoom = 13)

#&#12503;&#12525;&#12483;&#12488;
ggmap(GetMap) +
  geom_quiver(data = TestPlotData, aes(x = x, y = y, u = x, v = y, size = y),
              center = TRUE, show.legend = FALSE, vecsize = NULL,
              rescale = FALSE, col = "red") 

出力例

・geom_quiverコマンド

・ggmapパッケージと組み合わせた例


夏の終わりが近づいています。学会参加で忙しくなる人もいるかと思います。忙しさに負けませんように。そして少しでも、あなたの解析が楽になりますように!!

タイトルとURLをコピーしました