裏 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でシェアする

PVアクセスランキング にほんブログ村

PVアクセスランキング にほんブログ村