R(ggplot2)

2014年12月16日 (火)

[R]ggplot2パッケージによる図を、簡単に並べて表示する

gridExtraパッケージのgrid.arrange関数を使えばよい。以下、使用例。

> library(ggplot2)
> library(gridExtra)
> x <- c(1, 2, 3)
> y1 <- c(1, 4, 9)
> y2 <- c(9, 4, 1)
> y3 <- c(4, 4, 5)
> g1 <- qplot(x, y1)
> g2 <- qplot(x, y2)
> g3 <- qplot(x, y3)
> grid.arrange(g1, g2, g3, nrow = 2)

Figure4

2014年12月 9日 (火)

[R]ggplot2による図の枠線内の描画範囲(軸の範囲)をxlim、ylimで指定をした値きっかりにしたい

ggplot2パッケージでは、xlim関数などを使用して特に意識をしないで図を作成すると、図の枠線内の描画範囲(軸の範囲)は、その外側にある程度余白を付けて描画される。

> library(ggplot2)
> x <- c(1, 2, 3)
> y <- c(1, 4, 9)
> dtf <- data.frame(x, y)
> g <- ggplot(dtf, aes(x = x, y = y)) + geom_point()
> g <- g + xlim(0, 4) + ylim(0, 10)
> print(g)

Figure21
特に何も指定しないと描画範囲が横軸がおおよそ-0.1~4.1、縦軸がおおよそ-0.1~10.1となり、指定した範囲きっかりに描画されない。ここでxlim、ylim関数ではなくcoord_cartesian関数を使用して、縦横それぞれの軸の範囲を指定する。

> g <- ggplot(dtf, aes(x = x, y = y)) + geom_point()
> g <- g + coord_cartesian(xlim = c(0, 4), ylim = c(0, 10))
> print(g)

Figure22
今度は、枠線内は指定した範囲(x:0~4、y:0~10)きっかりに描画されるようになった。

2014年4月 4日 (金)

[ggplot2]点を描画する

geom_point関数を使う。

> library(ggplot2)
> xd <- c(1, 2, 3, 4, 6)
> yd <- c(1, 4, 9, 16, 36)
> df <- data.frame(xd, yd)
> g <- ggplot(df, aes(x = xd, y = yd)) + geom_point()
> plot(g)

2014年1月25日 (土)

[R]SpatialLinesDataFrameオブジェクトから座標データを簡単に抜き出す

ggplot2パッケージに含まれる関数fortifyを使うと、SpatialLinesDataFrameオブジェクトから座標データを簡単なデータフレーム形式に変換してくれる。以下に、線が20含まれるシェープファイルmap.shpを使用した例を示す。

> library(maptools)
> library(ggplot2)
> shp <- readShapeLines("map.shp")
> shp
(大量にデータが表示される)
> length(shp)  # 線の数
[1] 20
> df <- fortify(shp)  # データフレーム形式に変換
> is.data.frame(df)
[1] TRUE
> head(df, 3)
         long         lat order piece group id
1 ・・・
2 ・・・
3 ・・・
> tail(df, 3)
             long         lat order piece  group   id
○○ ・・・
○○ ・・・
○○ ・・・

含まれる線の識別は列idを見ればよい。上記の例でいうと、列idは1から始まり線が変わることにidが1ずつ増えて最終行のidは20になる。

2014年1月17日 (金)

[ggplot2]複数のデータを重ねて図に描画する

演算子「+」を使用して描画オブジェクトを足し合わせればよい。

> library(ggplot2)
> x <- c(1, 2, 3)
> y1 <- c(2, 3, 5)
> y2 <- c(1, 5, 10)
> dtf1 <- data.frame(x = x, y = y1)
> dtf2 <- data.frame(x = x, y = y2)
> g <- ggplot(NULL)
> g <- g + geom_point(data = dtf1, aes(x, y))
> g <- g + geom_point(data = dtf2, aes(x, y))
> print(g)

Image2
注意点として、描画処理の最初に「g <- ggplot(NULL)」としてggplot2のオブジェクトを作成しておくことが必要であるので注意。

また、geom_point関数内で「data =」を省くとうまく動作しないのでこちらも注意。

Rグラフィックスクックブック ―ggplot2によるグラフ作成のレシピ集 ggplot2: Elegant Graphics for Data Analysis (Use R!)

はじめてのR: ごく初歩の操作から統計解析の導入まで RStudioではじめるRプログラミング入門 Rによるデータサイエンス データ解析の基礎から最新手法まで Rによる機械学習 (Programmer's SELECTION) Rによるやさしい統計学 R言語徹底解説 Rによるやさしいテキストマイニング R言語上級ハンドブック

2014年1月16日 (木)

[ggplot2]コマンドラインではグラフが描画されるのにスクリプトファイルでは描画されない

オブジェクトを作成して、それを(明示的に)描画する必要がある。例えば、コマンドラインでの入力では、以下のようにすればグラフは表示される。

> library(ggplot2)
> x <- c(1, 2, 3)
> y <- c(2, 3, 5)
> df <- data.frame(x, y)
> ggplot(df, aes(x, y)) + geom_point()

コマンドラインでは上記の最終行のようにggplotコマンドを使用すれば描画されるが、スクリプト内ではggplotのオブジェクトを作成して、それをprint関数で明示しなければ描画されない。つまり、以下のようにスクリプトファイルを書けばよい。

library(ggplot2)
x <- c(1, 2, 3)
y <- c(2, 3, 5)
df <- data.frame(x, y)
g <- ggplot(df, aes(x, y)) + geom_point()
print(g)

これを以下のように実行すればよい。

> source("test.R")

2014年1月15日 (水)

ggplot2パッケージを使う

libraryコマンドを使う。

> library(ggplot2)

無料ブログはココログ

■■

■■■