In [30]:
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
import warnings
warnings.filterwarnings(action='ignore')
Qualitative (질적), Sequential (연속적), Diverging (분기적)¶
- Qualitative (질적): 각각의 구역이 구별 되어야함(독립적)
- Sequential (연속적): 데이터 값이 증가함에 따라 색상의 농도가 점진적으로 변합니다.
- Diverging (분기적): 강중심값을 기준으로 색상이 양쪽으로 분기됩니다.
In [37]:
# 데이터 생성
np.random.seed(0)
categories = ['A', 'B', 'C', 'D', 'E']
category_data = np.random.choice(categories, size=100)
sequential_data = np.linspace(0, 1, 100)
diverging_data = np.linspace(-1, 1, 100)
# 카테고리를 숫자로 매핑
category_map = {cat: idx for idx, cat in enumerate(categories)}
numeric_category_data = np.array([category_map[cat] for cat in category_data])
# Qualitative 색상 정의
cmap_qualitative = ListedColormap(['tab:blue', 'tab:orange', 'tab:green', 'tab:red', 'tab:purple'])
# 플롯 생성
fig, axs = plt.subplots(1, 3, figsize=(18, 5))
# Qualitative 예제
scatter = axs[0].scatter(np.random.rand(100), np.random.rand(100),
c=numeric_category_data, cmap=cmap_qualitative)
legend1 = axs[0].legend(handles=scatter.legend_elements()[0],
labels=categories, title="Categories")
axs[0].add_artist(legend1)
axs[0].set_title('Qualitative (Categorical)')
# Sequential 예제
sc = axs[1].scatter(np.random.rand(100), np.random.rand(100), c=sequential_data, cmap='Blues')
plt.colorbar(sc, ax=axs[1])
axs[1].set_title('Sequential')
# Diverging 예제
sc2 = axs[2].scatter(np.random.rand(100), np.random.rand(100), c=diverging_data, cmap='coolwarm')
plt.colorbar(sc2, ax=axs[2])
axs[2].set_title('Diverging')
plt.show()
In [ ]:
'2학년 2학기 > 데이터 사이언스 입문' 카테고리의 다른 글
[Visualization] Matplotlib의 고급 기능(Subplots, annotate, Fommator, Locator) (0) | 2024.12.02 |
---|---|
[Visualization] Regend (0) | 2024.12.02 |
[Visualization] Contour Plot(등고선) (0) | 2024.11.26 |
[Visualization] Error Bar (0) | 2024.11.26 |
[Visualization] Scatter Plot(산점도) (0) | 2024.11.26 |