오늘은 위의 그래프를 만들어 볼 것입니다.
흠 우선 이번에도 matplotlib 의 subplots를 사용해보면 좋겠네요.
상위 3개의 국가 그래프에는 빨간색을 칠해야하고 각 그래프의 위쪽에는 해당 국가의 컨텐츠 수를 써야합니다.
그리고 500개 단위로 라인을 그어줘야 하고 오른쪽에는 Insight 텍스트까지 넣어보면 되겠네요.
하나하나 코드를 다 뜯어서 어떤 식으로 전개되는지 해봅시다 !
불필요한 데이터들을 계속해서 정리해주는 작업을 합니다 .
동시에 필요한 컬럼들을 생성합니다.
'counts' 값이 많은 순서대로 내림차순
저번 시간에 해봤던 반복문을 통한 주석달기.
정말 유용하게 쓸 수 있음 !
# Remove border from plot
for s in ['top', 'left', 'right']:
ax.spines[s].set_visible(False)
part1에서 했던 것처럼 표의 아래 부분만 남겨두고 선을 다 지워줍니다.
# Tick labels
ax.set_xticklabels(data.index, fontfamily='serif', rotation=0)
디테일하게 x축의 라벨들도 잡아줍니다.
보시면 폰트가 미세하게 변경된 것을 확인할 수 있습니다.
# Title and sub-title
fig.text(0.09, 1, 'Top 10 countries on Netflix', fontsize=15, fontweight='bold', fontfamily='serif')
fig.text(0.09, 0.95, 'The three most frequent countries have been highlighted.',
fontsize=12, fontweight='light', fontfamily="serif")
fig.text(1.1, 1.01, 'Insight' , fontsize=15, fontweight='bold', fontfamily='serif')
fig.text(1.1, 0.67, '''
The most prolific producers of
content for Netflix are, primarily,
the USA, with India and the UK
a significant distance behind.
It makes sense that the USA produces
the most content as, afterall,
Netflix is a US company.
'''
, fontsize=12, fontweight='light', fontfamily='serif')
ax.grid(axis='y', linestyle='-', alpha=0.4)
grid_y_ticks = np.arange(0, 4000, 500) # y ticks, min, max, then step
ax.set_yticks(grid_y_ticks)
ax.set_axisbelow(True)
fig.text는 텍스트를 설정 합니다.
파라미터를 살펴보면 x,y 축의 좌표를 통해 텍스트의 위치를 정해주네요.
그 외에도 y축에 0-4000까지 500 단위로 건너 뛰며 증가하는 것을 설정해줍니다.
tick_params 은 x축,y축 혹은 x,y축 둘다 라벨에 효과를 줄 때 사용합니다.
plt.tick_params(axis='both', direction='in', length=3, pad=6, labelsize=14)
예를 들어 이렇게 사용하면,
tick_params() 함수를 이용해서 그래프의 틱 (tick)과 관련된 설정을 할 수 있습니다.
axis=’both’로 설정하면 x, y 축의 틱이 모두 적용됩니다.
direction=’in’으로 틱의 방향을 그래프 안 쪽으로 설정했습니다.
틱의 길이 (length)를 3으로, 틱과 레이블의 거리 (pad)를 6으로 설정합니다.
틱 레이블의 크기 (labelsize)를 14로 설정했습니다.
# Axis labels
# thicken the bottom line if you want to
plt.axhline(y=0, color='black', linewidth=1.3, alpha= .7) # axhline은 수평선을 긋습니다.
ax.tick_params(axis='both', which='major', labelsize=12)
import matplotlib.lines as lines
l1 = lines.Line2D([1, 1], [0, 1], transform=fig.transFigure, figure=fig,color='black',lw=0.2)
fig.lines.extend([l1])
ax.tick_params(axis=u'both', which=u'both',length=0) # length = 길이의 단위를 포인트 단위로 틱합니다.
plt.show()
완성 !!