「グラフィックスのための R プログラミング ggplot2 入門」を買ってきて読む。
とてもおもしろい。
以前の、凡例に alpha が出てきてしまう、という話の理由が分かったので、出ないようにしてみる。
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)
新キャラの情報は Wikipedia には載っていないようだ。
[latest]