「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)
※コメント投稿者のブログIDはブログ作成者のみに通知されます