【Python】도도부현별 데이터를 지도에 플롯한다(전국의 자동차 소유 대수)
이 기사의 목적
Python으로 다음과 같은 도도부현 수준의 색칠 지도
시구정촌 레벨이라면 여기
그건 그렇고, 데이터는 전국 승용차의 소유량을 사용했습니다.
페이지 끝에 코드 목록이 있습니다.
해설
컬러 맵을 만들기 위해 japanmap이라는 라이브러리를 사용하십시오.
pip install japanmap
기타 라이브러리 준비
import numpy as np
import pandas as pd
import cv2
from PIL import Image
import matplotlib.colors
import matplotlib.pyplot as plt
from japanmap import *
데이터 로드
데이터는 여기에서 2019 년 Excel 파일을 다운로드하여 처리했습니다.
df = pd.read_csv("how_many_cars.csv")
df = df.iloc[:53,:8]
도도부현별 승용차량을 사전 형식으로 저장
for k,n in zip(df["運輸支局"], df["乗用車"]):
if k in ["札幌", "函館", "旭川", "室蘭", "釧路", "帯広", "北見"]:
tmp=1
else:
tmp = pref_code(k)
tmp = pref_names[tmp]
#print(k,tmp)
if tmp not in num_dict:
num_dict[tmp] = n
else:
num_dict[tmp] += n
num_dict의 내용은 아직 이런 느낌
num_dict>> print(num_dict)
{'三重県': 1161089.0,
'京都府': 1007847.0,
...
'鳥取県': 346273.0,
'鹿児島県': 955360.0}
작성한 num_dict의 값을 대수에서 색 정보(RGB)로 변환
n_min = min(num_dict.values())
n_max = max(num_dict.values())
#print(n_min)
#print(n_max)
cmap = plt.cm.rainbow
norm = matplotlib.colors.Normalize(vmin=n_min, vmax=n_max)
def color_scale(r):
tmp = cmap(norm(r))
return (tmp[0]*255, tmp[1]*255, tmp[2]*255)
for k,v in num_dict.items():
num_dict[k] = color_scale(v)
최종 num_dict 내용
num_dict>> print(num_dict)
{'三重県': (19.5, 157.4059464288972, 241.021876181009),
'京都府': (41.49999999999999, 128.85792190698177, 246.1066417260737),
...
'鳥取県': (127.5, 0.0, 255.0),
'鹿児島県': (47.5, 120.63885699318257, 247.29821868892742)}
japanmap에 num_dict를 전달하여 플롯
plt.figure(figsize=(10,8))
plt.imshow(picture(num_dict))
sm = plt.cm.ScalarMappable(cmap=cmap, norm=norm)
plt.colorbar(sm)
plt.show()
이상!
코드 목록
pip install japanmap
import numpy as np
import pandas as pd
import cv2
from PIL import Image
import matplotlib.colors
import matplotlib.pyplot as plt
from japanmap import *
df = pd.read_csv("how_many_cars.csv")
df = df.iloc[:53,:8]
num_dict={}
for k,n in zip(df["運輸支局"], df["乗用車"]):
if k in ["札幌", "函館", "旭川", "室蘭", "釧路", "帯広", "北見"]:
tmp=1
else:
tmp = pref_code(k)
tmp = pref_names[tmp]
#print(k,tmp)
if tmp not in num_dict:
num_dict[tmp] = n
else:
num_dict[tmp] += n
n_min = min(num_dict.values())
n_max = max(num_dict.values())
#print(n_min)
#print(n_max)
cmap = plt.cm.rainbow
norm = matplotlib.colors.Normalize(vmin=n_min, vmax=n_max)
def color_scale(r):
tmp = cmap(norm(r))
return (tmp[0]*255, tmp[1]*255, tmp[2]*255)
for k,v in num_dict.items():
num_dict[k] = color_scale(v)
plt.figure(figsize=(10,8))
plt.imshow(picture(num_dict))
sm = plt.cm.ScalarMappable(cmap=cmap, norm=norm)
plt.colorbar(sm)
plt.show()
Reference
이 문제에 관하여(【Python】도도부현별 데이터를 지도에 플롯한다(전국의 자동차 소유 대수)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yuto16/items/fa2c4d8b79e4d09defcd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
컬러 맵을 만들기 위해 japanmap이라는 라이브러리를 사용하십시오.
pip install japanmap
기타 라이브러리 준비
import numpy as np
import pandas as pd
import cv2
from PIL import Image
import matplotlib.colors
import matplotlib.pyplot as plt
from japanmap import *
데이터 로드
데이터는 여기에서 2019 년 Excel 파일을 다운로드하여 처리했습니다.
df = pd.read_csv("how_many_cars.csv")
df = df.iloc[:53,:8]
도도부현별 승용차량을 사전 형식으로 저장
for k,n in zip(df["運輸支局"], df["乗用車"]):
if k in ["札幌", "函館", "旭川", "室蘭", "釧路", "帯広", "北見"]:
tmp=1
else:
tmp = pref_code(k)
tmp = pref_names[tmp]
#print(k,tmp)
if tmp not in num_dict:
num_dict[tmp] = n
else:
num_dict[tmp] += n
num_dict의 내용은 아직 이런 느낌
num_dict
>> print(num_dict)
{'三重県': 1161089.0,
'京都府': 1007847.0,
...
'鳥取県': 346273.0,
'鹿児島県': 955360.0}
작성한 num_dict의 값을 대수에서 색 정보(RGB)로 변환
n_min = min(num_dict.values())
n_max = max(num_dict.values())
#print(n_min)
#print(n_max)
cmap = plt.cm.rainbow
norm = matplotlib.colors.Normalize(vmin=n_min, vmax=n_max)
def color_scale(r):
tmp = cmap(norm(r))
return (tmp[0]*255, tmp[1]*255, tmp[2]*255)
for k,v in num_dict.items():
num_dict[k] = color_scale(v)
최종 num_dict 내용
num_dict
>> print(num_dict)
{'三重県': (19.5, 157.4059464288972, 241.021876181009),
'京都府': (41.49999999999999, 128.85792190698177, 246.1066417260737),
...
'鳥取県': (127.5, 0.0, 255.0),
'鹿児島県': (47.5, 120.63885699318257, 247.29821868892742)}
japanmap에 num_dict를 전달하여 플롯
plt.figure(figsize=(10,8))
plt.imshow(picture(num_dict))
sm = plt.cm.ScalarMappable(cmap=cmap, norm=norm)
plt.colorbar(sm)
plt.show()
이상!
코드 목록
pip install japanmap
import numpy as np
import pandas as pd
import cv2
from PIL import Image
import matplotlib.colors
import matplotlib.pyplot as plt
from japanmap import *
df = pd.read_csv("how_many_cars.csv")
df = df.iloc[:53,:8]
num_dict={}
for k,n in zip(df["運輸支局"], df["乗用車"]):
if k in ["札幌", "函館", "旭川", "室蘭", "釧路", "帯広", "北見"]:
tmp=1
else:
tmp = pref_code(k)
tmp = pref_names[tmp]
#print(k,tmp)
if tmp not in num_dict:
num_dict[tmp] = n
else:
num_dict[tmp] += n
n_min = min(num_dict.values())
n_max = max(num_dict.values())
#print(n_min)
#print(n_max)
cmap = plt.cm.rainbow
norm = matplotlib.colors.Normalize(vmin=n_min, vmax=n_max)
def color_scale(r):
tmp = cmap(norm(r))
return (tmp[0]*255, tmp[1]*255, tmp[2]*255)
for k,v in num_dict.items():
num_dict[k] = color_scale(v)
plt.figure(figsize=(10,8))
plt.imshow(picture(num_dict))
sm = plt.cm.ScalarMappable(cmap=cmap, norm=norm)
plt.colorbar(sm)
plt.show()
Reference
이 문제에 관하여(【Python】도도부현별 데이터를 지도에 플롯한다(전국의 자동차 소유 대수)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yuto16/items/fa2c4d8b79e4d09defcd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
pip install japanmap
import numpy as np
import pandas as pd
import cv2
from PIL import Image
import matplotlib.colors
import matplotlib.pyplot as plt
from japanmap import *
df = pd.read_csv("how_many_cars.csv")
df = df.iloc[:53,:8]
num_dict={}
for k,n in zip(df["運輸支局"], df["乗用車"]):
if k in ["札幌", "函館", "旭川", "室蘭", "釧路", "帯広", "北見"]:
tmp=1
else:
tmp = pref_code(k)
tmp = pref_names[tmp]
#print(k,tmp)
if tmp not in num_dict:
num_dict[tmp] = n
else:
num_dict[tmp] += n
n_min = min(num_dict.values())
n_max = max(num_dict.values())
#print(n_min)
#print(n_max)
cmap = plt.cm.rainbow
norm = matplotlib.colors.Normalize(vmin=n_min, vmax=n_max)
def color_scale(r):
tmp = cmap(norm(r))
return (tmp[0]*255, tmp[1]*255, tmp[2]*255)
for k,v in num_dict.items():
num_dict[k] = color_scale(v)
plt.figure(figsize=(10,8))
plt.imshow(picture(num_dict))
sm = plt.cm.ScalarMappable(cmap=cmap, norm=norm)
plt.colorbar(sm)
plt.show()
Reference
이 문제에 관하여(【Python】도도부현별 데이터를 지도에 플롯한다(전국의 자동차 소유 대수)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yuto16/items/fa2c4d8b79e4d09defcd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)