SlideShare ist ein Scribd-Unternehmen logo
1 von 37
Downloaden Sie, um offline zu lesen
2013/11/1 FOSS4G TOKYO

Rでvisualization
NPO法人オープンコンシェルジュ
星田侑久
http://www.openconcierge.org/
http://www.aaronkoblin.com/work/flightpatterns/
今日の目標
visual complexity

http://www.visualcomplexity.com/vc/
Information Graphics

http://www.taschen.com/pages/en/catalogue/design/all/04984/facts.information_graphics.htm
ビジュアライゼーション・ツール

http://lab.sugimototatsuo.com/2013/08/top-20-data-visualisation-tools/
R
R
R言語(あーるげんご)はオープンソース・フリーソフトウェア
の統計解析向けのプログラミング言語及びその開発実行環境で
ある。
データのグラフ・図解化機能が柔軟であり
インフォグラフィック環境とでも呼べるほど高度な
グラフ作成ソフト機能を持つうえにユーザー独自の
図解定義もプログラムが容易である。

http://ja.wikipedia.org/wiki/R%E8%A8%80%E8%AA%9E
使うデータ
使うデータ
Airport, airline and route data
http://openflights.org/data.html#airport
Open Database License
ユーザーによる自由な共有、改変や、
他人と同じ自由を保持しながらデータベースを
使用できるようにする継承ライセンス契約である。
(Wikipediaより引用)
空港
使うデータ
Airport.ID
Name
City

空港のID
507
空港名
Heathrow
空港が所在する都市名 London

Country

空港が所在する国名

Latitude

緯度

United
Kingdom
51.4775

Longitude

経度

-0.461389
航路
使うデータ
Airline
Airline.ID
Source.airport

航空会社名
航空会社のID
空港(発地)

Source.airport.ID
空港のID(発地)
Destination.airport
空港(着地)
Destination.airport.ID 空港のID(着地)

BA
1355
SIN
3316
LHR
507
背景図
背景図
*パッケージ+maps
白地図を表示させるパッケージ

*関数+map
白地図を表示させる関数
map(database, col, fill, bg, lwd, xlim, ylim)
database:地図の種類
col:塗りつぶした場合の色
fill:塗りつぶすかどうか
bg:背景色
lwd:線の太さ
xlim:x方向の範囲
ylim:y方向の範囲
背景図
背景図
#パッケージの読み込み
library(maps)

#地図の範囲の指定
xlim <- c(-180, 180)
ylim <- c(-90, 90)
#地図の表示
map("world", col="#f2f2f2", fill=TRUE,
bg="white", lwd=0.05, xlim=xlim, ylim=ylim)
空港と空港を線で結ぶ
空港と空港を線で結ぶ
*関数+lines
任意の点間を線で結んで描画する関数

lines(x, y, col, lwd)
x:x座標
y:y座標
col:線の色
lwd:線の太さ
空港と空港を線で結ぶ
空港と空港を線で結ぶ
#東京の緯度経度
lat.tokyo <- 36
lon.tokyo <- 140
#ロンドンの緯度経度
lat.london <- 51
lon.london <- 0

