```python
import numpy as np
import matplotlib.pyplot as plt
```
### Polar Plot Example
#### 1. **폴라 차트 개요**
- **극좌표계**: 폴라 차트는 극좌표계를 사용하는 차트입니다.
- **서브플롯 및 프로젝션**: `subplot`에서 `projection='polar'`를 사용하면 극좌표 차트를 생성할 수 있습니다.
- **`Figure.add_subplot(polar=True)`**: 극좌표계를 추가 가능.
- **RTX**: 기본적으로 0, 1, 2로 설정된 RTX 값을 원하는 구간에 맞게 조정할 수 있습니다.
- **R 레이블**: `set_rlabel_position`으로 R 레이블의 각도를 조정 가능.
#### 2. **폴라 차트 활용**
- **시작 각도 및 종료 각도**: `set_theta_offset`, `set_theta_max`를 사용해 시작 및 종료 각도를 설정.
- **디자인 및 색상**: `cmap='hsv'`로 색상 맵을 설정해, 각도에 따라 빨주노초파남보 색상이 적용.
- **차트 스타일**: 부채꼴 모양, 소라 모양 등 다양한 스타일로 시각화 가능.
#### 3. **폴라 차트에서 사용되는 주요 함수와 메서드**
- **`plt.subplot(projection='polar')`**: 극좌표를 사용하여 폴라 차트를 생성하는 메서드.
- **`ax.set_rlabel_position(angle)`**: R 레이블의 위치를 특정 각도로 조정하는 메서드.
- **`ax.set_theta_offset(offset)`**: 시작 각도를 조정하는 메서드.
- **`ax.set_theta_max(max_angle)`**: 종료 각도를 설정하는 메서드.
- **`plt.scatter()`**: 폴라 차트에 산점도를 추가하는 함수.
- **`ax.plot()`**: 폴라 차트에 선을 추가하는 함수.
```python
theta = np.linspace(0, 2*np.pi, 100)
r = np.abs(np.sin(theta) * np.cos(theta))
fig, ax = plt.subplots(subplot_kw={'projection': 'polar'})
ax.plot(theta, r)
ax.set_rlabel_position(-22.5) # Move the label position
ax.set_theta_offset(np.pi / 4) # Offset the start angle
ax.set_theta_direction(-1) # Set theta direction
plt.show()
```
![png](2024-08-23-visualization-examples_files/2024-08-23-visualization-examples_4_0.png)
### Radar Chart Example
#### 4. **레이더 차트**
- **세타 및 R**: 세타와 R 값을 분리하여 차트를 그리며, 선 그래프와 내부 채우기 가능.
- **세타 그리드, 세타 오프셋**: 시작 각도와 그리드를 조정해 차트를 좀 더 명확하게 표현.
#### 5. **레이더 차트에서 사용되는 주요 함수와 메서드**
- **`plt.subplot(projection='polar')`**: 레이더 차트 역시 극좌표를 사용하며, 폴라 차트와 동일한 메서드를 사용.
- **`ax.fill()`**: 선 그래프 내부를 채우는 메서드.
- **`ax.plot()`**: 데이터 포인트를 연결하는 선 그래프를 그리는 메서드.
- **`ax.set_theta_offset(offset)`**: 시작 각도를 조정하여 차트를 회전하는 메서드.
- **`ax.set_theta_direction(-1)`**: 각도의 방향을 시계 반대방향으로 설정하는 메서드.
```python
labels=np.array(['A', 'B', 'C', 'D'])
stats=np.array([80, 70, 90, 85])
angles=np.linspace(0, 2*np.pi, len(labels), endpoint=False).tolist()
stats=np.concatenate((stats,[stats[0]]))
angles+=angles[:1]
fig, ax = plt.subplots(figsize=(6, 6), subplot_kw=dict(polar=True))
ax.fill(angles, stats, color='green', alpha=0.25)
ax.plot(angles, stats, color='green', linewidth=2)
plt.show()
```
![png](2024-08-23-visualization-examples_files/2024-08-23-visualization-examples_7_0.png)
### Pie Chart Example
#### 6. **파이 차트**
- **기본 개념**: 원형 안에 비율을 구분하여 표시하는 차트로, `plt.pie()` 메소드를 사용.
- **막대 그래프와의 비교**: 막대 그래프는 파이 차트보다 값의 비교에 적합. 각에 대한 인지가 길이에 대한 인지보다 떨억지기 때문.
- **스타일링 옵션**:
- `startangle`: 시작 각도 설정.
- `explode`: 특정 조각을 강조하기 위해 밖으로 튀어나오게 설정.
- `shadow`: 그림자를 추가하여 시각적 효과.
- `autopct`: 각 조각의 비율을 퍼센트로 표시.
- `labeldistance`: 레이블을 원으로부터 떨어뜨려 표시.
#### 7. **파이 차트에서 사용되는 주요 함수와 메서드**
- **`plt.pie(data, labels, startangle)`**: 파이 차트를 그리는 기본 함수.
- **`explode`**: 파이 차트에서 특정 조각을 강조하기 위해 밖으로 튀어나오게 하는 옵션.
- **`shadow`**: 파이 차트에 그림자를 추가하는 옵션.
- **`autopct`**: 파이 차트의 각 조각에 비율을 퍼센트로 표시하는 옵션.
- **`labeldistance`**: 레이블을 원으로부터 떨어뜨려 표시하는 거리 조정 옵션.
```python
sizes = [15, 30, 45, 10]
labels = ['A', 'B', 'C', 'D']
explode = (0, 0.1, 0, 0) # explode 2nd slice
plt.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%',
shadow=True, startangle=140)
plt.show()
```
![png](2024-08-23-visualization-examples_files/2024-08-23-visualization-examples_10_0.png)
### Donut Chart Example
#### 8. **도넛 차트**
- **파이 차트의 변형**: 파이 차트 중심에 원을 그려 도넛 모양을 만듦.
- **중심 원 그리기**: `plt.Circle`을 사용해 도넛 형태로 변형 가능.
- **퍼센트 표시 조정**: 퍼센트 텍스트를 테두리에 맞게 조정하여 시각적 효과를 극대화.
#### 9. **도넛 차트에서 사용되는 주요 함수와 메서드**
- **`plt.pie()`**: 파이 차트를 그린 후, 도넛 차트로 변형하기 위해 원을 그릴 때 사용하는 함수.
- **`plt.Circle((x, y), radius, color)`**: 도넛 차트의 중심에 위치한 원을 그리는 함수.
- **`ax.add_artist()`**: 도넛 차트의 중심 원을 추가하는 메서드.
```python
sizes = [15, 30, 45, 10]
labels = ['A', 'B', 'C', 'D']
circle = plt.Circle((0, 0), 0.7, color='white')
fig, ax = plt.subplots()
ax.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=90)
ax.add_artist(circle)
plt.show()
```
![png](2024-08-23-visualization-examples_files/2024-08-23-visualization-examples_13_0.png)
### Missingno Example
#### 10. **Missingno**
- **결측치를 시각화**: 결측치를 시각화할 때 사용하는 라이브러리.
- **`msno.matrix(data)`**: 결측치를 시각화하는 메서드.
- **`msno.heatmap(data)`**: 결측치 간의 상관관계를 시각화하는 메서드.
- **`msno.dendrogram(data)`**: 결측치의 계층적 클러스터링을 시각화하는 메서드.
```python
import pandas as pd
import seaborn as sns
df = pd.DataFrame({
'A': [1, np.nan, 3, 4, np.nan],
'B': [np.nan, 2, 3, np.nan, 5],
'C': [1, 2, np.nan, 4, 5]
})
sns.heatmap(df.isnull(), cbar=False, cmap="viridis")
plt.show()
```
![png](2024-08-23-visualization-examples_files/2024-08-23-visualization-examples_16_0.png)
```python
%pip install missingno
```
```python
# 필요한 라이브러리 설치 (만약 설치되어 있지 않은 경우)
# pip install missingno
import missingno as msno
import pandas as pd
import numpy as np
# 샘플 데이터 생성
df = pd.DataFrame({
'A': [1, np.nan, 3, 4, np.nan],
'B': [np.nan, 2, 3, np.nan, 5],
'C': [1, 2, np.nan, 4, 5],
'D': [np.nan, 2, np.nan, 4, np.nan],
'E': [1, np.nan, 3, 4, 5]
})
# 결측치 매트릭스 시각화
msno.matrix(df)
plt.show()
# 결측치 히트맵 시각화
msno.heatmap(df)
plt.show()
# 결측치 덴드로그램 시각화
msno.dendrogram(df)
plt.show()
```
![png](2024-08-23-visualization-examples_files/2024-08-23-visualization-examples_18_0.png)
![png](2024-08-23-visualization-examples_files/2024-08-23-visualization-examples_18_1.png)
![png](2024-08-23-visualization-examples_files/2024-08-23-visualization-examples_18_2.png)
### Treemap Example
#### 11. **Treemap**
- **트리맵 시각화**: 아직 널리 사용되지 않는 트리맵 시각화 라이브러리 `squarify`.
- **`squarify.plot(sizes, label, color)`**: 트리맵을 그리는 함수.
- **`plt.axis('off')`**: 트리맵의 축을 숨기기 위한 함수.
```python
%pip install squarify
```
```python
import squarify
sizes = [500, 300, 200, 100]
labels = ['A', 'B', 'C', 'D']
colors = sns.color_palette('viridis', len(sizes))
squarify.plot(sizes=sizes, label=labels, color=colors, alpha=0.8)
plt.axis('off')
plt.show()
```
![png](2024-08-23-visualization-examples_files/2024-08-23-visualization-examples_22_0.png)
### Waffle Chart Example
#### 12. **Waffle Chart**
- **와플 차트 시각화**: `pywaffle` 라이브러리를 사용하여 와플 형태의 차트를 생성.
- **`Waffle(rows, values, colors, legend)`**: 와플 차트를 생성하는 기본 함수.
- **`FontAwesome`**: 와플 차트의 아이콘을 추가할 때 사용하는 폰트 라이브러리.
```python
%pip install pywaffle
```
```python
from pywaffle import Waffle
data = {'Category A': 30, 'Category B': 20, 'Category C': 50}
fig = plt.figure(
FigureClass=Waffle,
rows=5,
values=data,
colors=["#232066", "#983D3D", "#DCB732"],
legend={'loc': 'upper left', 'bbox_to_anchor': (1, 1)},
icons='star', icon_size=18, icon_legend=True
)
plt.show()
```
![png](2024-08-23-visualization-examples_files/2024-08-23-visualization-examples_26_0.png)
### Venn Diagram Example
#### 13. **Venn Diagram**
- **벤 다이어그램 시각화**: 집합의 교집합을 시각화하는 벤 다이어그램 생성 가능.
- **`plt.venn2(subsets)`**: 두 개의 집합을 나타내는 벤 다이어그램을 생성하는 함수.
- **`plt.venn3(subsets)`**: 세 개의 집합을 나타내는 벤 다이어그램을 생성하는 함수.
```python
%pip install matplotlib_venn
```
```python
from matplotlib_venn import venn2
venn2(subsets = (10, 5, 2), set_labels = ('A', 'B'))
plt.show()
```
![png](2024-08-23-visualization-examples_files/2024-08-23-visualization-examples_30_0.png)
### Facet Example
#### 14. **Facet**
- **여러 개의 플롯 배치**: `subplot`으로 여러 플롯을 n x n 형태로 배치 가능.
- **dpi 설정**: 해상도 조정으로 차트의 품질을 향상.
- **grid_spec**: 특정 영역을 잘라 플롯 배치.
- **Aspect Ratio**: 플롯의 가로 세로 비율을 일정하게 유지.
#### 15. **Facet에서 사용되는 주요 함수와 메서드**
- **`plt.subplots(nrows, ncols)`**: 여러 플롯을 배치하기 위한 기본 함수.
- **`plt.set_facecolor(color)`**: 플롯의 배경색을 설정하는 메서드.
- **`fig.add_subplot()`**: 추가적인 서브플롯을 생성하는 메서드.
- **`plt.grid(True)`**: 그리드를 표시하는 함수.
- **`plt.tight_layout()`**: 플롯 간의 간격을 자동으로 조정하는 함수.
```python
import seaborn as sns
sns.set_theme(style="ticks")
df = sns.load_dataset("penguins")
g = sns.pairplot(df, hue="species")
plt.show()
```
![png](2024-08-23-visualization-examples_files/2024-08-23-visualization-examples_33_0.png)
#### 16. **스파인, 보조선, 보조면**
- **스파인(Spine) 조정**: 테두리 설정, 라인 두께, 색상 조정 가능.
- **보조선/보조면 추가**: 중요한 데이터 포인트 강조를 위해 가로선, 세로선 및 보조면 추가 가능.
#### 17. **스파인,
보조선, 보조면에서 사용되는 주요 함수와 메서드**
- **`ax.spines['left'].set_position('center')`**: 스파인의 위치를 중앙으로 설정하는 메서드.
- **`ax.axhline(y=0, color='k')`**: 가로 보조선을 그리는 함수.
- **`ax.axvline(x=0, color='k')`**: 세로 보조선을 그리는 함수.
- **`ax.axhspan(ymin, ymax, facecolor='0.5', alpha=0.5)`**: 보조면을 추가하는 함수.
- **`ax.axvspan(xmin, xmax, facecolor='0.5', alpha=0.5)`**: 보조면을 추가하는 함수.
#### 18. **커스텀 세팅**
- **커스텀 스타일**: 시각화 스타일을 파일로 저장하고 불러올 수 있음.
- **스타일 사용**: `plt.style.use()`로 스타일 지정 가능.
#### 19. **커스텀 세팅에서 사용되는 주요 함수와 메서드**
- **`plt.style.use('style_name')`**: 스타일을 설정하는 함수.
- **`plt.rcParams['key'] = value`**: 전역 설정을 변경하는 함수.
- **`with plt.style.context('style_name')`**: 특정 스타일을 일시적으로 적용하는 문맥 관리 메서드.
```python
import matplotlib.pyplot as plt
import numpy as np
# 데이터 생성
x = np.linspace(-10, 10, 100)
y = np.sin(x)
# 플롯 생성
fig, ax = plt.subplots()
# 데이터 플롯팅
ax.plot(x, y)
# 스파인 조정 - 왼쪽 스파인을 중앙으로 이동
ax.spines['left'].set_position('center')
ax.spines['bottom'].set_position('center')
# 위, 오른쪽 스파인 제거
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
# 보조선 추가 - 가로선과 세로선을 중앙에 추가
ax.axhline(y=0, color='k', linestyle='--')
ax.axvline(x=0, color='k', linestyle='--')
# 보조면 추가 - 특정 영역 강조
ax.axhspan(ymin=-0.5, ymax=0.5, facecolor='lightgrey', alpha=0.5)
ax.axvspan(xmin=-5, xmax=5, facecolor='lightgrey', alpha=0.5)
plt.show()
```
![png](2024-08-23-visualization-examples_files/2024-08-23-visualization-examples_35_0.png)
```python
import matplotlib.pyplot as plt
import numpy as np
# 데이터 생성
x = np.linspace(0, 10, 100)
y = np.cos(x)
# 커스텀 스타일 적용
plt.style.use('ggplot') # 예시: 'ggplot' 스타일 사용
# 커스텀 전역 설정
plt.rcParams['figure.figsize'] = (10, 6) # 그림 크기 설정
plt.rcParams['lines.linewidth'] = 2 # 라인 두께 설정
plt.rcParams['lines.color'] = 'r' # 라인 색상 설정
# 플롯 생성
fig, ax = plt.subplots()
ax.plot(x, y)
plt.show()
```
![png](2024-08-23-visualization-examples_files/2024-08-23-visualization-examples_36_0.png)
댓글남기기