サンプルデータを用意する。
- 列変数2つ。
- 「地域」A,B,C,D
- 「回答」はい、いいえ、どちらでもない
set.seed(1234)
data.frame(地域=factor(sample(x = c("A","B","C","D"),size = 115,replace = TRUE)),
回答=factor(sample(x = c("はい","いいえ","どちらでもない"),size = 115,replace = TRUE,prob = c(0.5,0.3,0.2)),levels=c("はい","いいえ","どちらでもない"))) -> .dd
.dd %>% head()
## 地域 回答
## 1 D どちらでもない
## 2 D どちらでもない
## 3 B はい
## 4 B はい
## 5 A いいえ
## 6 D いいえ
summary(.dd)
## 地域 回答
## A:22 はい :51
## B:30 いいえ :37
## C:28 どちらでもない:27
## D:35
グラフ表示
.dd %>% count(回答) %>% mutate(rate = round(100*n/sum(n),1)) %>% ggplot(aes(x=回答,y=n)) + geom_col()

.dd %>% filter(地域=="A") %>% count(回答) %>% mutate(rate = round(100*n/sum(n),1)) %>% ggplot(aes(x=回答,y=n)) + geom_col() + ggtitle("地域A回答") -> p01
.dd %>% filter(地域=="B") %>% count(回答) %>% mutate(rate = round(100*n/sum(n),1)) %>% ggplot(aes(x=回答,y=n)) + geom_col() + ggtitle("地域B回答") -> p02
.dd %>% filter(地域=="C") %>% count(回答) %>% mutate(rate = round(100*n/sum(n),1)) %>% ggplot(aes(x=回答,y=n)) + geom_col() + ggtitle("地域C回答") -> p03
.dd %>% filter(地域=="D") %>% count(回答) %>% mutate(rate = round(100*n/sum(n),1)) %>% ggplot(aes(x=回答,y=n)) + geom_col() + ggtitle("地域D回答") -> p04
p01 + p02 + p03 + p04+ plot_layout(nrow = 2, byrow = TRUE)

.dd %>% group_by(地域) %>% count(回答) %>% ggplot(aes(x=地域,y=n)) + geom_col() -> p11
.dd %>% group_by(地域) %>% count(回答) %>% ggplot(aes(x=地域,y=n,fill=回答)) + geom_col() -> p12
.dd %>% group_by(地域) %>% count(回答) %>% ggplot(aes(x=地域,y=n,fill=回答)) + geom_bar(stat="identity",position = "fill") -> p13
.dd %>% group_by(地域) %>% count(回答) %>% ggplot(aes(x=地域,y=n,fill=回答)) + geom_bar(stat="identity",position = "dodge") -> p14
p11 + p12 + p13 + p14 + plot_layout(nrow = 2, byrow = TRUE)

RColorBrewer::display.brewer.all()

library(RColorBrewer)
## Warning: package 'RColorBrewer' was built under R version 4.0.5
col <- brewer.pal(3,"Set3")
.dd %>% group_by(地域) %>% count(回答) %>% ggplot(aes(x=地域,y=n)) + geom_col() -> p11
.dd %>% group_by(地域) %>% count(回答) %>% ggplot(aes(x=地域,y=n,fill=回答)) + geom_col() + scale_fill_manual(values = col) -> p12
.dd %>% group_by(地域) %>% count(回答) %>% ggplot(aes(x=地域,y=n,fill=回答)) + geom_bar(stat="identity",position = "fill") -> p13
.dd %>% group_by(地域) %>% count(回答) %>% ggplot(aes(x=地域,y=n,fill=回答)) + geom_bar(stat="identity",position = "dodge") -> p14
p11 + p12 + p13 + p14 + plot_layout(nrow = 2, byrow = TRUE,guides = 'collect')

.dd %>% group_by(地域) %>% count(回答) %>% ggplot(aes(x=地域,y=n)) + geom_col() -> p11
.dd %>% group_by(地域) %>% count(回答) %>% ggplot(aes(x=地域,y=n,fill=回答)) + geom_col() + scale_fill_manual(values = col) + coord_flip() -> p12
.dd %>% group_by(地域) %>% count(回答) %>% ggplot(aes(x=地域,y=n,fill=回答)) + geom_bar(stat="identity",position = "fill") + coord_flip() + scale_x_discrete(limits=rev(levels(.dd$地域)))-> p13
.dd %>% group_by(地域) %>% count(回答) %>% ggplot(aes(x=地域,y=n,fill=回答)) + geom_bar(stat="identity",position = "dodge") + coord_flip() -> p14
p11 + p12 + p13 + p14 + plot_layout(nrow = 2, byrow = TRUE,guides = 'collect')

.dd %>% group_by(地域) %>% count(回答) %>% pivot_wider(names_from = 回答,values_from = n) %>% column_to_rownames("地域") %>% as.matrix() -> .tbl
library(grid)
#library(vcd)
fill_matrix="lightgreen"
cname <- colnames(.tbl)
rname <- rownames(.tbl)
dimnames(.tbl) <- list(地域= rname,回答=cname)
.tbl %>% vcd::mosaic(gp=gpar(fill=fill_matrix,col=0))

fill_matrix <- matrix(rep(brewer.pal(3,"Pastel1"),4),byrow = TRUE,4,3)
.tbl %>% vcd::mosaic(gp=gpar(fill=fill_matrix,col=0),labeling = vcd::labeling_values)
