표로 이름 브랜딩하기
결론
재미도 있고 유익도 있으면 좋겠다 :)
만들기
3개의 라이브러리를 import 한다.
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns;
sns.set()
matplotlib.pyplot 를 사용해 text 를 넣고 이미지로 저장 후 해당 이미지를 데이터로 읽는 방식이다.
def make_name(name, N=1000, rseed=42):
fig, ax = plt.subplots(figsize=(3, 1))
fig.subplots_adjust(left=0, right=1, bottom=0, top=1)
ax.axis('off')
ax.text(0.5, 0.4, name, va='center', ha='center', weight='bold', size=85)
fig.savefig('name.png')
plt.close(fig)
from matplotlib.image import imread
data = imread('name.png')[::-1, :, 0].T
rng = np.random.RandomState(rseed)
X = rng.rand(3 * N, 2)
i, j = (X * data.shape).astype(int).T
mask = (data[i, j] < 1)
X = X[mask]
X[:, 0] *= (data.shape[0] / data.shape[1])
X = X[:N]
return X[np.argsort(X[:, 0])]
이름의 길이에 따라서 get_cmap 두 번째 파라미터는 수정해야한다.
X = make_name('APELTOP')
colorize = dict(c=X[:, 0], cmap=plt.cm.get_cmap('rainbow', 7))
plt.scatter(X[:, 0], X[:, 1], **colorize)
plt.axis('equal')
X = make_name('DATA X LEARN')
colorize = dict(c=X[:, 0], cmap=plt.cm.get_cmap('rainbow', 10))
plt.scatter(X[:, 0], X[:, 1], **colorize)
plt.axis('equal')
정보 출처 : 제이크 밴더플래스. 『파이썬 데이터 사이언스 핸드북』