SlideShare a Scribd company logo
1 of 21
Download to read offline
3次元のデータをグラフにする
 Rで富士山を描いてみた
 \描けませんでした/




              2011-09-24
              Tokyo.R#17
              http://atnd.org/events/19835



              TSUTAYA Takumi
              (@tsutatsuta)
自己紹介

蔦谷 匠
TSUTAYA Takumi

・自然人類学の研究など
・大学院生のような




                        http://tsutatsuta.web.fc2.com/
発表の内容

● 何を図示するときに使うか

● 3次元のデータをグラフにする
・   今回使用するデータセット
・   contour
・   image
・   persp
・   scatterplot3d

● まとめ
何を図示するときに使うか

          ● 2つの変数をもつ関数

          ● 2つ以上の変数をもつ関数

          ● 座標と標高

                                                   …などなど


                    厳密な比較には向かないが
                     イメージをつかみやすい

たしかに三次元図は見栄えが良く、論文の飾りに好適だが、しばしばそれだけに留まるので注意がいるか。人間の視覚は二次元対象で最も鋭敏のようである。
                                               - グラフィックス参考実例集:三次元散布図 (RjpWiki)
今回使用するデータセット
● volcano
・ Maugna Whau 山 (Auckland) の標高データ
・ 10m × 10m グリッド (Max: 195, Min: 94)
・ 87行 (南→北) 61列 (東→西)




                           Google Earth
# データの準備
# データのラベルを作成
south.north <- 1:nrow(volcano) * 10 # rowの数は87
east.west <- 1:ncol(volcano) * 10 # columnの数は61

# 頂上の位置を変数に入れておく
mt.top <- which(volcano == max(volcano), arr.ind = TRUE) * 10

# 標高150mライン
level150 <- which(volcano == 150, arr.ind = TRUE) * 10

# scatterplot3dパッケージの読み込み
library(scatterplot3d)
# http://cran.r-project.org/web/packages/scatterplot3d/index.html

# scatterplot3d用ラベルの準備
south.north.3d <- rep(south.north, length(east.west))
west.east.3d <- vector(length = 87 * 61)
for(i in 1:61){
  west.east.3d[((i - 1) * 87 + 1):(i * 87)] <- east.west[i]
}
contour
 image
contour
● 等高線を描く
・ 線の数や間隔を調整できる
・ 線に数字を示すこともできる




                  > ?contour より
image
● 値に応じた色を格子上に示す
・ 色調や濃さを調整できる
・ contour と相性が良い




                   > ?image より
#1a   #1b




#1c   #1d
# 1a                                               # 1b
image(south.north, east.west, volcano,             image(south.north, east.west, volcano,
 col = terrain.colors(100),                          col = rainbow(100),
 xlab = "South-North", ylab = "East-West")           xlab = "South-North", ylab = "East-West")
contour(south.north, east.west, volcano,           contour(south.north, east.west, volcano,
 levels = c(175, 145), add = TRUE)                   levels = 160, lty = "dotted", add = TRUE)
points(mt.top[1], mt.top[2], pch = 20,             lines(c(0, 1000), c(150, 500))
 col = "blue") # 頂上を図示                               # (0, 150)と(1000, 150)を通る直線を引く




# 1c                                               # 1d
image(south.north, east.west, volcano,             image(south.north, east.west, volcano,
 col = gray((10:0)/10),                             col = gray((0:100)/100),
 xlab = "South-North", ylab = "East-West")          xlab = "South-North", ylab = "East-West")
contour(south.north, east.west, volcano,           contour(south.north, east.west, volcano,
 levels = 175, col = "red", add = TRUE)             col = rainbow(10), add = TRUE)
points(level150[ , 1], level150[ , 2], pch = 20,   text(mt.top[1], mt.top[2], "TOP", col = "blue")
 col = "blue") # 標高150mの点を図示                        # 頂上に"TOP"をプロット
persp
persp
● 投影図を描く
・ 立体的な図
・ 陰をつけたりもできる




                   > ?persp より
#2a   #2b




#2c   #2d
#2a                                                   #2b
mt.mw <- persp(south.north, east.west,                mt.mw <- persp(south.north, east.west,
 volcano, theta = 25, phi = 30, scale = FALSE,          volcano, theta = -25, phi = 50, scale = FALSE,
 col = "green", border = NA, ltheta = 120,              col = "green", border = NA, ltheta = 120,
 shade = 0.7, ticktype = "detailed",                    shade = 0.5, ticktype = "detailed",
 cex.axis = 0.8, xlab = "South-North",                  cex.axis = 0.8, xlab = "South-North",
 ylab = "East-West", zlab = "Altitude")                 ylab = "East-West", zlab = "Altitude")
