裏 RjpWiki

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

ダメ出し:ちゃんとしたグラフを描こう

2012年08月13日 | 統計学

ggplot2:scale_shape_manual ggplot2メモ:水準を形で分ける」において,以下のようなグラフを描いている。

水準が9個あり,色や線種を変えて折れ線グラフを描くと見にくいということで,記号も付けて描いたということだが,本当に見やすいのか?例えば,この折れ線の中から日本がどれなのか,探すのは簡単か?

簡単でない理由は,折れ線の凡例が本体と分離されているからだ。凡例が枠外にあるからではない。

以下のような,標準の matplot を使って描いた図と比べれば,差は一目瞭然。

見た目が派手(きれい?)なグラフを描くことに腐心するより,見やすいグラフを描くようにしたいものだ。パワポで見せびらかすにはよいかも知れないが,学会誌に ggplot2 で描いたような図は載らないだろう。

上の図を描いた元のプログラム

library(rdatamarket)
library(reshape2)
library(ggplot2)
getDM <- function(url) {
    data <- dmseries(url)
    data <- data.frame(year = index(data), as.data.frame(data))
    data <- melt(data, id.vars = "year")
    colnames(data) <- c("year", "country", "value")
    invisible(data)
}
url <- "http://datamarket.com/data/set/15n6/health-expenditure-public-of-gdp#display=line&ds=15n6|hnt"
res <- getDM(url)
smp <- subset(res, country %in% c("Sudan", "Mexico", "Kuwait", "Germany",
    "Finland", "France", "Canada", "Japan", "United.States"))
ggplot(smp, aes(x = year, y = value, group = country)) + geom_line(aes(color = country)) +
    geom_point(aes(color = country, shape = country)) + scale_shape_manual(values = 0:length(unique(smp$country)))

下の図を描いたプログラム
x <- matrix(smp$value, 15)
old <- par(mar=c(3, 3, 1, 6), mgp=c(1.8, 0.8, 0), las=1, cex.axis=0.8)
matplot(x, type="o", xaxt="n", xlab="year", ylab="value", lty=1, col=c(1:4, 6, 8), pch=1:9, cex=0.5)
axis(1, at=1:15, labels=1995:2009)
name <- c("Canada", "Finland", "France", "Germany", "Japan", "Kuwait", "Mexico", "Sudan", "United States")
axis(4, x[15,], name)

par(old)

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« ダメ出し:文字変換 | トップ | ダメ出し:簡明直截なプログ... »
最新の画像もっと見る

コメントを投稿

統計学」カテゴリの最新記事