파이썬 프로그래밍 : Qiita 기사 태그에서 Treemap을 그려 보았습니다.
소개
이전 기사( Qiita 기사 태그에서 WordCloud를 그려 보았습니다. )에서는 Qiita 기사에 부여된 태그를 취득하여 WordCloud를 만들었습니다.
이번에는 보여주는 방법을 바꾸고 Treemap 을 그립니다.
궁극적으로 다음과 같은 물건을 만듭니다.
본고에서 소개하는 것
Qiita API v2 문서
TREEMAP - The Python Graph Gallery
본고에서 소개하지 않는 것
샘플 코드
Code량도 많지 않기 때문에, 전체의 Code를 소개.
포인트는 3개.
1. GET 요청을 실행할 때 액세스 토큰 지정
Qiita API v2 문서 에 다음의 기재가 있도록(듯이), 액세스 토큰을 취득해, Code에 묻는 것이 베터.
이용 제한
인증하는 상태에서는 사용자당 1시간에 1000회까지, 인증하지 않은 상태에서는 IP 주소당 1시간에 60회까지 요청을 수락합니다.
2. 이미지를 그릴 때 일본어 대응 글꼴 지정
Text properties and layout - Matplotlib 3.3.0 documentation 에 이하의 항이 있도록(듯이), 일본어 대응 폰트를 (적절하게 인스톨 해) 지정하는 것이 베터.
Default Font
The base default font is controlled by a set of rcParams. To set the font for mathematical expressions, use the rcParams beginning with mathtext (see mathtext).
3. 출현 빈도가 낮은 (화제성이나 중요성 등의 작은) 태그를 전처리로 제외
이전 기사( Qiita 기사 태그에서 WordCloud를 그려 보았습니다. )에서는 Qiita 기사에 부여된 태그의 출현 빈도를 감안하여 그렸습니다.
그 때문에, 극단적인 이야기, 출현 빈도가 1회의 태그도 묘화하게 되어, 묘화 결과가 엉망인 느낌이 되어 있었습니다.
(전체를 부감한다는 관점에서는 출현 빈도가 낮은 태그도 파악할 수 있어요.)
그래서 이번에는 출현 빈도가 낮은 태그를 자르고 깔끔한 그리기를 목표로합니다.
우선은 #200 Basic Treemap with python 의 샘플 코드를 참고로 간단하게 묘화.
analyzeQiita_TreeMap1import requests
import json
url = 'https://qiita.com/api/v2/items?per_page=100&page='
headers = {'Authorization': 'Bearer ${YOUR ACCESS-TOKEN}'}
tags = []
for i in range(5):
print('=====')
print('Downloading ... ' + url + str(i+1))
print('-----')
#response = requests.get(url + str(i+1))
response = requests.get(url + str(i+1), headers=headers)
for article in json.loads(response.text):
print(article['title'])
tags.extend([tag['name'].lower() for tag in article['tags']])
print('=====')
from collections import Counter
c = Counter(tags)
#print(c)
# 出現回数が多いものから順にTop10を列挙(重複なし)
tagSurface, tagCount = zip(*c.most_common(10))
print(tagSurface)
print(tagCount)
from pathlib import Path
import matplotlib.pyplot as plt
import squarify
result_dir_path = Path('..').joinpath('result')
plt.rcParams["font.family"] = 'Yu Gothic'
squarify.plot(sizes=list(tagCount), label=list(tagSurface), alpha=0.7)
plt.axis('off')
plt.savefig(result_dir_path.joinpath('trends_of_qiita_treemap1.png'), format="png", dpi=300)
plt.show()
그런 다음 #202 Treemap with colors mapped on values 샘플 코드를 참조하여 파란색 계통 그라데이션으로 그립니다.
analyzeQiita_TreeMap2from pathlib import Path
import matplotlib
import matplotlib.pyplot as plt
import squarify
cmap = matplotlib.cm.Blues
mini = min(tagCount)
maxi = max(tagCount)
norm = matplotlib.colors.Normalize(vmin=mini, vmax=maxi)
colors = [cmap(norm(value)) for value in tagCount]
result_dir_path = Path('..').joinpath('result')
plt.rcParams["font.family"] = 'Yu Gothic'
squarify.plot(sizes=list(tagCount), label=list(tagSurface), alpha=0.7, color=colors)
plt.axis('off')
plt.savefig(result_dir_path.joinpath('trends_of_qiita_treemap2.png'), format="png", dpi=300)
plt.show()
역시 Python과 JavaScript가 크게 그려지는 것은 전회( Qiita 기사 태그에서 WordCloud를 그려 보았습니다. )와 변함없이.
요약
Qiita 기사의 태그를 사용하여 Treemap을 그리는 방법을 소개합니다.
Reference
이 문제에 관하여(파이썬 프로그래밍 : Qiita 기사 태그에서 Treemap을 그려 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Blaster36/items/8fe99c2d861476ba52cc
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import requests
import json
url = 'https://qiita.com/api/v2/items?per_page=100&page='
headers = {'Authorization': 'Bearer ${YOUR ACCESS-TOKEN}'}
tags = []
for i in range(5):
print('=====')
print('Downloading ... ' + url + str(i+1))
print('-----')
#response = requests.get(url + str(i+1))
response = requests.get(url + str(i+1), headers=headers)
for article in json.loads(response.text):
print(article['title'])
tags.extend([tag['name'].lower() for tag in article['tags']])
print('=====')
from collections import Counter
c = Counter(tags)
#print(c)
# 出現回数が多いものから順にTop10を列挙(重複なし)
tagSurface, tagCount = zip(*c.most_common(10))
print(tagSurface)
print(tagCount)
from pathlib import Path
import matplotlib.pyplot as plt
import squarify
result_dir_path = Path('..').joinpath('result')
plt.rcParams["font.family"] = 'Yu Gothic'
squarify.plot(sizes=list(tagCount), label=list(tagSurface), alpha=0.7)
plt.axis('off')
plt.savefig(result_dir_path.joinpath('trends_of_qiita_treemap1.png'), format="png", dpi=300)
plt.show()
from pathlib import Path
import matplotlib
import matplotlib.pyplot as plt
import squarify
cmap = matplotlib.cm.Blues
mini = min(tagCount)
maxi = max(tagCount)
norm = matplotlib.colors.Normalize(vmin=mini, vmax=maxi)
colors = [cmap(norm(value)) for value in tagCount]
result_dir_path = Path('..').joinpath('result')
plt.rcParams["font.family"] = 'Yu Gothic'
squarify.plot(sizes=list(tagCount), label=list(tagSurface), alpha=0.7, color=colors)
plt.axis('off')
plt.savefig(result_dir_path.joinpath('trends_of_qiita_treemap2.png'), format="png", dpi=300)
plt.show()
Qiita 기사의 태그를 사용하여 Treemap을 그리는 방법을 소개합니다.
Reference
이 문제에 관하여(파이썬 프로그래밍 : Qiita 기사 태그에서 Treemap을 그려 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Blaster36/items/8fe99c2d861476ba52cc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)