points(trans3d(mt.top[1], mt.top[2], max(volcano),    x <- 6
pmat = mt.mw), col = "red", pch = 16)                 lines(trans3d(c(mt.top[1], level150[x, 1]),
 # 頂上を図示                                                c(mt.top[2], level150[x, 2]),
                                                        c(max(volcano), 150), pmat = mt.mw), col = "blue")
                                                       # 頂上と,標高150mにある一点を結ぶ




#2c                                                   #2d
mt.mw <- persp(south.north, east.west,                mt.mw <- persp(south.north, east.west,
 volcano, theta = 25, phi = 30, scale = FALSE,         volcano, theta = 25, phi = 30, scale = FALSE,
 col = NA, border = "black", ltheta = 120,             col = rainbow(7), border = NA, ltheta = -120,
 shade = 0.3, ticktype = "detailed",                   shade = 0.7, ticktype = "detailed",
 cex.axis = 0.8, xlab = "South-North",                 cex.axis = 0.8, xlab = "South-North",
 ylab = "East-West", zlab = "Altitude")                ylab = "East-West", zlab = "Altitude")
x <- 6                                                x <- 6
points(trans3d(level150[ , 1], level150[ , 2], 150,   text(trans3d(mt.top[1], mt.top[2], max(volcano),
 pmat = mt.mw), col = "red", pch = 16)                 pmat = mt.mw), "TOP", pch = 16)
 # 標高150mの点を図示                                         # 頂上に"TOP"をプロット
scatterplot3d
scatterplot3d
● 3次元空間へのプロット
・ scatterplot3dパッケージが必要
・ http://cran.r-project.org/web/packages/scatterplot3d/index.html




                                                                    > ?scatterplot3dより
#3a   #3b




#3c   #3d
# 3a                                                # 3b
mt.mw.3d <- scatterplot3d(west.east.3d,             level145to150.3d <- which(volcano < 150 &
 south.north.3d, volcano, scale.y = 1,                volcano >= 145) # 標高145m以上150m未満
 highlight.3d = TRUE,                               level150to155.3d <- which(volcano < 155 &
 zlim = c(80, 200), xlab = "West-East",               volcano >= 150) # 標高150m以上145m未満
 ylab = "South-North", zlab = "Altitude")           mt.mw.3d<- scatterplot3d(
mt.mw.3d$plane3d(150, x.coef = 0, y.coef = 0,         west.east.3d[level145to150.3d],
 lty.box = "dashed")                                  south.north.3d[level145to150.3d],
 # 標高150mラインに平面の追加.                                   volcano[level145to150.3d], color = "red",
mt.mw.3d$points3d(mt.top[2], mt.top[1],               scale.y = 1, xlim = c(0, 700), ylim = c(0, 1000),
 max(volcano), col = "blue", pch = 19)                zlim = c(80, 200), xlab = "West-East",
 # 頂上の追加.                                             ylab = "South-North", zlab = "Altitude")
                                                    mt.mw.3d$plane3d(150, x.coef = 0, y.coef = 0,
                                                      lty.box = "dashed") # 標高150mラインに平面
                                                    mt.mw.3d$points3d(west.east.3d[level150to155.3d],
                                                      south.north.3d[level150to155.3d],
                                                      volcano[level150to155.3d], col = "red")
                                                      # 標高150m以上155m未満
# 3c
west275to300.3d <- which(west.east.3d < 300 &
  west.east.3d >= 275) # 西から275以上300m未満
west500to525.3d <- which(west.east.3d < 525 &       # 3d
  west.east.3d >= 500) # 西から500以上525m未満             south275to325.3d <- which(south.north.3d < 325 &
label.3d <- c(west275to300.3d, west500to525.3d)      south.north.3d >= 275) # 南から275以上325m未満
mt.mw.3d <- scatterplot3d(west.east.3d[label.3d],   mt.mw.3d <-scatterplot3d(
  south.north.3d[label.3d], volcano[label.3d],       west.east.3d[south275to325.3d],
  scale.y = 1.5, highlight.3d = TRUE,                south.north.3d[south275to325.3d],
  xlim = c(0, 700), ylim = c(0, 1000),               volcano[south275to325.3d], scale.y = 0.7,
  zlim = c(80, 200), xlab = "West-East",             color = "blue", xlim = c(0, 700), ylim = c(0, 1000),
  ylab = "South-North", zlab = "Altitude")           zlim = c(80, 200), xlab = "West-East",
                                                     ylab = "South-North", zlab = "Altitude")
まとめ

           図示の形式      定量性   イメージ

contour
image      連続的な面       ◯     △

persp      連続的な面       △     ◯

