# ggplot2: Elegant Graphics for Data Analysis (Use R!)

# Hadley Wickham (著)

# ダイアモンドの価格と質に関するデータ

library(ggplot2)

data(diamonds)

set.seed(1410)

dsmall <- diamonds[sample(nrow(diamonds), 100), ]

# 散布図 - 高水準作図関数

qplot(carat, price, data=dsmall) # カラットと価格の散布図

qplot(log(carat),log(price),data=dsmall) # 対数変換

qplot(carat,x*y*z,data=dsmall) # カラットと体積の散布図

# 外観(色,形,透過)の変更

qplot(carat,price,data=dsmall,colour=I("red"))

qplot(carat,price,data=dsmall,shape=I(2))

qplot(carat,price,data=dsmall,colour=color) # ダイアモンドの色でマークの色を変える

qplot(carat,price,data=dsmall,shape=cut) # カット法でマークを変える

qplot(carat,price,data=diamonds,alpha=I(0.1)) # 透過率を設定

# geom="point" : 散布図(デフォルト)

# geom="smooth" : 曲線あてはめ,SE幅も描く

qplot(carat,price,data=dsmall,geom=c("point","smooth")) # method="loess"がデフォルト

qplot(carat,price,data=dsmall,geom=c("point","smooth"),method="lm") # 単回帰直線

library(mgcv)

qplot(carat,price,data=dsmall,geom=c("point","smooth"),method="gam",formula=y~s(x)) # GAM

library(splines)

qplot(carat,price,data=dsmall,geom=c("point","smooth"),method="lm",formula=y~ns(x,5)) # 自然スプライン

library(MASS)

qplot(carat,price,data=dsmall,geom=c("point","smooth"),method="rlm") # ロバスト回帰

# geom="boxplot" : 箱髭図

qplot(color,price/carat,data=diamonds,geom="boxplot")

qplot(color,price/carat,data=diamonds,geom="jitter")

qplot(color,price/carat,data=diamonds,geom="jitter",alpha=I(0.1))

# geom="histogram" : ヒストグラム

qplot(carat,data=diamonds,geom="histogram")

qplot(carat,data=diamonds,geom="histogram",binwidth=1,xlim=c(0,3))

qplot(carat,data=diamonds,geom="histogram",binwidth=0.1,xlim=c(0,3))

qplot(carat,data=diamonds,geom="histogram",binwidth=0.01,xlim=c(0,3))

qplot(carat,data=diamonds,geom="histogram",fill=color) # ダイアモンドの色で層化

# geom="density" : 密度推定

qplot(carat,data=diamonds,geom="density")

qplot(carat,data=diamonds,geom="histogram",fill=color)

# geom="bar" : 離散値に対する棒グラフ

qplot(color,data=diamonds,geom="bar")

qplot(color,data=diamonds,geom="bar",weight=carat)+scale_y_continuous("carat") # 色別カラット数

# geom="line" : 直線(x座標をソートしてから点をつなぐ)

# unemploy : 失業者数, pop : 人口, uempmed : 失業期間の中央値(週)

data(economics)

qplot(date,unemploy/pop,data=economics,geom="line",main="percent of unemployed")

qplot(date,uempmed,data=economics,geom="line",main="median number of weeks unemployed")

# geom="path" : 直線(データの並び順で点をつなぐ)

year <- function(x)as.POSIXlt(x)$year+1900 # 年の取得

qplot(unemploy/pop,uempmed,data=economics,geom=c("point","path"))

qplot(unemploy/pop,uempmed,data=economics,geom="path",colour=year(date))+scale_area()