天泣記

2011-07-30 (Sat)

#1

「グラフィックスのための R プログラミング ggplot2 入門」を買ってきて読む。

とてもおもしろい。

#2

以前の、凡例に alpha が出てきてしまう、という話の理由が分かったので、出ないようにしてみる。

bmi-ggplot.png

bmi-ggplot.R:

library(ggplot2)

names <- c("唯", "澪", "律", "紬", "梓", "さわ子", "和", "憂")
heights <- c(156, 160, 154, 157, 150, 165, 158, 154)
weights <- c(50, 54, 48, 53, 46, 56, 52, 50)

data <- data.frame(name=names, height=heights, weight=weights)

bmi <- function(b) function(w) sqrt(w/b)*100

xx <- seq(40,60,0.2)
yy <- seq(140,170,0.2)

bmi_w <- rep(xx, length(yy))
bmi_h <- rep(yy, rep(length(xx), length(yy)))
bmi_bmi <- bmi_w / (bmi_h/100)^2
bmi_table <- data.frame(w=bmi_w, h=bmi_h, BMI=bmi_bmi)

p <- ggplot()
p <- p + coord_cartesian(xlim=c(40,60), ylim=c(140,170))
p <- p + scale_y_continuous(breaks=seq(140,180,by=10))
p <- p + scale_fill_gradient2(low="blue", mid="green", high="red", midpoint=22)
p <- p + geom_tile(data=bmi_table, aes(x=w, y=h, z=BMI, fill=BMI), alpha=0.7)
p <- p + geom_text(aes(x=data$weight, y=data$height, label=data$name))
p <- p + xlab("体重[kg]") + ylab("身長[cm]")
p <- p + geom_line(aes(x=xx, y=bmi(18.5)(xx)))
p <- p + geom_line(aes(x=xx, y=bmi(25)(xx)))
p <- p + geom_line(aes(x=xx, y=bmi(30)(xx)))
p <- p + geom_line(aes(x=xx, y=bmi(40)(xx)))
p <- p + geom_text(aes(x=44,y=163,label="低体重(BMI: 〜18.5)"))
p <- p + geom_text(aes(x=44,y=143,label="普通(BMI: 18.5〜25)"))
p <- p + geom_text(aes(x=56,y=143,label="前肥満(BMI: 25〜30)"))
print(p)
#3

新キャラの情報は Wikipedia には載っていないようだ。


[latest]


田中哲