library(dplyr)
library(ggplot2)
theme_set(theme_bw())1
這個code分別在同一張圖上畫上了了男生女的密度直條圖,轉成橫的就是金字塔圖
#
# histogram pyramids
#
#載入package
library(pacman)
p_load(tidyverse)
dta <- read.table("C:/Users/user/Dropbox/1062-Data_manage/0409/inclass/hs0.txt", header=T) %>%
mutate(female = factor(female, levels(female),
labels = c("Female", "Male")),
race = factor(race, levels(race),
labels = c("Black", "Asian", "Hispanic",
"White")),
ses = ordered(ses, levels = c("low", "middle",
"high"),
labels = c("Low", "Middle", "High"))) %>%
mutate(race = reorder(race, math, median))
str(dta)## 'data.frame': 200 obs. of 11 variables:
## $ id : int 70 121 86 141 172 113 50 11 84 48 ...
## $ female : Factor w/ 2 levels "Female","Male": 2 1 2 2 2 2 2 2 2 2 ...
## $ race : Factor w/ 4 levels "Black","Hispanic",..: 3 3 3 3 3 3 1 2 3 1 ...
## ..- attr(*, "scores")= num [1:4(1d)] 45 61 47 54
## .. ..- attr(*, "dimnames")=List of 1
## .. .. ..$ : chr "Black" "Asian" "Hispanic" "White"
## $ ses : Ord.factor w/ 3 levels "Low"<"Middle"<..: 1 2 3 3 2 2 2 2 2 2 ...
## $ schtyp : Factor w/ 2 levels "private","public": 2 2 2 2 2 2 2 2 2 2 ...
## $ prog : Factor w/ 3 levels "academic","general",..: 2 3 2 3 1 1 2 1 2 1 ...
## $ read : int 57 68 44 63 47 44 50 34 63 57 ...
## $ write : int 52 59 33 44 52 52 59 46 57 55 ...
## $ math : int 41 53 54 47 57 51 42 45 54 52 ...
## $ science: int 47 63 58 53 53 63 53 39 58 NA ...
## $ socst : int 57 61 31 56 61 61 61 36 51 51 ...
bw <- with(dta, IQR(math)/(length(math)^(1/3)))
ggplot() +
stat_bin(data = subset(dta, female=="Male"), binwidth = bw,
aes(math, color = "Male", fill = "Male", y = - ..density.. )) +
stat_bin(data = subset(dta, female == "Female"), binwidth = bw,
aes(math, color = "Female", fill = "Female", y = ..density.. )) +
scale_color_manual(values = c("black", "black"),
guide = guide_legend(title = NULL, direction = "horizontal",
title.position = "top", reverse = TRUE,
label.position = "bottom", label.hjust = .5, label.vjust = .5,
label.theme = element_text(angle = 90) ) ) +
scale_fill_manual(values = c("White", "gray80"),
guide = guide_legend(title = NULL, reverse = TRUE,
direction = "horizontal", title.position = "top",
label.position = "bottom", label.hjust = .5, label.vjust = .5,
label.theme = element_text(angle = 90))) +
scale_x_continuous(limits = c(30, 80), breaks=seq(30, 80, by = 5)) +
labs(x = "Mathematic score", y = "Density") +
coord_flip() +
theme_bw() +
theme(legend.position=c(.9, .85))2
dta <- read.table("C:/Users/user/Dropbox/1062-Data_manage/0409/inclass/hs0.txt", header=T)
#更改data的label
dta<- dta %>%
mutate(female = factor(female, levels(female),
labels = c("Female", "Male")),
race = factor(race, levels(race),
labels = c("Black", "Asian", "Hispanic", "White")),
ses = ordered(ses, levels = c("low", "middle", "high"),
labels = c("Low", "Middle", "High"))) %>%
mutate(race = reorder(race, math, median))
#從老師的網站抓下補充的Code
source("C:/Users/user/Documents/R/summarySE.R")
dta2<-summarySE(dta,measurevar = "math",groupvars = c("race","female","ses"))這邊畫的圖是依據不同的種族、性別、社經地位所畫的平均與error bar。跟課堂上的那種用預測所畫出來的圖是不一樣的,這個是真實資料的顯示。 如果沒有errorbar的點表示說在那個類別裡只有一筆資料。
#畫畫
dta2 %>% ggplot(aes(race,math,color=female)) +
geom_point(position = position_dodge(0.2),size=2) +
facet_grid(~ses) +
geom_errorbar(aes(ymin=math-se,ymax=math+se),width=0.2)3
dt3 <- read.table("C:/Users/user/Dropbox/1062-Data_manage/0423/inclass/kdt.csv", sep=",",header=T)
knitr::kable(dt3)| Test | Format | Accuracy | SE |
|---|---|---|---|
| KDT | Picture | 93.7 | 0.9 |
| KDT | Word | 96.4 | 0.7 |
| PPT | Picture | 90.6 | 1.0 |
| PPT | Word | 88.9 | 1.0 |
ggplot(dt3,aes(Test, Accuracy,fill=Format))+
coord_cartesian(ylim=c(85,100))+
geom_bar(stat="identity",position='dodge', colour="black")+
geom_errorbar(aes(ymin = Accuracy-SE , ymax= Accuracy+SE), width = .2,position=position_dodge(.9))+
scale_fill_manual(values=c("#CCCCCC","#555555"))