- 추석입니다.
- 빛나는 보름달을 그립니다.
1. 추석 달
- 보름달 주위로 빛이 살짝 스며나올 때가 있습니다.
- 구름이 옅게 끼거나 공기가 습할 때 일부가 굴절되는 것입니다.

2. 빛이 스미는 보름달
2.1. 보름달
- 빛이 하늘에 번지는 보름달을 그립니다.
- 먼저, 2022 x 2022 크기의 공간을 만들고 한 가운데 반지름이 800인 원을 그립니다.
- 2022 x 2022 numpy array를 만든 후 가운데만 255, 나머지는 0으로 지정합니다.
1 | moon = np.zeros((2022, 2022), dtype=int) |

2.2. 빛 번짐
Nicolas P. Rougier, Contour-Dropshadow
scipy: gaussian_filter
- 빛이 번지는 효과를 구현합니다.
scipy의gaussian_filter를 사용합니다.
1 | from scipy.ndimage import gaussian_filter |

- 붉은 달이 떴습니다.
- 색은
cmap에 적절한 컬러맵을 입력해 조정합니다.
1 | fig, ax = plt.subplots(figsize=(5, 5)) |

2.3. 컬러맵 제작
seaborn.color_palette
matplotlib: Creating Colormaps in Matplotlib
- 검정에 가까운 어두운 색부터 밝은 노랑을 거쳐 흰색으로 이어지는 컬러맵이 필요합니다.
- 이런 컬러맵이 없으니 새로 만듭니다.
- 매우 어두운 노랑 ~ 조금 어두운 노랑(
y)까지 이어지는 팔레트를 먼저 만들고,
1 | cmap0 = sns.color_palette("dark:y", 20) |

- 조금 어두운 노랑(
y)에서 흰색으로 이어지는 팔레트를 새로 만듭니다. - seaborn의
color_palette()를 사용합니다.
1 | cmap1 = sns.color_palette("blend:y,w", 20) |

- 이 두 팔레트를 합쳐 Matplotlib colormap으로 출력합니다.
1 | from matplotlib.colors import ListedColormap |

- 이렇게 만든 컬러맵을 번진 달빛에 적용합니다.
1 | fig, ax = plt.subplots(figsize=(5, 5)) |

2.4. 보름달 + 빛 번짐
- 보름달 사진을 보면, 웬만큼 구름이 끼지 않고서야 달의 동그란 경계가 선명합니다.
- 빛 번짐 그림은 경계가 흐릿합니다.
- 여기 달 그림을 반투명하게 씌워 선명한 경계를 구현합니다.
- 달 그림 중에서 배경에 해당하는 부분은
numpy masked_array를 사용해 그리지 않습니다.
1 | fig, ax = plt.subplots(figsize=(5, 5)) |

- 달의 경계가 살아났습니다
- 마지막으로, x 축과 y 축을 없애고 그림만 남깁니다.
1 | fig.set_size_inches((10, 10)) |

- 모두 즐거운 한가위 되시기 바랍니다.