2017년 8월 25일 금요일

R-Studio로 Bar Graph 작성하기 (6): Bar의 폭과 공간 조정하기

여러분이 bar의 폭과 그 사이의 공간을 조정하고 싶다면, geom_bar()내에서 width를 설정하면 된다. 기본 값은 0.9이다. 예를 들어, 표준 넓이의 bars는 아래와 같다.

library(gcookbook) # For the data set
ggplot(pg_mean, aes(x=group, y=weight)) + geom_bar(stat="identity")

더 폭이 좁은 bar는 width의 값을 0.9보다 작게 한다.

ggplot(pg_mean, aes(x=group, y=weight)) + geom_bar(stat="identity", width=0.5)

폭이 더 넓은 bar는 width의 값을 0.9보다 크게 한다. (그러나, 최대 폭은 1이다)

ggplot(pg_mean, aes(x=group, y=weight)) + geom_bar(stat="identity", width=1)

이제는 Grouped bars에 대해 살펴보자. 이 경우, 기본값은 개별 그룹내에 bars 사이에 공간이 없는 것이다. 만약 그룹내의 bars 사이에 공간을 더하려면, width를 줄이고, position_dodge에 대한 값을 width보다 더 크게 설정해라.
폭이 좁은 bars를 갖는 grouped bar graph의 경우는 아래와 같다.

ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cultivar)) + 
  geom_bar(stat="identity", width=0.5, position="dodge")

만약 bar들 사이에 약간의 공간이 있는 것을 원한다면, 아래와 같이 하면 된다.  

ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cultivar)) + 
  geom_bar(stat="identity", width=0.5, position=position_dodge(0.7))


이 블로그에 실린 내용은 “Winston Chang (2013) R Graphics Cookbook”에 실린 내용을 기반으로 작성하였다.

R-Studio로 Bar Graph 작성하기 (5): 양(positive)의 값과 음(negative)의 값을 갖는 bars를 다르게 색상 설정하기

다음의 자료를 보자. 우리는 climate 데이터를 갖고 있고, 이 데이터에서 우리는 pos라는 변수를 만들었다. 이 변수는 값이 양(positive)의 값인지 음(negative)의 값인지를 보여준다.

library(gcookbook) # For the data set
csub <- subset(climate, Source=="Berkeley" & Year >= 1900) 
csub$pos <- csub$Anomaly10y >= 0
csub
 
 
Source
<chr>
Year
<dbl>
Anomaly1y
<dbl>
Anomaly5y
<dbl>
Anomaly10y
<dbl>
Unc10y
<dbl>
pos
<lgl>
101Berkeley1900NANA-0.1710.108FALSE
102Berkeley1901NANA-0.1620.109FALSE
103Berkeley1902NANA-0.1770.108FALSE
104Berkeley1903NANA-0.1990.104FALSE
105Berkeley1904NANA-0.2230.105FALSE
106Berkeley1905NANA-0.2410.107FALSE
107Berkeley1906NANA-0.2940.106FALSE
108Berkeley1907NANA-0.3120.105FALSE
109Berkeley1908NANA-0.3280.103FALSE
110Berkeley1909NANA-0.2810.101FALSE
우리는 이 데이터를 이용하여 bar graph를 작성하는데, pos 변수로 bar의 색상을 설정한다. 우리는 position=“identity” 옵션을 사용한다.


ggplot(csub, aes(x=Year, y=Anomaly10y, fill=pos)) + geom_bar(stat="identity", position="identity")



여기에는 몇몇 문제들이 존재한다. 우선, 색상은 우리가 원하는 것과 정반대이다. 둘째, 범례는 불필요하다. 우리는 색상을 scale_fill_manual()을 이용해 변화시키고, guide=FALSE를 이용하여 범례를 제거한다. 또한, 외곽선의 두께를 mm 단위로 설정하는 size와 colour를 이용하여 각각의 bar에 얇은 검은색 외곽선을 더할 것이다.

ggplot(csub, aes(x=Year, y=Anomaly10y, fill=pos)) +
geom_bar(stat="identity", position="identity", colour="black", size=0.25) + scale_fill_manual(values=c("#CCEEFF", "#FFDDDD"), guide=FALSE)


이 새 그래프는 당신의 마음에 드는가? 이것도 당신의 선택이다. 이도 마음에 들지 않는다면, 다시 바꿀 수 있다.
이 블로그에 실린 내용은 “Winston Chang (2013) R Graphics Cookbook”에 실린 내용을 기반으로 작성하였다.














R-Studio로 Bar Graph 작성하기 (4): Bar Graph에서 색상 사용하기