scatterplot3d 離散的な点    △     ◯


使わないで済むなら、それに越したことはないかもしれません…
参考

● Rヘルプドキュメント

● 高水準作図関数 (R-Tips)
 http://cse.naro.affrc.go.jp/takezawa/r-tips/r/50.html


● 三次元散布図 (RjpWiki)
 http://www.okada.jp.org/RWiki/




他にも関数やパッケージをご存じでしたら、ぜひ教えてください!

More Related Content

What's hot

Introduction to statistics
Introduction to statisticsIntroduction to statistics
Introduction to statisticsKohta Ishikawa
 
Tokyo.R #46 Cox比例ハザードモデルとその周辺
Tokyo.R #46  Cox比例ハザードモデルとその周辺Tokyo.R #46  Cox比例ハザードモデルとその周辺
Tokyo.R #46 Cox比例ハザードモデルとその周辺kikurage1001
 
DiagrammeRと仲良くなった話ーグラフィカルモデルのためのDiagrammeR速習ー
DiagrammeRと仲良くなった話ーグラフィカルモデルのためのDiagrammeR速習ーDiagrammeRと仲良くなった話ーグラフィカルモデルのためのDiagrammeR速習ー
DiagrammeRと仲良くなった話ーグラフィカルモデルのためのDiagrammeR速習ーTakashi Yamane
 
StanとRで折れ線回帰──空間的視点取得課題の反応時間データを説明する階層ベイズモデルを例に──【※Docswellにも同じものを上げています】
StanとRで折れ線回帰──空間的視点取得課題の反応時間データを説明する階層ベイズモデルを例に──【※Docswellにも同じものを上げています】StanとRで折れ線回帰──空間的視点取得課題の反応時間データを説明する階層ベイズモデルを例に──【※Docswellにも同じものを上げています】
StanとRで折れ線回帰──空間的視点取得課題の反応時間データを説明する階層ベイズモデルを例に──【※Docswellにも同じものを上げています】Hiroyuki Muto
 
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)Yoshitake Takebayashi
 
PRML輪読#5
PRML輪読#5PRML輪読#5
PRML輪読#5matsuolab
 
心理学におけるベイズ統計の流行を整理する
心理学におけるベイズ統計の流行を整理する心理学におけるベイズ統計の流行を整理する
心理学におけるベイズ統計の流行を整理するHiroshi Shimizu
 
Anova君を使った分散分析
Anova君を使った分散分析Anova君を使った分散分析
Anova君を使った分散分析Takashi Yamane
 
マルコフ連鎖モンテカルロ法入門-1
マルコフ連鎖モンテカルロ法入門-1マルコフ連鎖モンテカルロ法入門-1
マルコフ連鎖モンテカルロ法入門-1Nagi Teramo
 
DARM勉強会第3回 (missing data analysis)
DARM勉強会第3回 (missing data analysis)DARM勉強会第3回 (missing data analysis)
DARM勉強会第3回 (missing data analysis)Masaru Tokuoka
 
多重代入法の書き方 公開用
多重代入法の書き方 公開用 多重代入法の書き方 公開用
多重代入法の書き方 公開用 Koichiro Gibo
 
マルコフ連鎖モンテカルロ法入門-2
マルコフ連鎖モンテカルロ法入門-2マルコフ連鎖モンテカルロ法入門-2
マルコフ連鎖モンテカルロ法入門-2Nagi Teramo
 
PRML第6章「カーネル法」
PRML第6章「カーネル法」PRML第6章「カーネル法」
PRML第6章「カーネル法」Keisuke Sugawara
 
PRML輪読#10
PRML輪読#10PRML輪読#10
PRML輪読#10matsuolab
 
ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介Naoki Hayashi
 
PRML輪読#2
PRML輪読#2PRML輪読#2
PRML輪読#2matsuolab
 
StanとRでベイズ統計モデリング読書会 Chapter 7(7.6-7.9) 回帰分析の悩みどころ ~統計の力で歌うまになりたい~
StanとRでベイズ統計モデリング読書会 Chapter 7(7.6-7.9) 回帰分析の悩みどころ ~統計の力で歌うまになりたい~StanとRでベイズ統計モデリング読書会 Chapter 7(7.6-7.9) 回帰分析の悩みどころ ~統計の力で歌うまになりたい~
StanとRでベイズ統計モデリング読書会 Chapter 7(7.6-7.9) 回帰分析の悩みどころ ~統計の力で歌うまになりたい~nocchi_airport
 
これからの仮説検証・モデル評価
これからの仮説検証・モデル評価これからの仮説検証・モデル評価
これからの仮説検証・モデル評価daiki hojo
 

What's hot (20)

