워드클라우드에 신기능 추가

일단 공통기능과 분기기능이 있는데 공통기능부터 보고 가자.

공통 기능

from argparse import FileType
import tkinter
from tkinter import filedialog

모듈

root = tkinter.Tk()
root.withdraw()
dir_path = filedialog.askopenfilename(parent=root,initialdir="/home/koreanraichu",title='Please select a directory',filetypes = (("*.png","*png"),("*.jpg","*jpg"),("*.gif","*gif")))
image = np.array(Image.open(dir_path)) 
# 마스킹할 이미지(흰 바탕에 검정색을 권장함)
font_path = '/usr/share/fonts/나눔손글씨 바른히피.ttf'
wordcloud = WordCloud(font_path = font_path,stopwords=STOPWORDS,
                      background_color="#ffffff",colormap="magma",width = 800, height=800,
                      mask=image)
# Font path: 글꼴 설정하실 경우 여기에 쓰세요
# background color: wordcloud 배경 설정할 때 여기서 하세요 
# colormap: 워드클라우드 글자색을 여기서 바꿔주세요(matplotlib colormap 치면 많이 나옵니다)

본 코드

마스킹 이미지를 디렉토리 창에서 소환할 수 있다.

분기 기능

워드클라우드 이미지를 저장하는 기능인데, Entrez랑 Text에 다르게 적용됐다. 일단 설명하기 간단한 Text부터 보고 가자.

Text to wordcloud

root = tkinter.Tk()
root.withdraw()
save_path = filedialog.asksaveasfilename(parent=root,initialdir="/home/koreanraichu",title='Please select a directory',filetypes = (("*.png","*png"),("*.jpg","*jpg"),("*.gif","*gif")))
image = np.array(Image.open(dir_path)) 
wordcloud = wordcloud.generate_from_text(text)
plot.figure(figsize=(15,15))
plot.axis('off')
plot.imshow(wordcloud)
plot.savefig(save_path)
plot.show()
print("wordcloud saved where {}".format(save_path))

저장할 때도 경로를 띄워주고, 이름도 저기서 입력하면 된다.

Entrez with wordcloud

term = input("Entrez database에서 가져오고 싶은 주제가 뭔가요? (Title로 검색) \n")
year = input("특별히 보고 싶은 년도가 있나요? (optional, 없으면 공백으로 입력해주세요) \n")
if year: 
    terms = "{}[TITLE] AND {}[YEAR]".format(term,year)
else: 
    terms = "{}[TITLE]".format(term)

Entrez module의 경우 제목(에 들어가는 단어)과 연도를 입력받는데, 이건 나중에 검색 옵션이 추가되면 elif 범벅이 될 수도 있다. 그때는 아마 text처럼 될 지도 모름… 사실 핸들에 있는 걸 가져올 수 있으면 좋은데, 그걸 못 가져온다. (원래 handle에 term=”Bioinformaticd[TITLE]” 이런 식으로 쓴다)

if year:
    save_dir = "{}/{}&{}.png".format(save_path,term,year)
else: 
    save_dir = "{}/{}.png".format(save_path,term)

저장 경로가 뜨는 기본 골자는 같지만, 위에서 연도와 용어를 입력받기 때문에 파일명이 그걸로 자동 생성된다. 즉, 파일 이름을 입력하는 게 아니라 말 그대로 저장 경로만 선택해주면 된다.