Bar Graph에서 적절한 색상은 fill 속성을 통해 정할수 있다.
여기에서, 우리는 uspopchange 데이터를 이용할 것이다. 이 데이터는 2000년 부터 2010년가지 미국 각 주의 인구 변화 자료를 담고 있다. 이중 우리는 인구가 가장 빨리 증가하는 상위 10개 주의 자료만 택할 것이다. 또한 우리는 주가 속한 지역(region)에 따라 bar의 색상을 정할 것이다.
우선, 우리는 상위 10개 주를 택할 것이다.
library(gcookbook) # For the data set
upc <- subset(uspopchange, rank(Change)>40) 
upc

 
State
<chr>
Abb
<chr>
Region
<fctr>
Change
<dbl>
3ArizonaAZWest24.6
6ColoradoCOWest16.9
10FloridaFLSouth17.6
11GeorgiaGASouth18.3
13IdahoIDWest21.1
29NevadaNVWest35.1
34North CarolinaNCSouth18.5
41South CarolinaSCSouth15.3
44TexasTXSouth20.6
45UtahUTWest23.8

이제 bar graph를 작성하는데, 지역에 따라 색상을 다르게 정할 것이다.
ggplot(upc, aes(x=Abb, y=Change, fill=Region)) + geom_bar(stat="identity")

물론 여기에서 사용된 색상은 별로 매력적이지 않다. 이 경우에 여러분은 scale_fill_brewer() 혹은 scale_fill_manual()을 사용하여 좀더 바람직한 색상을 선택할 수 있다. 여기에서는 scale_fill_manual()을 사용할 것이다. 더불어, 우리는 bar의 외곽선을 black으로 설정한다 (colour=“black”).

ggplot(upc, aes(x=reorder(Abb, Change), y=Change, fill=Region)) + 
  geom_bar(stat="identity", colour="black") + scale_fill_manual(values=c("#669933", "#FFCC66")) + xlab("State")

위의 그래프보다는 지금의 그래프의 색상이 조금 나아 보인다. 이런 방식으로 색상을 조정하여, 원하는 색을 사용할 수 있다.
이 블로그에 실린 내용은 “Winston Chang (2013) R Graphics Cookbook”에 실린 내용을 기반으로 작성하였다.

R-Studio로 Bar Graph 작성하기 (3): 개별 사건의 경우에 대한 Bar Graph 만들기

한 변수에 대해 변수 내에 여러가지 값들에 대한 경우의 수를 bar plot으로 표현할 수 있다. 이는 앞의 블로그에서 설명했던 경우와 다른 방식이다.
예를 들어서, 우리가 diamonds라는 데이터를 갖고 있는데, 이 데이터에는 cut이라는 변수가 있다. 이 cut이라는 변수는 5개의 카테고리(Fair, Good, Very Good, Premium, Ideal)를 갖고 있다.

library(ggplot2)
diamonds
carat
<dbl>
cut
<ord>
color
<ord>
clarity
<ord>
depth
<dbl>
table
<dbl>
price
<int>
x
<dbl>
y
<dbl>
z
<dbl>
0.23IdealESI261.555.03263.953.982.43
0.21PremiumESI159.861.03263.893.842.31
0.23GoodEVS156.965.03274.054.072.31
0.29PremiumIVS262.458.03344.204.232.63
0.31GoodJSI263.358.03354.344.352.75
0.24Very GoodJVVS262.857.03363.943.962.48
0.24Very GoodIVVS162.357.03363.953.982.47
0.26Very GoodHSI161.955.03374.074.112.53
0.22FairEVS265.161.03373.873.782.49
0.23Very GoodHVS159.461.03384.004.052.39
에를 들어 table()이라는 함수를 이용하여 cut이라는 변수에 대해 상태를 체크해보자.
table(diamonds$cut)

     Fair      Good Very Good   Premium     Ideal 
     1610      4906     12082     13791     21551 

지난 블로그에서 설명한 사례는 이 두개의 행(row)가 별개의 변수 (2개의 변수)로 입력되어 있는 경우였지만, 이번 블로그에서 설명하는 경우는 이 diamonds라는 데이터의 경우이다. 이 경우에는 간단히 ggplot() 함수에, geom_bar() 옵션을 사용하면 된다.

ggplot(diamonds, aes(x=cut)) + geom_bar()

이 예제에서, x축의 변수가 discrete라는 것이다. 만약 우리가 continuous 변수를 사용한다면, 우리는 histogram을 얻을 것이다. 여기에서는 carat이라는 변수를 사용해보자.  

ggplot(diamonds, aes(x=carat)) + geom_bar()


다음 블로그에서는 bar graph에서 bar의 색상을 조절하는 방법에 대해 논의해 보겠다.
이 블로그에 실린 내용은 “Winston Chang (2013) R Graphics Cookbook”에 실린 내용을 기반으로 작성하였다.