Rで学ぶロバスト推定
Rで学ぶロバスト推定Rで学ぶロバスト推定
Rで学ぶロバスト推定
 
Introduction to statistics
Introduction to statisticsIntroduction to statistics
Introduction to statistics
 
Tokyo.R #46 Cox比例ハザードモデルとその周辺
Tokyo.R #46  Cox比例ハザードモデルとその周辺Tokyo.R #46  Cox比例ハザードモデルとその周辺
Tokyo.R #46 Cox比例ハザードモデルとその周辺
 
DiagrammeRと仲良くなった話ーグラフィカルモデルのためのDiagrammeR速習ー
DiagrammeRと仲良くなった話ーグラフィカルモデルのためのDiagrammeR速習ーDiagrammeRと仲良くなった話ーグラフィカルモデルのためのDiagrammeR速習ー
DiagrammeRと仲良くなった話ーグラフィカルモデルのためのDiagrammeR速習ー
 
StanとRで折れ線回帰──空間的視点取得課題の反応時間データを説明する階層ベイズモデルを例に──【※Docswellにも同じものを上げています】
StanとRで折れ線回帰──空間的視点取得課題の反応時間データを説明する階層ベイズモデルを例に──【※Docswellにも同じものを上げています】StanとRで折れ線回帰──空間的視点取得課題の反応時間データを説明する階層ベイズモデルを例に──【※Docswellにも同じものを上げています】
StanとRで折れ線回帰──空間的視点取得課題の反応時間データを説明する階層ベイズモデルを例に──【※Docswellにも同じものを上げています】
 
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
 
PRML輪読#5
PRML輪読#5PRML輪読#5
PRML輪読#5
 
心理学におけるベイズ統計の流行を整理する
心理学におけるベイズ統計の流行を整理する心理学におけるベイズ統計の流行を整理する
心理学におけるベイズ統計の流行を整理する
 
Anova君を使った分散分析
Anova君を使った分散分析Anova君を使った分散分析
Anova君を使った分散分析
 
マルコフ連鎖モンテカルロ法入門-1
マルコフ連鎖モンテカルロ法入門-1マルコフ連鎖モンテカルロ法入門-1
マルコフ連鎖モンテカルロ法入門-1
 
DARM勉強会第3回 (missing data analysis)
DARM勉強会第3回 (missing data analysis)DARM勉強会第3回 (missing data analysis)
DARM勉強会第3回 (missing data analysis)
 
多重代入法の書き方 公開用
多重代入法の書き方 公開用 多重代入法の書き方 公開用
多重代入法の書き方 公開用
 
マルコフ連鎖モンテカルロ法入門-2
マルコフ連鎖モンテカルロ法入門-2マルコフ連鎖モンテカルロ法入門-2
マルコフ連鎖モンテカルロ法入門-2
 
PRML第6章「カーネル法」
PRML第6章「カーネル法」PRML第6章「カーネル法」
PRML第6章「カーネル法」
 
PRML輪読#10
PRML輪読#10PRML輪読#10
PRML輪読#10
 
PRML 2.4
PRML 2.4PRML 2.4
PRML 2.4
 
ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介
 
PRML輪読#2
PRML輪読#2PRML輪読#2
PRML輪読#2
 
StanとRでベイズ統計モデリング読書会 Chapter 7(7.6-7.9) 回帰分析の悩みどころ ~統計の力で歌うまになりたい~
StanとRでベイズ統計モデリング読書会 Chapter 7(7.6-7.9) 回帰分析の悩みどころ ~統計の力で歌うまになりたい~StanとRでベイズ統計モデリング読書会 Chapter 7(7.6-7.9) 回帰分析の悩みどころ ~統計の力で歌うまになりたい~
StanとRでベイズ統計モデリング読書会 Chapter 7(7.6-7.9) 回帰分析の悩みどころ ~統計の力で歌うまになりたい~
 
これからの仮説検証・モデル評価
これからの仮説検証・モデル評価これからの仮説検証・モデル評価
これからの仮説検証・モデル評価
 

