library(ggplot2)
仮想データの作成
sales.data1 <- data.frame(
item="item1",
m=4:9,
month=paste0("2014-0",c(4:9)),
sales=c(800,1000,1800,1500,1400,2000))
sales.data1
## item m month sales
## 1 item1 4 2014-04 800
## 2 item1 5 2014-05 1000
## 3 item1 6 2014-06 1800
## 4 item1 7 2014-07 1500
## 5 item1 8 2014-08 1400
## 6 item1 9 2014-09 2000
sales.data2 <- data.frame(
item="item2",
m=4:9,
month=paste0("2014-0",c(4:9)),
sales=c(700,900,1500,1700,1800,2400))
sales.data12 <- rbind(sales.data1, sales.data2)
sales.data12
## item m month sales
## 1 item1 4 2014-04 800
## 2 item1 5 2014-05 1000
## 3 item1 6 2014-06 1800
## 4 item1 7 2014-07 1500
## 5 item1 8 2014-08 1400
## 6 item1 9 2014-09 2000
## 7 item2 4 2014-04 700
## 8 item2 5 2014-05 900
## 9 item2 6 2014-06 1500
## 10 item2 7 2014-07 1700
## 11 item2 8 2014-08 1800
## 12 item2 9 2014-09 2400
set.seed(10)
sales.data34 <- data.frame(
shop=sample(1:3,100,replace=T),
item3=rnorm(100,100,30)
)
sales.data34$item4 <- round(0.9 * sales.data34$item3 +
80 * sales.data34$shop +
rnorm(100,30,15))
sales.data34$shop <- paste0("shop",sales.data34$shop)
head(sales.data34)
## shop item3 item4
## 1 shop2 87.98 263
## 2 shop1 89.96 187
## 3 shop2 141.04 334
## 4 shop3 164.13 405
## 5 shop1 115.17 201
## 6 shop1 123.59 186
ggplot(sales.data1, aes(x=month, y=sales)) +
geom_bar(stat="identity")
# 背景を白にする
ggplot(sales.data1, aes(x=month, y=sales)) +
geom_bar(stat="identity") +
theme_bw()
## タイトルとx軸とy軸のラベルを付ける
ggplot(sales.data1, aes(x=month, y=sales)) +
geom_bar(stat="identity") +
xlab("月") +
ylab("売上") +
ggtitle("売上推移") +
theme_bw()
ggplot(sales.data1, aes(x=month, y=sales)) +
geom_bar(stat="identity") +
xlab("月") +
ylab("売上") +
ggtitle("売上推移") +
theme_bw(base_family="Osaka")
# 数値フォーマット用のライブラリ
library(scales)
ggplot(sales.data1, aes(x=month, y=sales)) +
geom_bar(stat="identity") +
xlab("月") +
ylab("売上") +
ggtitle("売上推移") +
scale_y_continuous(label=comma) +
theme_bw(base_family="Osaka")
## 数値を出力する
ggplot(sales.data1, aes(x=month, y=sales)) +
geom_bar(stat="identity") +
geom_text(aes(label=sales), vjust=-0.2) +
xlab("月") +
ylab("売上") +
ggtitle("売上推移") +
scale_y_continuous(label=comma) +
theme_bw(base_family="Osaka")
## 数値のフォーマットを3ケタ区切りにする
ggplot(sales.data1, aes(x=month, y=sales)) +
geom_bar(stat="identity") +
geom_text(aes(label=comma(sales)), vjust=-0.2) +
xlab("月") +
ylab("売上") +
ggtitle("売上推移") +
scale_y_continuous(label=comma) +
theme_bw(base_family="Osaka")
# 積み上げ棒グラフ
ggplot(sales.data12, aes(x=month, y=sales, fill=item)) +
geom_bar(stat="identity") +
xlab("月") +
ylab("売上") +
ggtitle("売上推移") +
scale_y_continuous(label=comma) +
theme_bw(base_family="Osaka")
library(RColorBrewer)
rownames(brewer.pal.info)
## [1] "BrBG" "PiYG" "PRGn" "PuOr" "RdBu" "RdGy"
## [7] "RdYlBu" "RdYlGn" "Spectral" "Accent" "Dark2" "Paired"
## [13] "Pastel1" "Pastel2" "Set1" "Set2" "Set3" "Blues"
## [19] "BuGn" "BuPu" "GnBu" "Greens" "Greys" "Oranges"
## [25] "OrRd" "PuBu" "PuBuGn" "PuRd" "Purples" "RdPu"
## [31] "Reds" "YlGn" "YlGnBu" "YlOrBr" "YlOrRd"
display.brewer.all()
ggplot(sales.data12, aes(x=month, y=sales, fill=item)) +
geom_bar(stat="identity") +
xlab("月") +
ylab("売上") +
ggtitle("売上推移") +
scale_y_continuous(label=comma) +
scale_fill_brewer(palette = "Paired") +
theme_bw(base_family="Osaka")
#### 棒に枠をつける
# 積み上げ棒グラフで枠を付ける
ggplot(sales.data12, aes(x=month, y=sales, fill=item)) +
geom_bar(stat="identity", col="black") +
xlab("月") +
ylab("売上") +
ggtitle("売上推移") +
scale_y_continuous(label=comma) +
scale_fill_brewer(palette = "Paired") +
theme_bw(base_family="Osaka")
# 100%積み上げグラフ
ggplot(sales.data12, aes(x=month, y=sales, fill=item)) +
geom_bar(position="fill",stat="identity", col="black") +
xlab("月") +
ylab("売上") +
ggtitle("売上推移") +
scale_y_continuous(label=percent) +
scale_fill_brewer(palette = "Paired") +
theme_bw(base_family="Osaka")
## 水平に棒グラフを並べる
ggplot(sales.data12, aes(x=month, y=sales, fill=item)) +
geom_bar(position="dodge",stat="identity",col="black") +
xlab("月") +
ylab("売上") +
ggtitle("売上推移") +
scale_y_continuous(label=comma) +
scale_fill_brewer(palette = "Paired") +
theme_bw(base_family="Osaka")
# xが数値
ggplot(sales.data1, aes(x=m, y=sales)) +
geom_line() +
xlab("月") +
ylab("売上") +
ggtitle("売上推移") +
scale_y_continuous(label=comma) +
theme_bw(base_family="Osaka")
# xがファクター
ggplot(sales.data1, aes(x=month, y=sales,group=1)) +
geom_line() +
xlab("月") +
ylab("売上") +
ggtitle("売上推移") +
scale_y_continuous(label=comma) +
theme_bw(base_family="Osaka")
ylimit <- c(0,max(sales.data1$sales))
ggplot(sales.data1, aes(x=month, y=sales,group=1)) +
geom_line() +
xlab("月") +
ylab("売上") +
ggtitle("売上推移") +
scale_y_continuous(label=comma,limits=ylimit) +
theme_bw(base_family="Osaka")
# 点を追加
ggplot(sales.data1, aes(x=month, y=sales,group=1)) +
geom_line() +
geom_point() +
xlab("月") +
ylab("売上") +
ggtitle("売上推移") +
scale_y_continuous(label=comma,limits=ylimit) +
theme_bw(base_family="Osaka")
# グループごとに折れ線グラフ
ylimit <- c(0,max(sales.data12$sales))
ggplot(sales.data12, aes(x=month, y=sales,group=item,col=item)) +
geom_line() +
xlab("月") +
ylab("売上") +
ggtitle("売上推移") +
scale_y_continuous(label=comma,limits=ylimit) +
theme_bw(base_family="Osaka")
# グループごとに線の種類を変える
ggplot(sales.data12, aes(x=month, y=sales,group=item,col=item,lty=item)) +
geom_line() +
xlab("月") +
ylab("売上") +
ggtitle("売上推移") +
scale_y_continuous(label=comma,limits=ylimit) +
theme_bw(base_family="Osaka")
# 基本的な散布図
ggplot(sales.data34, aes(x=item3, y=item4)) +
geom_point() +
xlab("item3") +
ylab("item4") +
ggtitle("item3とitem4の散布図") +
scale_y_continuous(label=comma) +
theme_bw(base_family="Osaka")
# 塗りつぶしなしの散布図
ggplot(sales.data34, aes(x=item3, y=item4)) +
geom_point(shape=21) +
xlab("item3") +
ylab("item4") +
ggtitle("item3とitem4の散布図") +
scale_y_continuous(label=comma) +
theme_bw(base_family="Osaka")
# グループごとに色と形を変える
ggplot(sales.data34, aes(x=item3, y=item4, col=shop, shape=shop)) +
geom_point() +
xlab("item3") +
ylab("item4") +
ggtitle("item3とitem4の散布図") +
scale_y_continuous(label=comma) +
theme_bw(base_family="Osaka")
# 回帰直線の追加
ggplot(sales.data34, aes(x=item3, y=item4)) +
geom_point() +
geom_smooth(method="lm") +
xlab("item3") +
ylab("item4") +
ggtitle("item3とitem4の散布図") +
scale_y_continuous(label=comma) +
theme_bw(base_family="Osaka")
# グループごとに回帰直線を引く
ggplot(sales.data34, aes(x=item3, y=item4, col=shop, shape=shop,group=shop)) +
geom_point() +
geom_smooth(method="lm") +
xlab("item3") +
ylab("item4") +
ggtitle("item3とitem4の散布図") +
scale_y_continuous(label=comma) +
theme_bw(base_family="Osaka")
# 基本
ggplot(sales.data34, aes(x=item3)) +
geom_histogram() +
ggtitle("item3の売上分布") +
scale_y_continuous(label=comma) +
theme_bw(base_family="Osaka")
ggplot(sales.data34, aes(x=item3)) +
geom_histogram(fill="white",col="black") +
ggtitle("item3の売上分布") +
scale_y_continuous(label=comma) +
theme_bw(base_family="Osaka")
# ビン幅を10に設定
ggplot(sales.data34, aes(x=item3)) +
geom_histogram(fill="white",col="black",binwidth=10) +
ggtitle("item3の売上分布") +
scale_y_continuous(label=comma) +
theme_bw(base_family="Osaka")
# グループごとに色を付ける
ggplot(sales.data34, aes(x=item3,fill=shop)) +
geom_histogram(position="dodge",col="black",binwidth=10) +
ggtitle("item3の売上分布") +
scale_y_continuous(label=comma) +
scale_fill_brewer(palette = "Paired") +
theme_bw(base_family="Osaka")
ggplot(sales.data34, aes(x=shop,y=item3)) +
geom_boxplot() +
ggtitle("店舗ごとのitem3の売上分布") +
scale_y_continuous(label=comma) +
theme_bw(base_family="Osaka")
library(reshape2)
sales.data34.melt <-
melt(sales.data34,id.vars=c("shop"),value.names=c("item3","item4"))
ggplot(sales.data34.melt, aes(x=variable,y=value)) +
geom_boxplot() +
xlab("") +
ylab("売上") +
ggtitle("店舗ごとのitem3,4の売上分布") +
scale_y_continuous(label=comma) +
facet_grid(.~shop) +
theme_bw(base_family="Osaka")
戦略的データマイニング (シリーズ Useful R 4) の第3章