データソースは、厚生労働省発表のPDFデータを用います。

2020年3月20日時点のURLから

https://www.mhlw.go.jp/stf/newpage_10204.html

国内事例(チャーター便、クルーズ船の患者を除く)における都道府県別
患者報告数(2020年3月15日12時時点)
のPDFを利用することとします。

PDFの読み込み

データ取得部分は今回は割愛します。
PDFデータの読み込みにはpdfminerを使用します。

from pdfminer.pdfinterp import PDFResourceManagerfrom pdfminer.pdfinterp import PDFPageInterpreterfrom pdfminer.converter import TextConverterfrom pdfminer.layout import LAParamsfrom pdfminer.pdfpage import PDFPagefrom io import StringIOdef convert_pdf_to_txt(path):     rsrcmgr = PDFResourceManager()     retstr = StringIO()     laparams = LAParams()     laparams.detect_vertical = True     device = TextConverter(rsrcmgr, retstr, laparams=laparams)     fp = open(path, 'rb')     interpreter = PDFPageInterpreter(rsrcmgr, device)     maxpages = 1     caching = True     pdf_text = ''     for page in PDFPage.get_pages(fp, None,         maxpages=maxpages,caching=caching,         check_extractable=True):         interpreter.process_page(page)         str2 = retstr.getvalue()         pdf_text += str2 fp.close() device.close() retstr.close() return pdf_text result_list = [] result_txt = convert_pdf_to_txt('000608453.pdf')

Japanmapへ読み込むための加工

Japanmapへ読み込ませるために、データを辞書型へ変換し
人数のデータを整数へ加工します。

lines = result_txt.split('\n') data = {} for i,line in enumerate(lines[4:],start=0):     if line and ('道' in line or '県' in line or '府' in line or '都' in line ):         data[line.strip()] = int(lines[4+37+(2*(i))].split(' ')[0])

色の調整

数値データをカラーデータへ変換します。

m = max(data.values())def color_scale(r):    return (255,0,int(255 - 255/m * r*5)) for p,d in data.items():     c = color_scale(d)     data[p] = c

描画

%matplotlib inlineimport japanmapimport matplotlib.pyplot as pltrcParams['figure.figsize'] = 8,8plt.imshow(picture(data));plt.title('Corona viruls confirmed in Japn 2020-3-20')