지리 데이터 시각화: Polygon과 Scatterplot

수현·2024년 3월 11일
0

Python

목록 보기
11/12
post-thumbnail

Scatterplot 스타일링

색상+모양

c = 마커(데이터 포인트)의 색상
c = darked = 진한 빨간색
marker = s = 정사각형 마커

marker의 모양

  • 'o': 원 (기본값)
  • 's': 정사각형
  • '^': 위쪽을 향하는 삼각형
  • 'v': 아래쪽을 향하는 삼각형
  • '>': 오른쪽을 향하는 삼각형
  • '<': 왼쪽을 향하는 삼각형
  • 'p': 오각형
  • 'h': 육각형
  • 'x': x 모양
  • 'D': 다이아몬드
  • '|': 수직선
  • '_': 수평선
# matplotlib.pyplot 임포트
import matplotlib.pyplot as plt

# 산점도 1 - 아버지의 키 대 아들의 키, 진한 빨간색 정사각형 마커로 표시
plt.scatter(father_son.fheight, father_son.sheight, c = 'darkred', marker = 's')

# 플롯을 보여줌
plt.show()

테두리 색상 변경

edgecolor = 테두리 색상

# matplotlib.pyplot 임포트
import matplotlib.pyplot as plt

# 산점도 2 - 진한 파란색 테두리가 있는 노란색 마커
plt.scatter(father_son.fheight, father_son.sheight, c = 'yellow', edgecolor = 'darkblue')

# 플롯을 보여줌
plt.show()

grid와 라벨, 제목 생성

plt.grid = 격자 생성하기

# matplotlib.pyplot 임포트
import matplotlib.pyplot as plt

# 산점도 3
plt.scatter(father_son.fheight, father_son.sheight,  c = 'yellow', edgecolor = 'darkblue') # 아버지 키와 아들 키의 산점도, 노란색 마커와 진한 파란색 테두리 사용
plt.grid() # 격자 보이기
plt.xlabel('father height (inches)') # x축 라벨 설정: '아버지 키 (인치)'
plt.ylabel('son height (inches)') # y축 라벨 설정: '아들 키 (인치)'
plt.title('Son Height as a Function of Father Height') # 그래프 제목 설정: '아버지 키에 따른 아들 키'

# 플롯을 보여줌
plt.show()

위도와 경도 추출하기

# 새로운 컬럼으로 위도 추출: lat
df['lat'] = [loc[0] for loc in df.Location]

# 새로운 컬럼으로 경도 추출: lng
df['lng'] = [loc[1] for loc in df.Location]

# df의 처음 몇 줄을 다시 출력
print(df.head())

위도, 경도를 산점도로 시각화

x, y를 주의하자
lng: 경도(longitude), lat: 위도(latitude)

# Nashville 치킨 퍼밋의 위치를 플롯하기
plt.scatter(x = chickens.lng, y = chickens.lat)

# 플롯을 보여줌
plt.show()

지오메트리와 쉐이프파일

  • 쉐이프파일(Shapefiles)

    • 지점 데이터를 지도상에서 의미 있는 영역과 함께 표시하면 더 효과적으로 시각화할 수 있음. 이를 위한 하나의 방법이 쉐이프파일 사용.
    • 쉐이프파일은 지도를 그리는 데 사용되는 지오메트리 필드를 저장함. 기본 지오메트리 유형에는 포인트(단일 경도/위도 쌍), 라인(연속적인 세그먼트를 형성하기 위해 연결될 수 있는 두 개 이상의 경도/위도 쌍), 다각형(특정 순서로 결합된 세 개 이상의 경도/위도 쌍으로 구성된 닫힌 영역)이 있음.
  • 쉐이프파일 구성요소

    • 쉐이프파일은 .shp 파일 확장자로 인식. .shp 파일은 보통 .shx 파일과 .dbf 파일과 함께 zip 파일로 다운로드 제공. 이 파일들은 동일한 디렉토리 내에 있어야 함.
    • .shp 파일은 지오메트리를, .dbf 파일은 각 지오메트리의 속성을, .shx 파일(또는 쉐이프 인덱스 파일)은 속성을 모양과 연결.
  • geopandas

    • geopandas 패키지는 지리공간 데이터를 다루기 위한 라이브러리를 제공함. geopandas의 read_file() 함수로 쉐이프파일을 읽을 수 있음.
    • GeoDataFrames는 geopandas 라이브러리로 생성할 수 있는 데이터 구조 . geopandas는 DataFrames에 대해 pandas 패키지가 제공하는 많은 메소드를 GeoDataFrames에도 제공함(예: .head() 함수).

gpd 임포트 & read_file

# geopandas 임포트
import geopandas as gpd

# 서비스 구역 쉐이프파일 읽어들이고 처음 몇 줄 보기
service_district = gpd.read_file(shapefile_path)
print(service_district.head())

# 첫 번째 행의 서비스 구역 지오메트리 내용 출력
print(service_district.loc[0, 'geometry'])

shapefile ploygon 시각화

# 패키지 임포트
import geopandas as gpd
import matplotlib.pyplot as plt

# 추가 인자 없이 서비스 구역 플롯
service_district.plot()
plt.show()

# 서비스 구역을 이름에 따라 색칠하고 범례 표시
service_district.plot(column = 'name', legend = True)
plt.show()


산점도와 polygon 결합

# 서비스 구역 쉐이프파일 플롯
service_district.plot(column='name')

# 치킨 위치 추가
plt.scatter(x=chickens.lng, y=chickens.lat, c = 'black')

# 플롯 보여주기
plt.show()

# 서비스 구역 쉐이프파일 플롯
service_district.plot(column='name', legend=True)

# 치킨 위치 추가
plt.scatter(x=chickens.lng, y=chickens.lat, c='black', edgecolor='white')

# 라벨과 제목 추가
plt.title('Nashville Chicken Permits')
plt.xlabel('longitude')
plt.ylabel('latitude')

# 격자 라인 추가 및 플롯 보여주기
plt.grid()
plt.show()

profile
데이터 분석 공부중:)

0개의 댓글