10.1 막대 그래프
먼저, 범주별 도수를 구하고 이를 막대 형태로 나타낸 막대 그래프 (Bar Chart)를 ggplot2
의 geom_bar()
로 그려보겠습니다.
10.1.1 데이터 세트
사용할 데이터는 MASS
패키지에 있는 Cars93
데이터 프레임에서 자동차 유형(Type), 제조국(Origin) 등의 범주형/요인(factor)형 변수를 사용하겠습니다.
library(tidyverse)
library(MASS)
str(Cars93)
10.1.2 막대 그래프 활용 방식
ggplot() 함수를 이용하여 막대 그래프를 그리는 방식에는 크게 두 가지 방식이 있습니다.
- x축의 변수(범주형 변수)만을 지정하여 y축에 빈도를 나타내는 방식 : (일변수 범주형 그래프)
- x축의 변수(범주형 변수)를 기준으로 y축에 다른 변수의 값(예, 합계)을 지정하여 그리는 방식 (Y축에 변수를 지정한 막대 그래프)
10.1.3 x축을 범주형 변수로 한 기본 막대 그래프
Cars93 데이터 세트에서 그동안 실습해 왔던 범주형 변수인 자동차 유형(Type
) 변수를 X축의 범주형 변수로 설정하여 막대 그래프를 그리는 경우가 해당됩니다.
aes(x, y)
함수의 x
변수로 Type
을 지정해 주면 됩니다. 이때 Y축을 지정해 주지 않아도 ggplot()
함수는 X축에 지정되어 있는 변수 값들의 빈도(count)를 y축에 자동으로 표시해 줍니다.
그런데 Y축에 빈도를 표시하기 위해 geom_bar()
함수 안에 stat = "count"
라는 모수가 기본 값으로 설정되어 있기 때문입니다. 그리고 이때 계산된 빈도수는 ..count..
라는 변수에 저장이 되게 됩니다. 즉, aes(y = ..count..)
를 기본 값으로 한다는 것입니다.3
아래 예제에서는 자동차 유형(Type
)별로 빈도수를 나타내는 막대 그래프는 다음과 같이 작성됩니다.
# 자동차 유형별 막대 그래프 :
ggplot(Cars93,
aes(x = Type,
y = ..count..)) + # y = ..count..는 생략가능
geom_bar(stat = "count") + # stat = "count"는 생략가능
ggtitle("차량 유형별 기본 막대 그래프")
10.1.3.1 수평 막대 그래프
coord_flip()
함수를 하나의 레이어로 추가하여 막대 그래프를 수평으로 그릴 수 있습니다.
# 자동차 유형별 막대 그래프 :
ggplot(Cars93,
aes(x = Type,
y = ..count..)) +
geom_bar(stat = "count") +
coord_flip() +
ggtitle("수평 막대 그래프")
10.1.3.2 막대 그래프의 색 지정
aes()
함수 안에 막대의 색과 관련한 모수를 입력하여 막대의 색을 지정할 수 있습니다.
예를 들어, fill =
모수는 막대의 채우기 색을 지정하고, colour =
는 막대의 테두리 색을, 그리고 alpha =
는 채우기 색의 상대적 투명도를 지정해 줍니다. 다음의 예를 통해 확인해 보겠습니다.
# aes() 함수를 이용한 색 지정
ggplot(Cars93,
aes(x = Type)) +
geom_bar() +
aes(colour = Type) + # 테두리 색 지정
aes(fill = Type) + # 채우기 색 지정
aes(alpha = ..count..) + # 채우기 색의 투명도
ggtitle("차량 유형별 막대 그래프 : aes()함수를 이용한 색 지정")
10.1.4 상대 비율 막대 그래프
막대 그래프의 Y축을 상대 비율로 표시할 수 있습니다. 이를 위해서는 aes()
함수 내에 y = ..prop..
모수와 group = 1
을 추가해 줍니다.
또한, y축을 % 형식으로 출력하기 위해 scale_y_continuous(labels = scales::percent_format())
함수를 추가해 주었습니다.
# 자동차 유형별 막대 그래프 :
ggplot(Cars93,
aes(x = Type,
y = ..prop..,
group = 1)) + # y = ..count..는 생략가능
geom_bar() + # stat = "count"는 생략가능
ggtitle("상대 비율 막대 그래프") +
scale_y_continuous(labels = scales::percent_format())
10.1.5 Y축에 변수를 지정한 막대 그래프
자동차 유형(Type
) 별로 고속도로 연비(MPG.highway
)를 막대 그래프로 그려 보겠습니다.
aes()
함수의 X축으로 범주형 변수인 Type
변수를 그리고 Y축의 변수로는 연속형 변수인 MPG.highway
변수를 지정해 줍니다.
그런데, 이때 막대 그래프를 그리기 위해서는 geom_bar()
함수를 이용할 수도 있고, geom_col()
함수를 사용할 수도 있습니다.
10.1.5.1 geom_bar()
함수의 이용
먼저 geom_bar()
함수를 이용하여 막대 그래프를 그려 보겠습니다.
geom_bar()
함수 안에 반드시 stat = "identity"
를 입력해 주어야 합니다. 이는 X축의 Type
변수의 데이터를 기준으로 Y축에 있는 MPG.highway
의 높이(합계)가 결정된다는 것을 지정해 주는 것입니다.
ggplot(Cars93,
aes(x = Type,
y = MPG.highway)) +
geom_bar(stat = "identity")
10.1.5.2 geom_col()
함수의 이용
이제는 geom_col()
함수를 이용하여 막대 그래프를 그려 보겠습니다. geom_col()
함수의 경우에는 stat = “identity”를 기본값으로 하고 있기 때문에 이를 굳이 입력해 줄 필요가 없습니다.
ggplot(Cars93,
aes(x = Type,
y = MPG.highway)) +
geom_col()
geom_bar() 함수는 x축의 각 수준별 도수를 계산하기 위하여 stat_count() 함수를 이용합니다. 반면에 geom_col() 함수는 x축의 각 수준별 값을 플롯하기 위해 stat_identity() 함수를 사용합니다.
지금까지 X축을 차량의 유형(Type
)으로 하고, Y축을 고속도로 연비(MPG.highway
)로 하여 막대 그래프를 그려 보았습니다. 그러면 실제로 막대 그래프의 높이는 무엇을 나타내는 것일까요? Y축은 각 Type
의 수준별 MPG.highway
의 합계를 나타내고 있는 것입니다.
즉, Y축은 다음과 같이 구해지는 값을 나타내고 있습니다.
<- Cars93 %>%
Cars93_sum group_by(Type) %>%
summarise(sum_MPG.h = sum(MPG.highway))
Cars93_sum
## # A tibble: 6 x 2
## Type sum_MPG.h
## <fct> <int>
## 1 Compact 478
## 2 Large 294
## 3 Midsize 588
## 4 Small 745
## 5 Sporty 403
## 6 Van 197
그러면 Y축에 합계가 아닌 평균을 나타내고 싶을 때는 어떻게 하면 될까요? 다음에서 살펴 보도록 하겠습니다.
10.1.5.3 Y축에 평균을 표시하기
앞에서 살펴본 자동차 유형(Type
)별로 고속도로 연비(MPG.highway
)의 합계를 구하는 방법을 그대로 이용하여, 평균 고속도로 연비(mean_MPG.h
)를 다음과 같이 구하여, Cars93_sub
라는 데이터 프레임을 생성합니다.
그런 다음, aes()
함수를 이용하여, X축에 Type
을 그리고 Y축에 mean_MPG.h
를 지정해 주고 geom_col()
함수로 막대 그래프를 그려 주면 됩니다.
## Type 별로 MPG.highway의 평균을 구하여 데이터 프레임을 생성합니다.
<- Cars93 %>%
Cars93_sub group_by(Type) %>%
summarise(mean_MPG.h = mean(MPG.highway))
%>%
Cars93_sub ggplot() +
aes(x = Type) +
aes(y = mean_MPG.h) +
geom_col() +
ggtitle("차량 유형별 평균 고속도로 연비")
10.1.6 막대 그래프에 데이터 레이블 달기
막대 그래프의 각 막대 마다 데이터 레이블을 표시할 수 있습니다. 이를 위해서는 geom_text()
함수를 이용합니다. 앞에서 작성한 그림 10.1 에 데이터 레이블을 추가해 보겠습니다.
데이터 레이블은 geom_text()
함수를 이용하여 표시할 수 있는데, 다음의 모두를 이용하게 됩니다.
stat
:geom_bar()
함수는 기본적인 통계 변환 함수(stat =
)은count
를 사용합니다.aes(label =
: 그리고 Y축에 표시되는 값은..count..
변수에 저장되어 있습니다.aes(vjust =
:데이터 레이블이 표시될 위치를 지정해 줍니다.
즉, geom_text(stat = "count", aes(label = ..count..), vjust = -0.5)
를 추가해 줍니다.
# 자동차 유형별 막대 그래프 :
ggplot(Cars93,
aes(x = Type)) + # y = ..count..는 생략가능
geom_bar() + # stat = "count"는 생략가능
ggtitle("기본 막대 그래프 : 데이터 레이블 달기") +
geom_text(stat = "count",
aes(label = ..count..), vjust = -0.5)
상대 비율 막대 그래프인 그림 10.4에 대해서도 데이터 레이블을 표시해 보겠습니다.
geom_text()
함수 내의 aes(label = )
에 상대 비율을 나타내는 변수 ..prop..
를 입력해 줍니다. 그런데 이 때 ..prop..
의 값을 소숫점 이하 1자리로 표시하고 끝에 %
기호를 추가 시키기 위해 round()
함수와 paste0()
함수를 이용하였습니다.
# 자동차 유형별 막대 그래프 :
ggplot(Cars93,
aes(x = Type,
y = ..prop..,
group = 1)) + # y = ..count..는 생략가능
geom_bar() + # stat = "count"는 생략가능
ggtitle("상대 비율 막대 그래프 : 데이터 레이블 표시하기") +
scale_y_continuous(labels = scales::percent_format()) +
geom_text(stat = "count",
aes(label = paste0(round(..prop.., 3)*100, " %")),
vjust = 1.5)
10.1.7 그룹별 막대 그래프
다음의 예는 차종(Type
)별, 제조국(Origin
) 별 자동차 수를 가지고 막대 그래프를 그려보도록 하겠습니다.
이 경우 히스토그램에서 그룹별 히스토그램에서 살펴본 바와 같이 aes()
함수에 모수를 지정하는 방법과, facet_grid()
함수를 이용하는 방법 그리고 facet_wrap()
함수를 이용하는 방법으로 살펴 볼 수 있습니다.
10.1.7.1 aes()
함수의 모수 이용
이 경우도 그룹별 히스토그램에서 살펴본 바와 같이 fill
, group
, colour
등의 모수를 이용할 수 있습니다. 여기서는 fill
을 예로 설명하겠습니다.
aes()
함수 내에 막대의 채우기 색을 특정 색이 아닌 ‘fill = Origin
’ 로 지정해 주면 각 막대의 색을 원산지별로 구분해서 표시해 줍니다.- 또한
geom_bar()
함수 내에position = "dodge"
를 입력해 주면, 막대가 원산지별로 수평으로 분리되어 표시가 됩니다. colour =
모수의 경우 테두리 색을 지정하는데 있어서 이 모수를aes()
함수내에 입력할 수도 있고,geom_bar()
함수 안에도 입력할 수 있습니다. 그런데colour = Origin
은aes()
함수 내에만 입력할 수 있습니다.
geom_bar()
함수 안에 position = "dodge"
를 입력한 수평 막대 그래프는 다음과 같습니다.
# 차종별 원산지별 도수 분포도 : 이변량 막대 그래프
ggplot(Cars93,
aes(x = Type,
fill = Origin)) + # 막대 채우기 색을 Origin 별로 지정합니다.
geom_bar(position = "dodge", # 막대를 Origin 별로 수평 배열합니다.(기본 값은 "stack")
colour = "black") + # 막대의 테두리 선을 지정합니다.
scale_fill_brewer(palette = 1) + # 막대의 컬러 팔레트를 1로 지정합니다.
ggtitle("차종별 원산지별 막대 그래프 : 이변량 막대 그래프")
그룹별 막대 그래프인 그림 10.10에 데이터 레이블을 표시해 보겠습니다.
여기서도 geom_text()
함수를 이용하게 되는데, 다음의 예에서 보듯이, position = position_dodge()
모수를 입력해 줍니다.
# 차종별 원산지별 도수 분포도 : 이변량 막대 그래프
ggplot(Cars93,
aes(x = Type,
fill = Origin)) + # 막대 채우기 색을 Origin 별로 지정합니다.
geom_bar(position = "dodge", # 막대를 Origin 별로 수평 배열합니다.(기본 값은 "stack")
colour = "black") + # 막대의 테두리 선을 지정합니다.
scale_fill_brewer(palette = 1) + # 막대의 컬러 팔레트를 1로 지정합니다.
ggtitle("차종별 원산지별 막대 그래프 : 이변량 막대 그래프") +
geom_text(stat = "count",
aes(label = ..count..),
position = position_dodge(width = 0.9),
vjust = 1.5)
geom_bar()
함수 안에 position = "stack"
은 기본 값으로 특별히 입력하지 않으면 누적 막대 그래프가 작성됩니다.
# 차종별 원산지별 도수 분포도 : 이변량 누적 막대 그래프
ggplot(Cars93,
aes(x = Type,
fill = Origin)) +
geom_bar( # position = "stack", # 기본값은 "stack", 생략 가능합니다.
colour = "black") +
scale_fill_brewer(palette = 2) +
ggtitle("차종별 원산지별 도수 분포도 : 이변량 누적 막대 그래프")
그룹별 막대 그래프인 그림 10.12에 데이터 레이블을 표시해 보겠습니다.
여기서도 geom_text()
함수를 이용하게 되는데, 다음의 예에서 보듯이, position = position_stack()
모수를 입력해 줍니다.
# 차종별 원산지별 도수 분포도 : 이변량 누적 막대 그래프
ggplot(Cars93,
aes(x = Type,
fill = Origin)) +
geom_bar(color = "black") +
scale_fill_brewer(palette = 2) +
ggtitle("이변량 누적 막대 그래프 : 데이터 레이블 표시") +
geom_text(stat = "count",
aes(label = ..count..),
position = position_stack(),
vjust = 1.5)
10.1.7.2 facet_grid()
함수 이용
자동차 유형별(Type
)로 앞의 히스토그램을 비교하기 위해서는 facet_grid(Type ~ .)
또는 facet_grid(vars(Type))
으로 지정하는 방법과 facet_grid( . ~ Type)
으로 지정하는 방법을 각각 살펴 보겠습니다.
# 차종별 원산지별 도수 분포도 : facet_grid()
ggplot(Cars93,
aes(x = Type,
fill = Origin)) +
geom_bar(position = "identity",
colour = "black") +
scale_fill_brewer(palette = 2) +
ggtitle("차종별 원산지별 도수 분포도 : facet_grid()") +
facet_grid(Origin ~ Type) # Origin 별로 별도의 막대 그래프를 작성합니다.
10.1.7.3 facet_wrap()
함수 이용
한편, facet_wrap(
) 함수를 이용하여 각 자동차 유형(Type
)별 히스트로그램을 작성할 수도 있습니다. facet_wrap(Origin ~ Type, ncol = 2)
를 추가해 보겠습니다.
# 차종별 원산지별 도수 분포도 : facet_wrap()
ggplot(Cars93,
aes(x = Type,
fill = Origin)) +
geom_bar(position = "identity",
colour = "black") +
scale_fill_brewer(palette = 2) +
ggtitle("차종별 원산지별 도수 분포도 : facet_wrap()") +
facet_wrap(Origin ~ Type, ncol = 6)
10.1.8 Theme의 사용
히스토그램에서 Theme을 사용하였듯이, 막대 그래프에서도 Theme을 사용할 수 있습니다.
다음의 예는 앞서 작성한 [기본 막대 그래프]에 히스토그램에서 Theme으로 사용한 ggplot2::theme_classic() +
이하 부분을 복사해서 붙여 넣기한 것입니다.
# 기본 막대 그래프에 theme_classic() 적용
ggplot(Cars93, aes(x = Type)) +
geom_bar(fill="white",
colour="black") +
ggtitle("막대 그래프에 Theme 적용") +
::theme_classic() + # 그래프 테마 지정
ggplot2::theme(axis.title.x = element_text(size = 10,
ggplot2face = "italic",
color = "gray",
angle = 0,
vjust = 0.5),
axis.title.y = element_text(size = 10,
face = "bold.italic",
color = "gray",
angle = 0,
vjust = 0.5)) +
::scale_y_continuous(labels = scales::comma) ggplot2
- 참고 자료 : https://truman.tistory.com/156 (Theme 의 옵션 설정을 자세히 설명하고 있습니다.)
연습문제
1. Cars93
의 범주형 변수 확인하기
1-1. Cars93
데이터 세트에 있는 범주형 변수(factor)들을 확인하시오.
<- sapply(Cars93, is.factor) # Cars93 데이터 세트의 각 컬럼에 대하여 factor 형인지 확인
l # 각 컬럼이 factor 형이면 TRUE, 아니면 FALSE l
## Manufacturer Model Type Min.Price
## TRUE TRUE TRUE FALSE
## Price Max.Price MPG.city MPG.highway
## FALSE FALSE FALSE FALSE
## AirBags DriveTrain Cylinders EngineSize
## TRUE TRUE TRUE FALSE
## Horsepower RPM Rev.per.mile Man.trans.avail
## FALSE FALSE FALSE TRUE
## Fuel.tank.capacity Passengers Length Wheelbase
## FALSE FALSE FALSE FALSE
## Width Turn.circle Rear.seat.room Luggage.room
## FALSE FALSE FALSE FALSE
## Weight Origin Make
## FALSE TRUE TRUE
<- names(Cars93)[l] # Cars93 데이터 세트 중 factor 형인 컬럼의 이름 출력
n n
## [1] "Manufacturer" "Model" "Type" "AirBags"
## [5] "DriveTrain" "Cylinders" "Man.trans.avail" "Origin"
## [9] "Make"
<- Cars93[n] # Cars93 데이터 세트 중 factor 형 컬럼만 출력
Cars.fac str(Cars.fac)
## 'data.frame': 93 obs. of 9 variables:
## $ Manufacturer : Factor w/ 32 levels "Acura","Audi",..: 1 1 2 2 3 4 4 4 4 5 ...
## $ Model : Factor w/ 93 levels "100","190E","240",..: 49 56 9 1 6 24 54 74 73 35 ...
## $ Type : Factor w/ 6 levels "Compact","Large",..: 4 3 1 3 3 3 2 2 3 2 ...
## $ AirBags : Factor w/ 3 levels "Driver & Passenger",..: 3 1 2 1 2 2 2 2 2 2 ...
## $ DriveTrain : Factor w/ 3 levels "4WD","Front",..: 2 2 2 2 3 2 2 3 2 2 ...
## $ Cylinders : Factor w/ 6 levels "3","4","5","6",..: 2 4 4 4 2 2 4 4 4 5 ...
## $ Man.trans.avail: Factor w/ 2 levels "No","Yes": 2 2 2 2 2 1 1 1 1 1 ...
## $ Origin : Factor w/ 2 levels "USA","non-USA": 2 2 2 2 2 1 1 1 1 1 ...
## $ Make : Factor w/ 93 levels "Acura Integra",..: 1 2 4 3 5 6 7 9 8 10 ...
1-2. Cars93
데이터 세트에 있는 범주형 변수(factor)들 중 수준(levels)이 6 이하인 변수를 확인하시오.
## Cars.fac 데이터 세트의 각 컬럼별 수준의 갯수 확인
<- sapply(Cars.fac, nlevels)
nlvl nlvl
## Manufacturer Model Type AirBags DriveTrain
## 32 93 6 3 3
## Cylinders Man.trans.avail Origin Make
## 6 2 2 93
## 각 컬럼의 레블의 갯수가 6개 이하인 컬럼 선택
<- nlvl[nlvl <= 6]
Cars93_nlvl Cars93_nlvl
## Type AirBags DriveTrain Cylinders Man.trans.avail
## 6 3 3 6 2
## Origin
## 2
## Cars93 데이터 세트 중 레블의 갯수가 6이하인 factor 형 컬럼 선택
<- Cars93[Cars93_nlvl]
Cars93_fac Cars93_fac
## Max.Price Type Type.1 Max.Price.1 Model Model.1
## 1 18.8 Small Small 18.8 Integra Integra
## 2 38.7 Midsize Midsize 38.7 Legend Legend
## 3 32.3 Compact Compact 32.3 90 90
## 4 44.6 Midsize Midsize 44.6 100 100
## 5 36.2 Midsize Midsize 36.2 535i 535i
## 6 17.3 Midsize Midsize 17.3 Century Century
## 7 21.7 Large Large 21.7 LeSabre LeSabre
## 8 24.9 Large Large 24.9 Roadmaster Roadmaster
## 9 26.3 Midsize Midsize 26.3 Riviera Riviera
## 10 36.3 Large Large 36.3 DeVille DeVille
## 11 42.7 Midsize Midsize 42.7 Seville Seville
## 12 18.3 Compact Compact 18.3 Cavalier Cavalier
## 13 11.4 Compact Compact 11.4 Corsica Corsica
## 14 16.8 Sporty Sporty 16.8 Camaro Camaro
## 15 18.4 Midsize Midsize 18.4 Lumina Lumina
## 16 18.0 Van Van 18.0 Lumina_APV Lumina_APV
## 17 18.6 Van Van 18.6 Astro Astro
## 18 19.6 Large Large 19.6 Caprice Caprice
## 19 41.5 Sporty Sporty 41.5 Corvette Corvette
## 20 18.4 Large Large 18.4 Concorde Concorde
## 21 17.1 Compact Compact 17.1 LeBaron LeBaron
## 22 29.5 Large Large 29.5 Imperial Imperial
## 23 10.6 Small Small 10.6 Colt Colt
## 24 14.2 Small Small 14.2 Shadow Shadow
## 25 14.7 Compact Compact 14.7 Spirit Spirit
## 26 24.4 Van Van 24.4 Caravan Caravan
## 27 16.4 Midsize Midsize 16.4 Dynasty Dynasty
## 28 33.1 Sporty Sporty 33.1 Stealth Stealth
## 29 16.5 Small Small 16.5 Summit Summit
## 30 21.2 Large Large 21.2 Vision Vision
## 31 7.9 Small Small 7.9 Festiva Festiva
## 32 11.9 Small Small 11.9 Escort Escort
## 33 12.2 Compact Compact 12.2 Tempo Tempo
## 34 21.0 Sporty Sporty 21.0 Mustang Mustang
## 35 15.2 Sporty Sporty 15.2 Probe Probe
## 36 25.3 Van Van 25.3 Aerostar Aerostar
## 37 24.8 Midsize Midsize 24.8 Taurus Taurus
## 38 21.7 Large Large 21.7 Crown_Victoria Crown_Victoria
## 39 10.0 Small Small 10.0 Metro Metro
## 40 13.5 Sporty Sporty 13.5 Storm Storm
## 41 22.7 Sporty Sporty 22.7 Prelude Prelude
## 42 15.8 Small Small 15.8 Civic Civic
## 43 21.2 Compact Compact 21.2 Accord Accord
## 44 9.2 Small Small 9.2 Excel Excel
## 45 11.0 Small Small 11.0 Elantra Elantra
## 46 11.0 Sporty Sporty 11.0 Scoupe Scoupe
## 47 15.3 Midsize Midsize 15.3 Sonata Sonata
## 48 50.4 Midsize Midsize 50.4 Q45 Q45
## 49 28.4 Midsize Midsize 28.4 ES300 ES300
## 50 35.6 Midsize Midsize 35.6 SC300 SC300
## 51 35.3 Midsize Midsize 35.3 Continental Continental
## 52 37.8 Large Large 37.8 Town_Car Town_Car
## 53 9.1 Small Small 9.1 323 323
## 54 12.3 Small Small 12.3 Protege Protege
## 55 18.7 Compact Compact 18.7 626 626
## 56 21.7 Van Van 21.7 MPV MPV
## 57 32.5 Sporty Sporty 32.5 RX-7 RX-7
## 58 34.9 Compact Compact 34.9 190E 190E
## 59 80.0 Midsize Midsize 80.0 300E 300E
## 60 15.0 Sporty Sporty 15.0 Capri Capri
## 61 14.9 Midsize Midsize 14.9 Cougar Cougar
## 62 12.9 Small Small 12.9 Mirage Mirage
## 63 29.9 Midsize Midsize 29.9 Diamante Diamante
## 64 14.9 Small Small 14.9 Sentra Sentra
## 65 18.3 Compact Compact 18.3 Altima Altima
## 66 21.5 Van Van 21.5 Quest Quest
## 67 22.0 Midsize Midsize 22.0 Maxima Maxima
## 68 14.0 Compact Compact 14.0 Achieva Achieva
## 69 18.4 Midsize Midsize 18.4 Cutlass_Ciera Cutlass_Ciera
## 70 19.5 Van Van 19.5 Silhouette Silhouette
## 71 21.9 Large Large 21.9 Eighty-Eight Eighty-Eight
## 72 17.4 Sporty Sporty 17.4 Laser Laser
## 73 9.9 Small Small 9.9 LeMans LeMans
## 74 12.8 Compact Compact 12.8 Sunbird Sunbird
## 75 21.4 Sporty Sporty 21.4 Firebird Firebird
## 76 21.6 Midsize Midsize 21.6 Grand_Prix Grand_Prix
## 77 29.4 Large Large 29.4 Bonneville Bonneville
## 78 37.1 Compact Compact 37.1 900 900
## 79 12.9 Small Small 12.9 SL SL
## 80 9.5 Small Small 9.5 Justy Justy
## 81 11.3 Small Small 11.3 Loyale Loyale
## 82 22.7 Compact Compact 22.7 Legacy Legacy
## 83 10.0 Small Small 10.0 Swift Swift
## 84 11.8 Small Small 11.8 Tercel Tercel
## 85 22.6 Sporty Sporty 22.6 Celica Celica
## 86 21.2 Midsize Midsize 21.2 Camry Camry
## 87 26.6 Van Van 26.6 Previa Previa
## 88 9.5 Small Small 9.5 Fox Fox
## 89 22.7 Van Van 22.7 Eurovan Eurovan
## 90 22.4 Compact Compact 22.4 Passat Passat
## 91 23.7 Sporty Sporty 23.7 Corrado Corrado
## 92 23.5 Compact Compact 23.5 240 240
## 93 28.5 Midsize Midsize 28.5 850 850
2. Cars93
데이터 세트 중 일부 변수를 막대 그래프로 시각화 하려 합니다.
2-1. 범주형 변수 중 AirBags
에 대한 기본 막대 그래프를 작성하시오.
ggplot(Cars93, aes(x = AirBags)) +
geom_bar() +
ggtitle("기본 막대 그래프 : AirBags")
2-2. AirBags
의 기본 막대 그래프를 수평으로 작성하시오.
ggplot(Cars93, aes(x = AirBags)) +
geom_bar() +
coord_flip() +
ggtitle("기본 막대 그래프 : AirBags")
2-3. AirBags
의 기본 막대 그래프에서 각 막대의 채우기(fill =
) 색을 AirBags
변수로 지정하시오.
ggplot(Cars93, aes(x = AirBags,
fill = AirBags)) +
geom_bar() +
ggtitle("기본 막대 그래프 : AirBags")
2-4. AirBags
변수에 대한 상대 비율 막대 그래프를 작성하시오.
ggplot(Cars93, aes(x = AirBags,
y = ..prop..,
group = 1)) +
geom_bar() +
ggtitle("AirBags의 상대 비율 막대 그래프") +
scale_y_continuous(labels = scales::percent_format())
3. Man.trans.avail
변수에 대하여 Y축에 MPG.city
(도시주행 연비)의 평균을 막대 그래프로 작성하시오. 단, 각 막대의 채우기 색은 각 범주형 변수로 지정합니다.
<- Cars93 %>%
Cars93_Mta group_by(Man.trans.avail) %>%
summarise(mean_MPG.c = mean(MPG.city))
ggplot(Cars93_Mta, aes(x = Man.trans.avail,
y = mean_MPG.c,
fill = Man.trans.avail)) +
geom_col() +
ggtitle("Man.trans.avail 유형별 도시주행 연비")
4. AirBags
변수에 대하여 자동차 유형(Type
) 변수를 그룹으로 하여 그룹별 막대 그래프를 작성하시오. 단, aes()
함수를 이용하시오.
ggplot(Cars93,
aes(x = AirBags,
fill = Type)) + # 막대 채우기 색을 Origin 별로 지정합니다.
geom_bar(position = "dodge", # 막대를 Origin 별로 수평 배열합니다.(기본 값은 "stack")
colour = "black") + # 막대의 테두리 선을 지정합니다.
scale_fill_brewer(palette = 1) + # 막대의 컬러 팔레트를 1로 지정합니다.
ggtitle("AirBags별 자동차 유형 막대 그래프 : 이변량 막대 그래프")
stat_*()
함수의 사용을 참고하기 바랍니다.↩︎