裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

ひいきの引き倒しにならぬよう(願)

2015年06月01日 | ブログラミング

> R Recipe: aligned-plot-naive sumo.ly/865O 上下の図の「はば」をそろえるわざの紹介. R 作図でありがちなめんどう,ggplot2 だとわりと簡単に何とかなるみたい… pic.twitter.com/3UeF6qZrFu

ggplot2 を使えば,下の図のように,横幅を揃えるのが簡単といっているのかな?

プログラムは,

data <- data.frame(x = seq(0, 100, 1))
#
data = transform(data,
                 y1 = sin(x * pi / 10),
                 y2 = x**2
                 )
library(ggplot2)
library(gridExtra)
p1 <- ggplot(data, aes(x = x)) + geom_line(aes(y = y1)) + theme_classic()
p2 <- ggplot(data, aes(x = x)) + geom_bar(aes(y = y2), stat = "identity") + theme_classic()
p1
p2

なんだろうか。知らんけど。

一方,基礎的な描画関数を使うと,

x <- seq(0, 100, 1)
data <- data.frame(x, y1 = sin(x * pi / 10), y2 = x**2)
layout(matrix(1:2, 2))
old <- par(mar=c(3, 3, 1, 1), mgp=c(1.8, 0.6, 0))
plot(data$y1 ~ x, type="l")
plot(data$y2 ~ x, type="h")
par(old)

ともなろう。

描かれるのは

どっちが簡単?決まってる,後者。

ggplot2 は呪文みたいだなあ。

それに,図自体のキレイさは誰の意見も一致するだろう。あえて,言及しない。

下のヒストグラムの太さが違うように見えるのは,連続量を離散値に四捨五入して描いているからあんなになる。本来は等間隔の棒グラフが等間隔の隙間で区切られて並んでいるはず。

それは,コンピュータの原理状仕方ないけど,それが目に見えるみっともなさで表現されるのは不都合。plot(..., type="h") のように線で逃げるのが穏当。

もっとも,plot(..., type="h") でも,線の太さが違うように見えるところがあるのは,ご愛敬。

コメント (1)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 「正しい用語を使え」という... | トップ | 信頼区間の重なりの有無と有... »
最新の画像もっと見る

1 コメント

コメント日が  古い順  |   新しい順
Unknown (中澤)
2015-06-03 07:14:49
このggplot2の図は,元々の英語の記事では微妙にサイズがずれているから「完璧を求める内なる私」が満足できないと書かれている方です。なにやらテクニックを使うとぴったり揃うという図がその下に載っていました。
この例ではbaseの方が簡単というのは,その通りと思います。なお,上下2分割で良ければlayout(1:2)で十分です。
元の英語記事にあるように,上下のサイズを3:2にしたい場合は,layout(c(1,1,1,2,2))でいけます。
返信する

コメントを投稿

ブログラミング」カテゴリの最新記事