본문 바로가기

R프로그래밍,통계학

워드 클라우드 와 다양한 그래프

반응형

 

R프로그램으로 워드클라우드를 만드는 일반적인 방법으로 KoNLP 가 있는데

RHINO 라는 패키지로도 만들수가 있습니다. RHINO를 사용해 만들어보겠습니다.

RHINO가 좀 더 깔끔하게 나타내 주는거같습니다.

데이터는 고양시 소상공인 대상으로한 '코로나19 이후 매출에대한 방안'의 주관식 의견만 모은 데이터를 사용하였습니다.

Sol.txt
0.03MB
RHINO.zip
2.66MB

*java window 64를 꼭 설치해야 합니다.

*RHINO패키지가 잘 설치되지 않는다면 직접다운받아서 library에 넣어줍니다.

(.libPath() 명령어로 본인의 library 위치를 확인 할 수 있습니다.)

if(!require(devtools)) {install.packages("devtools");library(devtools)}
if(!require(RHINO)) {install_github("SukjaeChoi/RHINO");library(RHINO)}
#다운이 되지 않는다면 첨부파일에서 직접 RHINO를 다운받아서 라이브러리에 넣는다.


#java 윈도우 64설치함.
library(RHINO)
initRhino() # RHINO 시동 걸기

txt <- readLines("sample.txt") #분석하고 싶은 텍스트 파일 불러오기 
noun <- lapply(txt, getMorph, "noun")  #텍스트파일을 getMorph로 "noun" 옵션으로 명사로 분해한다. 
nounVec <- unlist(noun) 
nounMax <- matrix(nounVec) #메트릭스로
nounFrame <- as.data.frame(nounMax) #데이터프레임으로
nounFreq <- table(nounFrame) 
head(sort(nounFreq, decreasing = T), 20)

 

 

 

상위 20개 단어만 봅니다.

 

 

 

#색상 준비 및 그리기
install.packages("RColorBrewer") # Rtools 설치하라고 Warning 나오는데 패키지 설치는 일단 됌.
library(RColorBrewer)
install.packages("wordcloud") # Rtools 설치하라고 Warning 나오는데 패키지 설치는 일단 됌.
library(wordcloud)

pal <- brewer.pal(12,"Set3")

wordcloud(names(nounFreq), freq= nounFreq, scale = c(5,0.5), rot.per=0.25, min.freq = 2, random.order= F, random.color=T, colors= pal)

 

 

상위 20개 단어만으로 다시 해보았습니다.

 

 

"지역 지원금 필요"

"고양 페이"

"지역 화폐 지원

"소비 확대"

"세금 감면"

 

 

 

 

이번에는 파이차트와 막대그래프로도 그려보겠습니다.

 

 

library(RColorBrewer)
top <- head(sort(nounFreq, decreasing = T), 10)
pal <- brewer.pal(9,"Set3") # 색상선정
percent <- round(top/sum(top)*100, digits = 2) #백분율 ,소수점 둘째자리
label <- paste(names(top), "\n",percent,"%") #라벨로 만듬.
pie(top, main= "키워드", col=pal, labels= label) #라벨 부착

barplot(top)
pal <- brewer.pal(12,"Set3") # 색상선정
percent <- round(top/sum(top)*100, digits = 1) #백분율 , 소수점 둘째자리
barplot(top, main = "키워드", col= pal, las=2) #기울기, 결과는 벡터
text(x=bp,y=top-3.0, labels = paste(percent,"%"),col="black",cex=0.5)
text(x=bp,y=top+5.0, labels =paste("(",top,"건)"),col="black",cex=0.7)

 

 

 

제가 못그려서 그런지 저는 워드클라우드가 제일 예쁜거같네요..

ggplot으로 그리면 좀 더 나을거같은데 다음에 다시 해봐야겠습니다.

반응형