Similar to 3次元のデータをグラフにする(Tokyo.R#17)

Advanced Data Visualization Examples with R-Part II
Advanced Data Visualization Examples with R-Part IIAdvanced Data Visualization Examples with R-Part II
Advanced Data Visualization Examples with R-Part IIDr. Volkan OBAN
 
An example of R code for Data visualization
An example of R code for Data visualizationAn example of R code for Data visualization
An example of R code for Data visualizationLiang (Leon) Zhou
 
第13回数学カフェ「素数!!」二次会 LT資料「乱数!!」
第13回数学カフェ「素数!!」二次会 LT資料「乱数!!」第13回数学カフェ「素数!!」二次会 LT資料「乱数!!」
第13回数学カフェ「素数!!」二次会 LT資料「乱数!!」Ken'ichi Matsui
 
There's more than one way to empty it
There's more than one way to empty itThere's more than one way to empty it
There's more than one way to empty itAndrew Shitov
 
How to clean an array
How to clean an arrayHow to clean an array
How to clean an arrayAndrew Shitov
 
you need to complete the r code and a singlepage document c.pdf
you need to complete the r code and a singlepage document c.pdfyou need to complete the r code and a singlepage document c.pdf
you need to complete the r code and a singlepage document c.pdfadnankhan605720
 
ggtimeseries-->ggplot2 extensions
ggtimeseries-->ggplot2 extensions ggtimeseries-->ggplot2 extensions
ggtimeseries-->ggplot2 extensions Dr. Volkan OBAN
 
import turtleimport timeimport randomdef draw_rectangle(length.pdf
import turtleimport timeimport randomdef draw_rectangle(length.pdfimport turtleimport timeimport randomdef draw_rectangle(length.pdf
import turtleimport timeimport randomdef draw_rectangle(length.pdfrakeshankur
 
Intro matlab-nn
Intro matlab-nnIntro matlab-nn
Intro matlab-nnsoldier78
 
Computer Graphics in Java and Scala - Part 1b
Computer Graphics in Java and Scala - Part 1bComputer Graphics in Java and Scala - Part 1b
Computer Graphics in Java and Scala - Part 1bPhilip Schwarz
 
Perlで任意精度計算
Perlで任意精度計算Perlで任意精度計算
Perlで任意精度計算lestrrat
 
Advanced Data Visualization in R- Somes Examples.
Advanced Data Visualization in R- Somes Examples.Advanced Data Visualization in R- Somes Examples.
Advanced Data Visualization in R- Somes Examples.Dr. Volkan OBAN
 
Fourier series example
Fourier series exampleFourier series example
Fourier series exampleAbi finni
 
Plot3D Package and Example in R.-Data visualizat,on
Plot3D Package and Example in R.-Data visualizat,onPlot3D Package and Example in R.-Data visualizat,on
Plot3D Package and Example in R.-Data visualizat,onDr. Volkan OBAN
 
Plot3D package in R-package-for-3d-and-4d-graph-Data visualization.
Plot3D package in R-package-for-3d-and-4d-graph-Data visualization.Plot3D package in R-package-for-3d-and-4d-graph-Data visualization.
Plot3D package in R-package-for-3d-and-4d-graph-Data visualization.Dr. Volkan OBAN
 

Similar to 3次元のデータをグラフにする(Tokyo.R#17) (20)

Advanced Data Visualization Examples with R-Part II
Advanced Data Visualization Examples with R-Part IIAdvanced Data Visualization Examples with R-Part II
Advanced Data Visualization Examples with R-Part II
 
An example of R code for Data visualization
An example of R code for Data visualizationAn example of R code for Data visualization
An example of R code for Data visualization
 
CLIM Undergraduate Workshop: (Attachment) Performing Extreme Value Analysis (...
CLIM Undergraduate Workshop: (Attachment) Performing Extreme Value Analysis (...CLIM Undergraduate Workshop: (Attachment) Performing Extreme Value Analysis (...
CLIM Undergraduate Workshop: (Attachment) Performing Extreme Value Analysis (...
 
第13回数学カフェ「素数!!」二次会 LT資料「乱数!!」
第13回数学カフェ「素数!!」二次会 LT資料「乱数!!」第13回数学カフェ「素数!!」二次会 LT資料「乱数!!」
第13回数学カフェ「素数!!」二次会 LT資料「乱数!!」
 
Introduction to R
Introduction to RIntroduction to R
Introduction to R
 
There's more than one way to empty it
There's more than one way to empty itThere's more than one way to empty it
There's more than one way to empty it
 
How to clean an array
How to clean an arrayHow to clean an array
How to clean an array
 
matlab.docx
matlab.docxmatlab.docx
matlab.docx
 
Programming Assignment Help
Programming Assignment HelpProgramming Assignment Help
Programming Assignment Help
 
you need to complete the r code and a singlepage document c.pdf
you need to complete the r code and a singlepage document c.pdfyou need to complete the r code and a singlepage document c.pdf
you need to complete the r code and a singlepage document c.pdf
 
ggtimeseries-->ggplot2 extensions
ggtimeseries-->ggplot2 extensions ggtimeseries-->ggplot2 extensions
ggtimeseries-->ggplot2 extensions
 
import turtleimport timeimport randomdef draw_rectangle(length.pdf
import turtleimport timeimport randomdef draw_rectangle(length.pdfimport turtleimport timeimport randomdef draw_rectangle(length.pdf
import turtleimport timeimport randomdef draw_rectangle(length.pdf
 
Intro matlab-nn
Intro matlab-nnIntro matlab-nn
Intro matlab-nn
 
Computer Graphics in Java and Scala - Part 1b
Computer Graphics in Java and Scala - Part 1bComputer Graphics in Java and Scala - Part 1b
Computer Graphics in Java and Scala - Part 1b
 
CLUSTERGRAM
CLUSTERGRAMCLUSTERGRAM
CLUSTERGRAM
 
Perlで任意精度計算
Perlで任意精度計算Perlで任意精度計算
Perlで任意精度計算
 
Advanced Data Visualization in R- Somes Examples.
Advanced Data Visualization in R- Somes Examples.Advanced Data Visualization in R- Somes Examples.
Advanced Data Visualization in R- Somes Examples.
 
Fourier series example
Fourier series exampleFourier series example
Fourier series example
 
Plot3D Package and Example in R.-Data visualizat,on
Plot3D Package and Example in R.-Data visualizat,onPlot3D Package and Example in R.-Data visualizat,on
Plot3D Package and Example in R.-Data visualizat,on
 
Plot3D package in R-package-for-3d-and-4d-graph-Data visualization.
Plot3D package in R-package-for-3d-and-4d-graph-Data visualization.Plot3D package in R-package-for-3d-and-4d-graph-Data visualization.
Plot3D package in R-package-for-3d-and-4d-graph-Data visualization.
 

Recently uploaded

Science 7 - LAND and SEA BREEZE and its Characteristics
Science 7 - LAND and SEA BREEZE and its CharacteristicsScience 7 - LAND and SEA BREEZE and its Characteristics
Science 7 - LAND and SEA BREEZE and its CharacteristicsKarinaGenton
 
Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)eniolaolutunde
 
Employee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxEmployee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxNirmalaLoungPoorunde1
 
Separation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and ActinidesSeparation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and ActinidesFatimaKhan178732
 
Sanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfSanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfsanyamsingh5019
 
Alper Gobel In Media Res Media Component
Alper Gobel In Media Res Media ComponentAlper Gobel In Media Res Media Component
Alper Gobel In Media Res Media ComponentInMediaRes1
 
APM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across SectorsAPM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across SectorsAssociation for Project Management
 
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions  for the students and aspirants of Chemistry12th.pptxOrganic Name Reactions  for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions for the students and aspirants of Chemistry12th.pptxVS Mahajan Coaching Centre
 
microwave assisted reaction. General introduction
microwave assisted reaction. General introductionmicrowave assisted reaction. General introduction
microwave assisted reaction. General introductionMaksud Ahmed
 
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Krashi Coaching
 
URLs and Routing in the Odoo 17 Website App
URLs and Routing in the Odoo 17 Website AppURLs and Routing in the Odoo 17 Website App
URLs and Routing in the Odoo 17 Website AppCeline George
 
Accessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactAccessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactdawncurless
 
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxPOINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxSayali Powar
 
Introduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher EducationIntroduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher Educationpboyjonauth
 
Crayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon ACrayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon AUnboundStockton
 
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...EduSkills OECD
 
Introduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxIntroduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxpboyjonauth
 

Recently uploaded (20)

Science 7 - LAND and SEA BREEZE and its Characteristics
Science 7 - LAND and SEA BREEZE and its CharacteristicsScience 7 - LAND and SEA BREEZE and its Characteristics
Science 7 - LAND and SEA BREEZE and its Characteristics
 
Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)
 
Staff of Color (SOC) Retention Efforts DDSD
Staff of Color (SOC) Retention Efforts DDSDStaff of Color (SOC) Retention Efforts DDSD
Staff of Color (SOC) Retention Efforts DDSD
 
Model Call Girl in Bikash Puri Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Bikash Puri  Delhi reach out to us at 🔝9953056974🔝Model Call Girl in Bikash Puri  Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Bikash Puri Delhi reach out to us at 🔝9953056974🔝
 
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdfTataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
 
Employee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxEmployee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptx
 
Separation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and ActinidesSeparation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and Actinides
 
Sanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfSanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdf
 
Alper Gobel In Media Res Media Component
Alper Gobel In Media Res Media ComponentAlper Gobel In Media Res Media Component
Alper Gobel In Media Res Media Component
 
APM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across SectorsAPM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across Sectors
 
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions  for the students and aspirants of Chemistry12th.pptxOrganic Name Reactions  for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
 
microwave assisted reaction. General introduction
microwave assisted reaction. General introductionmicrowave assisted reaction. General introduction
microwave assisted reaction. General introduction
 
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
 
URLs and Routing in the Odoo 17 Website App
URLs and Routing in the Odoo 17 Website AppURLs and Routing in the Odoo 17 Website App
URLs and Routing in the Odoo 17 Website App
 
Accessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactAccessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impact
 
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxPOINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
 
Introduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher EducationIntroduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher Education
 
Crayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon ACrayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon A
 
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
 
Introduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxIntroduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptx
 

3次元のデータをグラフにする(Tokyo.R#17)

  • 1. 3次元のデータをグラフにする Rで富士山を描いてみた \描けませんでした/ 2011-09-24 Tokyo.R#17 http://atnd.org/events/19835 TSUTAYA Takumi (@tsutatsuta)
  • 3. 発表の内容 ● 何を図示するときに使うか ● 3次元のデータをグラフにする ・ 今回使用するデータセット ・ contour ・ image ・ persp ・ scatterplot3d ● まとめ
  • 4. 何を図示するときに使うか ● 2つの変数をもつ関数 ● 2つ以上の変数をもつ関数 ● 座標と標高 …などなど 厳密な比較には向かないが イメージをつかみやすい たしかに三次元図は見栄えが良く、論文の飾りに好適だが、しばしばそれだけに留まるので注意がいるか。人間の視覚は二次元対象で最も鋭敏のようである。 - グラフィックス参考実例集:三次元散布図 (RjpWiki)
  • 5. 今回使用するデータセット ● volcano ・ Maugna Whau 山 (Auckland) の標高データ ・ 10m × 10m グリッド (Max: 195, Min: 94) ・ 87行 (南→北) 61列 (東→西) Google Earth
  • 6. # データの準備 # データのラベルを作成 south.north <- 1:nrow(volcano) * 10 # rowの数は87 east.west <- 1:ncol(volcano) * 10 # columnの数は61 # 頂上の位置を変数に入れておく mt.top <- which(volcano == max(volcano), arr.ind = TRUE) * 10 # 標高150mライン level150 <- which(volcano == 150, arr.ind = TRUE) * 10 # scatterplot3dパッケージの読み込み library(scatterplot3d) # http://cran.r-project.org/web/packages/scatterplot3d/index.html # scatterplot3d用ラベルの準備 south.north.3d <- rep(south.north, length(east.west)) west.east.3d <- vector(length = 87 * 61) for(i in 1:61){ west.east.3d[((i - 1) * 87 + 1):(i * 87)] <- east.west[i] }
  • 8. contour ● 等高線を描く ・ 線の数や間隔を調整できる ・ 線に数字を示すこともできる > ?contour より
  • 10. #1a #1b #1c #1d
  • 11. # 1a # 1b image(south.north, east.west, volcano, image(south.north, east.west, volcano, col = terrain.colors(100), col = rainbow(100), xlab = "South-North", ylab = "East-West") xlab = "South-North", ylab = "East-West") contour(south.north, east.west, volcano, contour(south.north, east.west, volcano, levels = c(175, 145), add = TRUE) levels = 160, lty = "dotted", add = TRUE) points(mt.top[1], mt.top[2], pch = 20, lines(c(0, 1000), c(150, 500)) col = "blue") # 頂上を図示 # (0, 150)と(1000, 150)を通る直線を引く # 1c # 1d image(south.north, east.west, volcano, image(south.north, east.west, volcano, col = gray((10:0)/10), col = gray((0:100)/100), xlab = "South-North", ylab = "East-West") xlab = "South-North", ylab = "East-West") contour(south.north, east.west, volcano, contour(south.north, east.west, volcano, levels = 175, col = "red", add = TRUE) col = rainbow(10), add = TRUE) points(level150[ , 1], level150[ , 2], pch = 20, text(mt.top[1], mt.top[2], "TOP", col = "blue") col = "blue") # 標高150mの点を図示 # 頂上に"TOP"をプロット
  • 12. persp
  • 13. persp ● 投影図を描く ・ 立体的な図 ・ 陰をつけたりもできる > ?persp より
  • 14. #2a #2b #2c #2d
  • 15. #2a #2b mt.mw <- persp(south.north, east.west, mt.mw <- persp(south.north, east.west, volcano, theta = 25, phi = 30, scale = FALSE, volcano, theta = -25, phi = 50, scale = FALSE, col = "green", border = NA, ltheta = 120, col = "green", border = NA, ltheta = 120, shade = 0.7, ticktype = "detailed", shade = 0.5, ticktype = "detailed", cex.axis = 0.8, xlab = "South-North", cex.axis = 0.8, xlab = "South-North", ylab = "East-West", zlab = "Altitude") ylab = "East-West", zlab = "Altitude") points(trans3d(mt.top[1], mt.top[2], max(volcano), x <- 6 pmat = mt.mw), col = "red", pch = 16) lines(trans3d(c(mt.top[1], level150[x, 1]), # 頂上を図示 c(mt.top[2], level150[x, 2]), c(max(volcano), 150), pmat = mt.mw), col = "blue") # 頂上と,標高150mにある一点を結ぶ #2c #2d mt.mw <- persp(south.north, east.west, mt.mw <- persp(south.north, east.west, volcano, theta = 25, phi = 30, scale = FALSE, volcano, theta = 25, phi = 30, scale = FALSE, col = NA, border = "black", ltheta = 120, col = rainbow(7), border = NA, ltheta = -120, shade = 0.3, ticktype = "detailed", shade = 0.7, ticktype = "detailed", cex.axis = 0.8, xlab = "South-North", cex.axis = 0.8, xlab = "South-North", ylab = "East-West", zlab = "Altitude") ylab = "East-West", zlab = "Altitude") x <- 6 x <- 6 points(trans3d(level150[ , 1], level150[ , 2], 150, text(trans3d(mt.top[1], mt.top[2], max(volcano), pmat = mt.mw), col = "red", pch = 16) pmat = mt.mw), "TOP", pch = 16) # 標高150mの点を図示 # 頂上に"TOP"をプロット
  • 17. scatterplot3d ● 3次元空間へのプロット ・ scatterplot3dパッケージが必要 ・ http://cran.r-project.org/web/packages/scatterplot3d/index.html > ?scatterplot3dより
  • 18. #3a #3b #3c #3d
  • 19. # 3a # 3b mt.mw.3d <- scatterplot3d(west.east.3d, level145to150.3d <- which(volcano < 150 & south.north.3d, volcano, scale.y = 1, volcano >= 145) # 標高145m以上150m未満 highlight.3d = TRUE, level150to155.3d <- which(volcano < 155 & zlim = c(80, 200), xlab = "West-East", volcano >= 150) # 標高150m以上145m未満 ylab = "South-North", zlab = "Altitude") mt.mw.3d<- scatterplot3d( mt.mw.3d$plane3d(150, x.coef = 0, y.coef = 0, west.east.3d[level145to150.3d], lty.box = "dashed") south.north.3d[level145to150.3d], # 標高150mラインに平面の追加. volcano[level145to150.3d], color = "red", mt.mw.3d$points3d(mt.top[2], mt.top[1], scale.y = 1, xlim = c(0, 700), ylim = c(0, 1000), max(volcano), col = "blue", pch = 19) zlim = c(80, 200), xlab = "West-East", # 頂上の追加. ylab = "South-North", zlab = "Altitude") mt.mw.3d$plane3d(150, x.coef = 0, y.coef = 0, lty.box = "dashed") # 標高150mラインに平面 mt.mw.3d$points3d(west.east.3d[level150to155.3d], south.north.3d[level150to155.3d], volcano[level150to155.3d], col = "red") # 標高150m以上155m未満 # 3c west275to300.3d <- which(west.east.3d < 300 & west.east.3d >= 275) # 西から275以上300m未満 west500to525.3d <- which(west.east.3d < 525 & # 3d west.east.3d >= 500) # 西から500以上525m未満 south275to325.3d <- which(south.north.3d < 325 & label.3d <- c(west275to300.3d, west500to525.3d) south.north.3d >= 275) # 南から275以上325m未満 mt.mw.3d <- scatterplot3d(west.east.3d[label.3d], mt.mw.3d <-scatterplot3d( south.north.3d[label.3d], volcano[label.3d], west.east.3d[south275to325.3d], scale.y = 1.5, highlight.3d = TRUE, south.north.3d[south275to325.3d], xlim = c(0, 700), ylim = c(0, 1000), volcano[south275to325.3d], scale.y = 0.7, zlim = c(80, 200), xlab = "West-East", color = "blue", xlim = c(0, 700), ylim = c(0, 1000), ylab = "South-North", zlab = "Altitude") zlim = c(80, 200), xlab = "West-East", ylab = "South-North", zlab = "Altitude")
  • 20. まとめ 図示の形式 定量性 イメージ contour image 連続的な面 ◯ △ persp 連続的な面 △ ◯ scatterplot3d 離散的な点 △ ◯ 使わないで済むなら、それに越したことはないかもしれません…
  • 21. 参考 ● Rヘルプドキュメント ● 高水準作図関数 (R-Tips) http://cse.naro.affrc.go.jp/takezawa/r-tips/r/50.html ● 三次元散布図 (RjpWiki) http://www.okada.jp.org/RWiki/ 他にも関数やパッケージをご存じでしたら、ぜひ教えてください!