#東京とロンドンを赤い線で結ぶ
lines(c(lon.tokyo, lon.london), c(lat.tokyo, lat.london),
col="red“, lwd=8)
1本の航路
1本の航路
大圏コース(great circle)
大圏(たいけん、Great circle)とは地球における大円を指す。
大圏コース(たいけんコース、Great circle route)とは、
地球上の2点間を大圏(の一部である弧)で結んだルートのことである。
最短距離のルートになるため、航空機や船舶の航路に利用される。

http://ja.wikipedia.org/wiki/%E5%A4%A7%E5%9C%8F%E3%82%B3%E3%83%BC%E3%82%B9
1本の航路
1本の航路
*パッケージ+geosphere
球面三角形の計算をするパッケージ

*関数+gcIntermediate
2地点間の大圏コースの座標を計算する関数
gcIntermediate(p1, p2, n, addStartEnd, breakAtDateLine)
p1:大圏コースを求める地点
p2:大圏コースを求める地点
n:大圏コースを構成する点の数
addStartEnd:p1とp2を結果に含めるかどうか
breakAtDateLine:日付変更線で分割するかどうか
1本の航路
1本の航路
#パッケージの読み込み
library(geosphere)

#東京とロンドンの間の大圏コースの位置を算出
inter <- gcIntermediate(
c(lon.tokyo, lat.tokyo), c(lon.london, lat.london),
n=100, addStartEnd=TRUE, breakAtDateLine=T)
#大圏コースを赤い線で結ぶ
lines(inter, col="red", lwd=8)
日付変更線
日付変更線
#ニューヨークの緯度経度
lat.newyork <- 41
lon.newyork <- -74
#東京とニューヨークの間の大圏コースの位置を算出
inter <- gcIntermediate(
c(lon.tokyo, lat.tokyo), c(lon.newyork, lat.newyork),
n=100, addStartEnd=TRUE)
#大圏コースを赤い線で結ぶ
lines(inter, col="red", lwd=8)
日付変更線
日付変更線
breakAtDateLine=F

breakAtDateLine=T

140.00

36.00

140.00

36.00

・
・
・

・
・
・
180.00

・
・
・
65.75

-180.00

66.26

・
・
・
-74.00

・
・
・
41.00

・
・
・
178.99

65.75

-179.00

66.26

・
・
・
180.00

・
・
・
65.75
日付変更線
日付変更線
inter <- gcIntermediate(
c(lon.tokyo, lat.tokyo), c(lon.newyork, lat.newyork),
n=100, addStartEnd=TRUE, breakAtDateLine=T)
len <- length(inter)
#大圏コースが日付変更線をまたいでいるときと、
またいでいないときとで処理をかえる
if (len == 2) {
inter1 <- do.call("rbind", inter[1])
inter2 <- do.call("rbind", inter[2])
lines(inter1, col="red", lwd=8)
lines(inter2, col="red", lwd=8)
} else {
lines(inter, col="red", lwd=8)
}
データのインポート
データのインポート
Source.airport

AER

Source.airport.ID

2965

Destination.airport

DME

Destination.airport.ID

4029

Airport.ID

2965

Airport.ID

4029

City

Sochi

City

Moscow

Latitude

43.44

Latitude

55.40

Longitude

39.95

Longitude

37.90
データのインポート
データのインポート
#データのインポート
airports <- read.csv("airports.dat", header=F,
col.names=c("Airport.ID", "Name", "City", "Country",
"IATA.FAA", "ICAO", "Latitude", "Longitude",
"Altitude", "Timezone", "DST"))
flights <- read.csv("routes.dat", header=F,
col.names=c("Airline", "Airline.ID", "Source.airport",
"Source.airport.ID", "Destination.airport",
"Destination.airport.ID", "Codeshare", "Stops",
"Equipment"))
#不要なデータの削除
flights <- flights[flights$Destination.airport.ID != "¥¥N",]
flights <- flights[flights$Source.airport.ID != "¥¥N",]
データのインポート
データのインポート
map("world", col="#3D3D3D", fill=TRUE, bg="#000000",
lwd=0.05, xlim=xlim, ylim=ylim)

air1 <- airports[airports$Airport.ID ==
flights[1,]$Source.airport.ID,]
air2 <- airports[airports$Airport.ID ==
flights[1,]$Destination.airport.ID,]
inter <- gcIntermediate(c(air1[1,]$Longitude, air1[1,]$Latitude),
c(air2[1,]$Longitude, air2[1,]$Latitude), n=100,
addStartEnd=TRUE, breakAtDateLine=T)
len <- length(inter)
データのインポート
データのインポート
if (len == 2) {
inter1 <- do.call("rbind", inter[1])
inter2 <- do.call("rbind", inter[2])
lines(inter1, col="red", lwd=8)
lines(inter2, col="red", lwd=8)
} else {
lines(inter, col="red", lwd=8)
}
複数の航路
複数の航路
for (j in 1:length(flights$Source.airport)) {
air1 <- airports[airports$Airport.ID ==
flights[j,]$Source.airport.ID,]
air2 <- airports[airports$Airport.ID ==
flights[j,]$Destination.airport.ID,]
inter <- gcIntermediate(
c(air1[1,]$Longitude, air1[1,]$Latitude),
c(air2[1,]$Longitude, air2[1,]$Latitude), n=100,
addStartEnd=TRUE, breakAtDateLine=T)
len <- length(inter)
複数の航路
複数の航路
if (len == 2) {
inter1 <- do.call("rbind", inter[1])
inter2 <- do.call("rbind", inter[2])
lines(inter1, col="white", lwd=0.05)
lines(inter2, col="white", lwd=0.05)
} else {
lines(inter, col="white", lwd=0.05)
}
}
dev.off()
台風の経路
hurricane-tracks
NOAA
(National Climatic Data Center)

http://www.ncdc.noaa.gov/ibtracs/index.php?name=ibtracs-data
http://www.wired.com/wiredscience/2013/08/hurricane-tracks/
Rでvisualization

Weitere ähnliche Inhalte

Ähnlich wie Rでvisualization

LODの紹介@第1回 Firefox OS x HTML5 x LOD WEBイノベーションハッカソン
LODの紹介@第1回 Firefox OS x HTML5 x LOD WEBイノベーションハッカソンLODの紹介@第1回 Firefox OS x HTML5 x LOD WEBイノベーションハッカソン
LODの紹介@第1回 Firefox OS x HTML5 x LOD WEBイノベーションハッカソンKouji Kozaki
 
FOSS4G 2009 Tokyo (R and Geo) in Japanese
FOSS4G 2009 Tokyo (R and Geo) in JapaneseFOSS4G 2009 Tokyo (R and Geo) in Japanese
FOSS4G 2009 Tokyo (R and Geo) in JapaneseMasafumi Okada
 
html5とcss3実例紹介とデモ
html5とcss3実例紹介とデモhtml5とcss3実例紹介とデモ
html5とcss3実例紹介とデモAkihiro Sugiyama
 
アプリ開発新時代!オープンデータを活用したお得な企画&プログラミングテクニック
アプリ開発新時代!オープンデータを活用したお得な企画&プログラミングテクニックアプリ開発新時代!オープンデータを活用したお得な企画&プログラミングテクニック
アプリ開発新時代!オープンデータを活用したお得な企画&プログラミングテクニックTaisuke Fukuno
 
What’s new in 4.0 of LibreOffice (Lake-Hamanako-ver.) / LibreOffice 4.0の新機能 (...
What’s new in 4.0 of LibreOffice (Lake-Hamanako-ver.) / LibreOffice 4.0の新機能 (...What’s new in 4.0 of LibreOffice (Lake-Hamanako-ver.) / LibreOffice 4.0の新機能 (...
What’s new in 4.0 of LibreOffice (Lake-Hamanako-ver.) / LibreOffice 4.0の新機能 (...Naruhiko Ogasawara
 
120727 gms2012nagoya presentation
120727 gms2012nagoya presentation120727 gms2012nagoya presentation
120727 gms2012nagoya presentationTakayuki Nuimura
 
Introduction r (R入門)
Introduction r (R入門)Introduction r (R入門)
Introduction r (R入門)Takashi Minoda
 
LogicFlow 実践編~LogicFlowでいろいろつくってみた ~
LogicFlow 実践編~LogicFlowでいろいろつくってみた ~LogicFlow 実践編~LogicFlowでいろいろつくってみた ~
LogicFlow 実践編~LogicFlowでいろいろつくってみた ~典子 松本
 
ノンコーディングでやってみよう!音声テキスト変換 - LINE × Logic Apps × Speech to text -
ノンコーディングでやってみよう!音声テキスト変換 - LINE × Logic Apps × Speech to text -ノンコーディングでやってみよう!音声テキスト変換 - LINE × Logic Apps × Speech to text -
ノンコーディングでやってみよう!音声テキスト変換 - LINE × Logic Apps × Speech to text -典子 松本
 
160608 01
160608 01160608 01
160608 01openrtm
 
ドローンをプログラミングして飛ばす!Scratch、PHP、Python、映像のプログラミング授業
ドローンをプログラミングして飛ばす!Scratch、PHP、Python、映像のプログラミング授業ドローンをプログラミングして飛ばす!Scratch、PHP、Python、映像のプログラミング授業
ドローンをプログラミングして飛ばす!Scratch、PHP、Python、映像のプログラミング授業株式会社 オープンソース・ワークショップ
 
2019年9月15日 OSC広島 ドローンをプログラミングして飛ばす!ScratchとPHPでプログラミング授業
2019年9月15日 OSC広島 ドローンをプログラミングして飛ばす!ScratchとPHPでプログラミング授業2019年9月15日 OSC広島 ドローンをプログラミングして飛ばす!ScratchとPHPでプログラミング授業
2019年9月15日 OSC広島 ドローンをプログラミングして飛ばす!ScratchとPHPでプログラミング授業株式会社 オープンソース・ワークショップ
 
第4回瀬戸内ROS勉強会LT資料
第4回瀬戸内ROS勉強会LT資料第4回瀬戸内ROS勉強会LT資料
第4回瀬戸内ROS勉強会LT資料NaotakaKawata
 
【DevLOVE現場甲子園2013】Software Engineer in Test @ 楽天の検索基盤の現場
【DevLOVE現場甲子園2013】Software Engineer in Test @ 楽天の検索基盤の現場【DevLOVE現場甲子園2013】Software Engineer in Test @ 楽天の検索基盤の現場
【DevLOVE現場甲子園2013】Software Engineer in Test @ 楽天の検索基盤の現場Kotaro Ogino
 
Robomec2014 rtm講習会第1部(その1)
Robomec2014 rtm講習会第1部(その1)Robomec2014 rtm講習会第1部(その1)
Robomec2014 rtm講習会第1部(その1)openrtm
 
ライブ UI プロトタイピング に向けたマルチ言語環境 SOMETHINGit
ライブ UI プロトタイピング に向けたマルチ言語環境 SOMETHINGitライブ UI プロトタイピング に向けたマルチ言語環境 SOMETHINGit
ライブ UI プロトタイピング に向けたマルチ言語環境 SOMETHINGitTomohiro Oda
 
ビジネスマネージャとデータ分析
ビジネスマネージャとデータ分析ビジネスマネージャとデータ分析
ビジネスマネージャとデータ分析TOSHI STATS Co.,Ltd.
 

Ähnlich wie Rでvisualization (20)

LODの紹介@第1回 Firefox OS x HTML5 x LOD WEBイノベーションハッカソン
LODの紹介@第1回 Firefox OS x HTML5 x LOD WEBイノベーションハッカソンLODの紹介@第1回 Firefox OS x HTML5 x LOD WEBイノベーションハッカソン
LODの紹介@第1回 Firefox OS x HTML5 x LOD WEBイノベーションハッカソン
 
FOSS4G 2009 Tokyo (R and Geo) in Japanese
FOSS4G 2009 Tokyo (R and Geo) in JapaneseFOSS4G 2009 Tokyo (R and Geo) in Japanese
FOSS4G 2009 Tokyo (R and Geo) in Japanese
 
html5とcss3実例紹介とデモ
html5とcss3実例紹介とデモhtml5とcss3実例紹介とデモ
html5とcss3実例紹介とデモ
 
アプリ開発新時代!オープンデータを活用したお得な企画&プログラミングテクニック
アプリ開発新時代!オープンデータを活用したお得な企画&プログラミングテクニックアプリ開発新時代!オープンデータを活用したお得な企画&プログラミングテクニック
アプリ開発新時代!オープンデータを活用したお得な企画&プログラミングテクニック
 
Herlockサービス紹介
Herlockサービス紹介Herlockサービス紹介
Herlockサービス紹介
 
Project Prague を試してみました
Project Prague を試してみましたProject Prague を試してみました
Project Prague を試してみました
 
What’s new in 4.0 of LibreOffice (Lake-Hamanako-ver.) / LibreOffice 4.0の新機能 (...
What’s new in 4.0 of LibreOffice (Lake-Hamanako-ver.) / LibreOffice 4.0の新機能 (...What’s new in 4.0 of LibreOffice (Lake-Hamanako-ver.) / LibreOffice 4.0の新機能 (...
What’s new in 4.0 of LibreOffice (Lake-Hamanako-ver.) / LibreOffice 4.0の新機能 (...
 
120727 gms2012nagoya presentation
120727 gms2012nagoya presentation120727 gms2012nagoya presentation
120727 gms2012nagoya presentation
 
Introduction r (R入門)
Introduction r (R入門)Introduction r (R入門)
Introduction r (R入門)
 
LogicFlow 実践編~LogicFlowでいろいろつくってみた ~
LogicFlow 実践編~LogicFlowでいろいろつくってみた ~LogicFlow 実践編~LogicFlowでいろいろつくってみた ~
LogicFlow 実践編~LogicFlowでいろいろつくってみた ~
 
ノンコーディングでやってみよう!音声テキスト変換 - LINE × Logic Apps × Speech to text -
ノンコーディングでやってみよう!音声テキスト変換 - LINE × Logic Apps × Speech to text -ノンコーディングでやってみよう!音声テキスト変換 - LINE × Logic Apps × Speech to text -
ノンコーディングでやってみよう!音声テキスト変換 - LINE × Logic Apps × Speech to text -
 
160608 01
160608 01160608 01
160608 01
 
ドローンをプログラミングして飛ばす!Scratch、PHP、Python、映像のプログラミング授業
ドローンをプログラミングして飛ばす!Scratch、PHP、Python、映像のプログラミング授業ドローンをプログラミングして飛ばす!Scratch、PHP、Python、映像のプログラミング授業
ドローンをプログラミングして飛ばす!Scratch、PHP、Python、映像のプログラミング授業
 
2019年9月15日 OSC広島 ドローンをプログラミングして飛ばす!ScratchとPHPでプログラミング授業
2019年9月15日 OSC広島 ドローンをプログラミングして飛ばす!ScratchとPHPでプログラミング授業2019年9月15日 OSC広島 ドローンをプログラミングして飛ばす!ScratchとPHPでプログラミング授業
2019年9月15日 OSC広島 ドローンをプログラミングして飛ばす!ScratchとPHPでプログラミング授業
 
第4回瀬戸内ROS勉強会LT資料
第4回瀬戸内ROS勉強会LT資料第4回瀬戸内ROS勉強会LT資料
第4回瀬戸内ROS勉強会LT資料
 
【DevLOVE現場甲子園2013】Software Engineer in Test @ 楽天の検索基盤の現場
【DevLOVE現場甲子園2013】Software Engineer in Test @ 楽天の検索基盤の現場【DevLOVE現場甲子園2013】Software Engineer in Test @ 楽天の検索基盤の現場
【DevLOVE現場甲子園2013】Software Engineer in Test @ 楽天の検索基盤の現場
 
Robomec2014 rtm講習会第1部(その1)
Robomec2014 rtm講習会第1部(その1)Robomec2014 rtm講習会第1部(その1)
Robomec2014 rtm講習会第1部(その1)
 
ライブ UI プロトタイピング に向けたマルチ言語環境 SOMETHINGit
ライブ UI プロトタイピング に向けたマルチ言語環境 SOMETHINGitライブ UI プロトタイピング に向けたマルチ言語環境 SOMETHINGit
ライブ UI プロトタイピング に向けたマルチ言語環境 SOMETHINGit
 
ビジネスマネージャとデータ分析
ビジネスマネージャとデータ分析ビジネスマネージャとデータ分析
ビジネスマネージャとデータ分析
 
自然言語処理紹介(就職編)
自然言語処理紹介(就職編)自然言語処理紹介(就職編)
自然言語処理紹介(就職編)
 

Rでvisualization