원자료는 세종실록, 요약표는 오기수 교수의 논문에서.
지역 | 계급 | 관료여부 | 찬반 | 집계 |
---|---|---|---|---|
서울 | 대신 등 | 관료 | 찬성 | 21 |
서울 | 대신 등 | 관료 | 반대 | 194 |
서울 | 수령 | 관료 | 찬성 | 259 |
서울 | 수령 | 관료 | 반대 | 393 |
서울 | 3품이하현직 | 관료 | 찬성 | 443 |
서울 | 3품이하현직 | 관료 | 반대 | 117 |
유후사 | 품관촌민 | 품관촌민 | 찬성 | 1123 |
유후사 | 품관촌민 | 품관촌민 | 반대 | 71 |
경기 | 3품이하전직 | 관료 | 찬성 | 29 |
경기 | 3품이하전직 | 관료 | 반대 | 5 |
경기 | 품관촌민 | 품관촌민 | 찬성 | 17076 |
경기 | 품관촌민 | 품관촌민 | 반대 | 236 |
평안 | 대신 등 | 관료 | 반대 | 1 |
평안 | 3품이하전직 | 관료 | 찬성 | 6 |
평안 | 3품이하전직 | 관료 | 반대 | 35 |
평안 | 품관촌민 | 품관촌민 | 찬성 | 1326 |
평안 | 품관촌민 | 품관촌민 | 반대 | 28474 |
황해 | 3품이하전직 | 관료 | 찬성 | 17 |
황해 | 3품이하전직 | 관료 | 반대 | 17 |
황해 | 품관촌민 | 품관촌민 | 찬성 | 4454 |
황해 | 품관촌민 | 품관촌민 | 반대 | 15601 |
충청 | 대신 등 | 관료 | 반대 | 2 |
충청 | 3품이하전직 | 관료 | 찬성 | 35 |
충청 | 3품이하전직 | 관료 | 반대 | 26 |
충청 | 품관촌민 | 품관촌민 | 찬성 | 6982 |
충청 | 품관촌민 | 품관촌민 | 반대 | 14013 |
강원 | 3품이하전직 | 관료 | 찬성 | 5 |
강원 | 3품이하전직 | 관료 | 반대 | 10 |
강원 | 품관촌민 | 품관촌민 | 찬성 | 939 |
강원 | 품관촌민 | 품관촌민 | 반대 | 6888 |
함길 | 대신 등 | 관료 | 반대 | 1 |
함길 | 3품이하전직 | 관료 | 찬성 | 3 |
함길 | 3품이하전직 | 관료 | 반대 | 14 |
함길 | 품관촌민 | 품관촌민 | 찬성 | 75 |
함길 | 품관촌민 | 품관촌민 | 반대 | 7387 |
경상 | 3품이하전직 | 관료 | 찬성 | 55 |
경상 | 3품이하전직 | 관료 | 반대 | 16 |
경상 | 품관촌민 | 품관촌민 | 찬성 | 36262 |
경상 | 품관촌민 | 품관촌민 | 반대 | 377 |
전라 | 대신 등 | 관료 | 반대 | 2 |
전라 | 3품이하전직 | 관료 | 찬성 | 42 |
전라 | 3품이하전직 | 관료 | 반대 | 12 |
전라 | 품관촌민 | 품관촌민 | 찬성 | 29505 |
전라 | 품관촌민 | 품관촌민 | 반대 | 257 |
kable(t(as.matrix(format(tbl.vote, big.mark = ","))), caption = "전체 찬반", align = rep("r", 2))
찬성 | 반대 |
---|---|
98,657 | 74,149 |
kable(t(as.table(format(tbl.vote, big.mark = ","))), caption = "전체 찬반", align = rep("r", 2))
찬성 | 반대 |
---|---|
98,657 | 74,149 |
kable(t(as.table(format(prop.table(tbl.vote)*100, digits = 3, nsmall = 1))), caption = "전체 찬반(%)", align = rep("r", 2))
찬성 | 반대 |
---|---|
57.1 | 42.9 |
# par(family = "NanumGothic")
# gray.2 <- gray.colors(12)[c(12, 7)]
rainbow.2 <- rainbow(2)[2:1]
pie(tbl.vote, col = rainbow.2)
title(main = "전체 찬반")
text(x = 0, y = c(0.4, -0.4), labels = format(tbl.vote, big.mark = ","))
# dev.copy(png, "../pics/sejong_total_pie.png", width = 480, height = 480)
# dev.off()
# source("./theme_Nanum_kr.R")
# str(theme.kr)
# par(family = "NanumGothic")
vote.df <- as.data.frame(tbl.vote)
# y.coord <- cumsum(vote.df$Freq)/2 + c(0, cumsum(head(vote.df$Freq, -1))/2)
y.coord <- cumsum(vote.df$Freq)/2
pie.label <- paste(levels(vote.df$vote), format(vote.df$Freq, big.mark = ","), sep = "\n")
str(vote.df)
## 'data.frame': 2 obs. of 2 variables:
## $ vote: Factor w/ 2 levels "찬성","반대": 1 2
## $ Freq: int 98657 74149
p1 <- ggplot(vote.df, aes(x = "", y = Freq, fill = vote))
p2 <- p1 +
geom_bar(width = 1, stat = "identity")
p2
p2.2 <- p1 +
geom_bar(width = 1, stat = "identity", position = "dodge")
p2.2
p3.2 <- p2.2 +
theme_bw()
p3.2
# p4.2 <- p3.2 +
# theme.kr
# p4.2
p5.2 <- p3.2 +
scale_x_discrete(name = "찬반") +
scale_y_continuous(name = "집계", breaks = vote.df$Freq, labels = format(vote.df$Freq, big.mark = ","))
p5.2
p6.2 <- p5.2 +
scale_fill_manual(name = "찬반", values = rainbow(2)[2:1], labels = vote.df$vote)
p6.2
p7.2 <- p6.2 +
theme(legend.position = c(0.8, 0.85))
p7.2
# ggsave("../pics/sejong_geom_bar_total_ggplot.png", p7.2, dpi = 72)
p3 <- p2 +
theme_bw()
p3
# p4 <- p3 +
# theme.kr
# p4
p5 <- p3 +
scale_x_discrete(name = "찬반") +
scale_y_continuous(name = "집계", breaks = cumsum(vote.df$Freq), labels = format(cumsum(vote.df$Freq), big.mark = ","))
p5
p6 <- p5 +
scale_fill_manual(name = "찬반", values = rainbow(2)[2:1], labels = vote.df$vote)
p6
# ggsave("../pics/sejong_geom_bar_total_ggplot_stack.png", p6, dpi = 72)
p7 <- p6 +
theme(legend.position = c(0.5, 0.25))
p7
pie.total.1 <- p2 +
coord_polar(theta = "y", start = 3*pi/2, direction = -1)
pie.total.1
pie.total.2 <- pie.total.1 +
scale_y_continuous(name = "", breaks = NULL) +
scale_x_discrete(name = "")
pie.total.2
pie.total.3 <- pie.total.2 +
scale_fill_manual(name = "", values = rainbow(2)[2:1])
pie.total.3
pie.total.4 <- pie.total.3 +
theme_void()
# theme_void(base_family = "NanumGothic")
pie.total.4
pie.total.5 <- pie.total.4 +
guides(fill = "none")
pie.total.5
pie.total.6 <- pie.total.5 +
# geom_text(aes(y = y.coord), label = pie.label, family = "NanumGothic")
# geom_text(aes(y = y.coord), label = pie.label, family = "NanumGothic", position = position_stack())
geom_text(aes(y = y.coord), label = pie.label, position = position_stack())
pie.total.6
pie.total.7 <- pie.total.6 +
ggtitle("전체 찬반") +
theme(plot.margin = unit(c(1, 1, 1.5, 1), "lines"))
pie.total.7
# ggsave("../pics/sejong_total_pie_ggplot.png", pie.total.7, dpi = 72)
pie.gg()
pie.gg <- function(df, ggtitle = "", font.family = ""){
n <- length(names(df))
y.coord <- cumsum(df$Freq)
pie.label <- paste(levels(df$vote), format(df$Freq, big.mark = ","), sep = "\n")
p1 <- ggplot(df, aes(x = "", y = Freq, fill = vote))
p2 <- p1 +
geom_bar(width = 1, stat = "identity")
pie.1 <- p2 +
coord_polar(theta = "y", start = 3*pi/2, direction = -1)
pie.2 <- pie.1 +
scale_y_continuous(name = "", breaks = NULL) +
scale_x_discrete(name = "")
pie.3 <- pie.2 +
scale_fill_manual(name = "", values = rainbow(n)[n:1])
pie.4 <- pie.3 +
theme_void(base_family = font.family)
pie.5 <- pie.4 +
guides(fill = "none")
pie.6 <- pie.5 +
geom_text(aes(y = y.coord/n), label = pie.label, family = font.family, position = position_stack())
pie.7 <- pie.6 +
ggtitle(ggtitle) +
theme(plot.margin = unit(c(1, 1, 1.5, 1), "lines"))
return(pie.7)
}
dump("pie.gg", file = "./pie.gg.R")
# pie.gg(vote.df, ggtitle = "전체 찬반", font.family = "NanumGothic")
pie.gg(vote.df, ggtitle = "전체 찬반")
kable(format(vote.class, big.mark = ","), align = "r", caption = "계급별 찬반")
대신 등 | 수령 | 3품이하현직 | 3품이하전직 | 품관촌민 | |
---|---|---|---|---|---|
찬성 | 21 | 259 | 443 | 192 | 97,742 |
반대 | 200 | 393 | 117 | 135 | 73,304 |
kable(format(prop.table(vote.class, margin = 2)*100, digits = 3, nsmall = 1), align = "r", caption = "계급별 찬반(%)")
대신 등 | 수령 | 3품이하현직 | 3품이하전직 | 품관촌민 | |
---|---|---|---|---|---|
찬성 | 9.5 | 39.7 | 79.1 | 58.7 | 57.1 |
반대 | 90.5 | 60.3 | 20.9 | 41.3 | 42.9 |
품관촌민의 수효가 상대적으로 많아서
kable(format(vote.class.2, big.mark = ","), align = rep("r", 2), caption = "품관촌민")
관료 | 품관촌민 | |
---|---|---|
찬성 | 915 | 97,742 |
반대 | 845 | 73,304 |
소계를 교차표의 주변에 계산
kable(format(vote.class.2.am, big.mark = ","), caption = "관료와 품관촌민(소계)", align = rep("r", 3))
관료 | 품관촌민 | 계 | |
---|---|---|---|
찬성 | 915 | 97,742 | 98,657 |
반대 | 845 | 73,304 | 74,149 |
계 | 1,760 | 171,046 | 172,806 |
백분율을 계산하여 주변에 집계.
kable(format(prop.table(vote.class.2, margin = 2)*100, digits = 3, nsmall = 1), caption = "관료와 품관촌민(%)", align = rep("r", 3))
관료 | 품관촌민 | |
---|---|---|
찬성 | 52.0 | 57.1 |
반대 | 48.0 | 42.9 |
# par(family = "NanumGothic")
par(mfrow = c(1, 2))
pie(vote.class.2[, 1], labels = c("찬성", "반대"), col = rainbow.2)
title(main = "관료의 찬반")
text(x = 0, y = c(0.4, -0.4), labels = vote.class.2[, 1])
pie(vote.class.2[, 2], labels = c("찬성", "반대"), col = rainbow.2)
title(main = "품관촌민의 찬반")
text(x = 0, y = c(0.4, -0.4), labels = format(vote.class.2[, 2], big.mark = ","))
# dev.copy(png, "../pics/sejong_bureaus_commons_pie.png", width = 960, height = 480)
# dev.off()
par(mfrow = c(1, 1))
vote.class.2.df <- as.data.frame(vote.class.2)
v.names.class.kr <- c("찬반", "계급", "집계")
kable(format(vote.class.2.df, big.mark = ","), align = c('c', 'c', 'r'), col.names = v.names.class.kr, caption = "관료와 품관촌민")
찬반 | 계급 | 집계 |
---|---|---|
찬성 | 관료 | 915 |
반대 | 관료 | 845 |
찬성 | 품관촌민 | 97,742 |
반대 | 품관촌민 | 73,304 |
vote.bureaus.df <- subset(vote.class.2.df, vote.class.2.df$class.2 == "관료", select = c("vote", "Freq"))
kable(format(vote.bureaus.df, big.mark = ","), align = 'r', col.names = v.names.class.kr[-2], caption = "관료의 찬반")
찬반 | 집계 |
---|---|
찬성 | 915 |
반대 | 845 |
vote.commons.df <- subset(vote.class.2.df, vote.class.2.df$class.2 == "품관촌민", select = c("vote", "Freq"))
kable(format(vote.commons.df, big.mark = ","), align = 'r', row.names = FALSE, col.names = v.names.class.kr[-2], caption = "품관촌민의 찬반")
찬반 | 집계 |
---|---|
찬성 | 97,742 |
반대 | 73,304 |
pie.bureaus <- pie.gg(vote.bureaus.df, ggtitle = "관료의 찬반", font.family = "")
pie.commons <- pie.gg(vote.commons.df, ggtitle = "품관촌민의 찬반", font.family = "")
pies.grid <- grid.arrange(pie.bureaus, pie.commons, ncol = 2, top = "")
pies.grid
## TableGrob (2 x 2) "arrange": 3 grobs
## z cells name grob
## 1 1 (2-2,1-1) arrange gtable[layout]
## 2 2 (2-2,2-2) arrange gtable[layout]
## 3 3 (1-1,1-2) arrange text[GRID.text.870]
# ggsave("../pics/sejong_bureaus_commons_pie_ggplot.png", pies.grid, width = 8, height = 4, dpi = 72)
kable(vote.region.bureaus, caption = "관료들의 지역별 찬반")
서울 | 경기 | 평안 | 황해 | 충청 | 강원 | 함길 | 경상 | 전라 | |
---|---|---|---|---|---|---|---|---|---|
찬성 | 723 | 29 | 6 | 17 | 35 | 5 | 3 | 55 | 42 |
반대 | 704 | 5 | 36 | 17 | 28 | 10 | 15 | 16 | 14 |
kable(format(prop.table(vote.region.bureaus, margin = 2)*100, digits = 3, nsmall = 1), align = rep("r", 9), caption = "관료들의 지역별 찬반(%)")
서울 | 경기 | 평안 | 황해 | 충청 | 강원 | 함길 | 경상 | 전라 | |
---|---|---|---|---|---|---|---|---|---|
찬성 | 50.7 | 85.3 | 14.3 | 50.0 | 55.6 | 33.3 | 16.7 | 77.5 | 75.0 |
반대 | 49.3 | 14.7 | 85.7 | 50.0 | 44.4 | 66.7 | 83.3 | 22.5 | 25.0 |
kable(format(vote.region.commons, big.mark = ","), align = rep("r", 9), caption = "품관촌민들의 지역별 찬반")
유후사 | 경기 | 평안 | 황해 | 충청 | 강원 | 함길 | 경상 | 전라 | |
---|---|---|---|---|---|---|---|---|---|
찬성 | 1,123 | 17,076 | 1,326 | 4,454 | 6,982 | 939 | 75 | 36,262 | 29,505 |
반대 | 71 | 236 | 28,474 | 15,601 | 14,013 | 6,888 | 7,387 | 377 | 257 |
kable(format(prop.table(vote.region.commons, margin = 2)*100, digits = 1, nsmall = 1), align = rep("r", 9), caption = "품관촌민들의 지역별 찬반(%)")
유후사 | 경기 | 평안 | 황해 | 충청 | 강원 | 함길 | 경상 | 전라 | |
---|---|---|---|---|---|---|---|---|---|
찬성 | 94.1 | 98.6 | 4.4 | 22.2 | 33.3 | 12.0 | 1.0 | 99.0 | 99.1 |
반대 | 5.9 | 1.4 | 95.6 | 77.8 | 66.7 | 88.0 | 99.0 | 1.0 | 0.9 |
kable(vote.seoul.class, caption = "서울의 찬반")
대신 등 | 수령 | 3품이하현직 | |
---|---|---|---|
찬성 | 21 | 259 | 443 |
반대 | 194 | 393 | 117 |
kable(format(prop.table(vote.seoul.class, margin = 2)*100, digits = 1, nsmall = 1), align = rep("r", 3), caption = "서울의 찬반(%)")
대신 등 | 수령 | 3품이하현직 | |
---|---|---|---|
찬성 | 9.8 | 39.7 | 79.1 |
반대 | 90.2 | 60.3 | 20.9 |
서울의 계급별 찬반을 barplot
으로 그려봄. text()
의 좌표는 locator()
로 찾아냄.
# par(family = "NanumGothic")
barplot(vote.seoul.class, col = rainbow.2)
title(main = "서울의 찬반")
text(x = c(0.7, 1.9, 1.9, 3.1, 3.1), y = c(120, 450, 135, 500, 220), labels = c("194","393", "259", "117", "443"))
legend("topleft", inset = 0.05, fill = rainbow.2, legend = c("찬성", "반대"))
# dev.copy(png, "../pics/sejong_seoul_barplot.png", width = 480, height = 360)
# dev.off()
vote.seoul.df <- as.data.frame(vote.seoul.class)
x.stack <- vote.seoul.df[, 2]
# y.stack <- unlist(tapply(vote.seoul.df$Freq, vote.seoul.df$class, function(x){cumsum(x) + c(0, cumsum(head(x, -1)))}))
y.stack <- unlist(tapply(vote.seoul.df$Freq, vote.seoul.df$class, cumsum))
b1.seoul <- ggplot(vote.seoul.df, aes(x = x.stack, y = Freq, fill = vote)) +
geom_bar(stat = "identity", position = "stack")
b1.seoul
b2.seoul <- b1.seoul +
theme_bw() +
# theme_bw(base_family = "NanumGothic") +
# theme.kr +
scale_x_discrete(name = "계급") +
scale_y_continuous(name = "집계", breaks = vote.seoul.df$Freq, labels = vote.seoul.df$Freq) +
scale_fill_manual(name = "찬반", values = rainbow(2)[2:1])
b2.seoul
b3.seoul <- b2.seoul +
# geom_text(aes(y = y.stack/2), label = vote.seoul.df$Freq)
geom_text(aes(y = y.stack/2), label = vote.seoul.df$Freq, position = position_stack())
b3.seoul
# ggsave("../pics/sejong_seoul_barplot_stack_ggplot.png", b3.seoul, width = 6, height = 4.5, dpi = 72)
b1.seoul.dodge <- ggplot(vote.seoul.df, aes(x = x.stack, y = Freq, fill = vote)) +
geom_bar(stat = "identity", position = "dodge")
b1.seoul.dodge
b2.seoul.dodge <- b1.seoul.dodge +
theme_bw() +
# theme_bw(base_family = "NanumGothic") +
# theme.kr +
scale_x_discrete(name = "계급") +
scale_y_continuous(name = "집계", breaks = vote.seoul.df$Freq, labels = vote.seoul.df$Freq) +
scale_fill_manual(name = "찬반", values = rainbow(2)[2:1])
b2.seoul.dodge
b3.seoul.dodge <- b2.seoul.dodge +
geom_text(aes(y = vote.seoul.df$Freq/2), label = vote.seoul.df$Freq, position = position_dodge(width = 0.9)) +
ggtitle("서울의 찬반")
b3.seoul.dodge
# ggsave("../pics/sejong_seoul_barplot_dodge_ggplot.png", b3.seoul.dodge, width = 6, height = 4.5, dpi = 72)
y.fill <- unlist(tapply(vote.seoul.df$Freq, x.stack, function(x){cumsum(x)/sum(x)}))
b1.seoul.fill <- ggplot(vote.seoul.df, aes(x = x.stack, y = Freq, fill = vote)) +
geom_bar(stat = "identity", position = "fill")
b1.seoul.fill
b2.seoul.fill <- b1.seoul.fill +
theme_bw() +
# theme_bw(base_family = "NanumGothic") +
# theme.kr +
scale_x_discrete(name = "계급") +
scale_y_continuous(name = "집계", breaks = vote.seoul.df$Freq, labels = vote.seoul.df$Freq) +
scale_fill_manual(name = "찬반", values = rainbow(2)[2:1])
b2.seoul.fill
b3.seoul.fill <- b2.seoul.fill +
geom_text(aes(y = y.fill/2), label = vote.seoul.df$Freq, position = position_stack()) +
ggtitle("서울의 찬반")
b3.seoul.fill
# ggsave("../pics/sejong_seoul_barplot_fill_ggplot.png", b3.seoul.fill, width = 6, height = 4.5, dpi = 72)
barplot.gg.stack <- function(df, base_family = "", ggtitle = "", xlab = ""){
x <- df[, 2]
y <- unlist(tapply(df$Freq, x, cumsum))
b1 <- ggplot(df, aes(x = x, y = Freq, fill = vote)) +
geom_bar(stat = "identity", position = "stack")
b2 <- b1 +
theme_bw(base_family = base_family) +
# theme.kr +
scale_x_discrete(name = xlab) +
scale_y_continuous(name = "집계", breaks = NULL) +
scale_fill_manual(name = "찬반", values = rainbow(2)[2:1], guide = guide_legend(reverse = TRUE))
b3 <- b2 +
geom_text(aes(y = y/2), label = format(df$Freq, big.mark = ","), position = position_stack()) +
ggtitle(ggtitle)
return(b3)
}
barplot.gg.dodge <- function(df, base_family = "", ggtitle = "", xlab = ""){
x <- df[, 2]
y <- unlist(tapply(df$Freq, x, cumsum))
b1 <- ggplot(df, aes(x = x, y = Freq, fill = vote)) +
geom_bar(stat = "identity", position = "dodge")
b2 <- b1 +
theme_bw(base_family = base_family) +
# theme.kr +
scale_x_discrete(name = xlab) +
scale_y_continuous(name = "집계", breaks = NULL) +
scale_fill_manual(name = "찬반", values = rainbow(2)[2:1])
b3 <- b2 +
geom_text(aes(y = df$Freq/2), label = format(df$Freq, big.mark = ","), position = position_dodge(width = 0.9)) +
ggtitle(ggtitle)
return(b3)
}
barplot.gg.fill <- function(df, base_family = "", ggtitle = "", xlab = ""){
x <- df[, 2]
y <- unlist(tapply(df$Freq, x, function(x){cumsum(x)/sum(x)}))
b1 <- ggplot(df, aes(x = x, y = Freq, fill = vote)) +
geom_bar(stat = "identity", position = "fill")
b2 <- b1 +
theme_bw(base_family = base_family) +
# theme.kr +
scale_x_discrete(name = xlab) +
scale_y_continuous(name = "집계", breaks = NULL) +
scale_fill_manual(name = "찬반", values = rainbow(2)[2:1], guide = guide_legend(reverse = TRUE))
b3 <- b2 +
geom_text(aes(y = y/2), label = format(df$Freq, big.mark = ","), position = position_stack()) +
ggtitle(ggtitle)
return(b3)
}
barplot.gg <- function(x, position, base_family = "", ggtitle = "", xlab = ""){
switch(position,
stack = barplot.gg.stack(x, base_family = base_family, ggtitle = ggtitle, xlab = xlab),
dodge = barplot.gg.dodge(x, base_family = base_family, ggtitle = ggtitle, xlab = xlab),
fill = barplot.gg.fill(x, base_family = base_family, ggtitle = ggtitle, xlab = xlab))
}
(bar_seoul_stack <- barplot.gg(vote.seoul.df, position = "stack", base_family = "", ggtitle = "서울의 찬반", xlab = "계급"))
# ggsave("../pics/sejong_seoul_barplot_stack_ggplotv2.png", bar_seoul_stack, width = 6, height = 4.5, dpi = 72)
(bar_seoul_dodge <- barplot.gg(vote.seoul.df, position = "dodge", base_family = "", ggtitle = "서울의 찬반", xlab = "계급"))
# ggsave("../pics/sejong_seoul_barplot_dodge_ggplotv2.png", bar_seoul_dodge, width = 6, height = 4.5, dpi = 72)
(bar_seoul_fill <- barplot.gg(vote.seoul.df, position = "fill", base_family = "", ggtitle = "서울의 찬반", xlab = "계급"))
# ggsave("../pics/sejong_seoul_barplot_fill_ggplotv2.png", bar_seoul_fill, width = 6, height = 4.5, dpi = 72)
dump(c("barplot.gg","barplot.gg.stack", "barplot.gg.dodge", "barplot.gg.fill"), file = "./barplot.gg.R")
mosaicplot()
# par(family = "NanumGothic")
mosaicplot(t(vote.seoul.class), col = rainbow.2, main = "서울의 찬반", xlab = "계급" , ylab = "찬반")
# dev.copy(png, "../pics/sejong_seoul_mosaic.png", width = 480, height = 360)
# dev.off()
kable(vote.region.bureaus[, -1], caption = "지역별 관료들의 찬반(서울 제외)")
경기 | 평안 | 황해 | 충청 | 강원 | 함길 | 경상 | 전라 | |
---|---|---|---|---|---|---|---|---|
찬성 | 29 | 6 | 17 | 35 | 5 | 3 | 55 | 42 |
반대 | 5 | 36 | 17 | 28 | 10 | 15 | 16 | 14 |
kable(format(prop.table(vote.region.bureaus[, -1], margin = 2)*100, digits = 1, nsmall = 1), align = "r", caption = "지역별 관료들의 찬반(서울 제외, %)")
경기 | 평안 | 황해 | 충청 | 강원 | 함길 | 경상 | 전라 | |
---|---|---|---|---|---|---|---|---|
찬성 | 85.3 | 14.3 | 50.0 | 55.6 | 33.3 | 16.7 | 77.5 | 75.0 |
반대 | 14.7 | 85.7 | 50.0 | 44.4 | 66.7 | 83.3 | 22.5 | 25.0 |
# par(family = "NanumGothic")
barplot(vote.region.bureaus[, -1], beside = FALSE, col = rainbow.2)
title(main = "지방 관료들의 찬반")
legend("topleft", inset = 0.05, fill = rainbow.2, legend = c("찬성", "반대"))
# dev.copy(png, "../pics/sejong_bureaus.png", width = 720, height = 360)
# dev.off()
vote.region.bureaus.df <- as.data.frame(vote.region.bureaus[, -1])
barplot.gg(vote.region.bureaus.df, position = "stack", base_family = "", ggtitle = "지방 관료들의 찬반", xlab = "지역")
# ggsave("../pics/sejong_bureaus_barplot_stack_ggplot.png", width = 9, height = 4.5, dpi = 72)
mosaicplot()
의 활용# par(family = "NanumGothic")
mosaicplot(t(vote.region.bureaus[, -1]), col = rainbow.2, main = "", xlab = "지역", ylab = "찬반")
title(main = "지방 관료들의 찬반")
# dev.copy(png, "../pics/sejong_bureaus_mosaic.png", width = 720, height = 360)
# dev.off()
# par(family = "NanumGothic")
barplot(vote.region.commons, beside = FALSE, col = rainbow.2, axes = FALSE)
axis(2, at = seq(0, 30000, by = 5000), labels = c("0", "", "1만", "", "2만", "", "3만"), las = 1)
title(main = "품관촌민들의 지역별 찬반")
legend("topleft", inset = 0.05, fill = rainbow.2, legend = c("찬성", "반대"))
# dev.copy(png, "../pics/sejong_commons_barplot.png", width = 720, height = 360)
# dev.off()
vote.region.commons.df <- as.data.frame(vote.region.commons)
barplot.gg(vote.region.commons.df, position = "stack", base_family = "", ggtitle = "품관촌민의 찬반", xlab = "지역")
# ggsave("../pics/sejong_commons_barplot_stack_ggplot.png", width = 9, height = 4.5, dpi = 72)
mosaicplot()
의 활용# par(family = "NanumGothic")
mosaicplot(t(vote.region.commons), col = rainbow.2, main = "품관촌민의 지역별 찬반", xlab = "지역", ylab = "찬반")
# dev.copy(png, "../pics/sejong_commons_mosaic.png", width = 720, height = 360)
# dev.off()
관료들의 찬반과 품관촌민의 찬반이 다른 곳.
kable(format(vote.chung.class, big.mark = ","), caption = "충청도 사례", align = "r")
대신 등 | 3품이하전직 | 품관촌민 | |
---|---|---|---|
찬성 | 0 | 35 | 6,982 |
반대 | 2 | 26 | 14,013 |
kable(format(prop.table(vote.chung.class, margin = 2)*100, digits = 3, nsmall = 1), caption = "충청도 사례", align = "r")
대신 등 | 3품이하전직 | 품관촌민 | |
---|---|---|---|
찬성 | 0.0 | 57.4 | 33.3 |
반대 | 100.0 | 42.6 | 66.7 |
# par(mar = c(5.1, 4.1, 4.1, 8.1), xpd = TRUE, family = "NanumGothic")
par(mar = c(5.1, 4.1, 4.1, 8.1), xpd = TRUE)
barplot(prop.table(vote.chung.class, margin = 2), col = rainbow.2, ylim = c(0, 1.1), axes = FALSE)
axis(side = 2, at = c(0, 0.5, 1.0), labels = c("0", "50%", "100%"), las = 1)
title(main = "충청도의 계급별 찬반 비율")
legend("right", inset = -0.3, fill = rainbow.2, legend = c("찬성", "반대"))
text(x = c(0.6, 1.85, 1.85, 3.1, 3.1), y = c(0.5, 0.3, 0.8, 0.15, 0.65), labels = format(c(2, 35, 26, 6982, 14013), big.mark = ","))
# dev.copy(png, "../pics/sejong_chungcheong_barplot.png", width = 480, height = 360)
# dev.off()
vote.chung.class.df <- as.data.frame(vote.chung.class)
barplot.gg(vote.chung.class.df, position = "fill", base_family = "", ggtitle = "충청도의 찬반", xlab = "계급")
# ggsave("../pics/sejong_chungcheong_barplot_fill_ggplot.png", width = 6, height = 4.5, dpi = 72)
mosaicplot()
수효의 차이가 너무 커서 비교하기 어려움.
# par(family = "NanumGothic")
mosaicplot(t(vote.chung.class[, -1]), col = rainbow.2, main = "", xlab = "계급", ylab = "찬반")
title(main = "충청도의 찬반")
# dev.copy(png, "../pics/sejong_chungcheong_mosaic.png", width = 480, height = 360)
# dev.off()
save.image(file = "./sejong_ggplot_win.RData")