[Data Visualization] 시각화 연습 - Netflix Data Visualization 2

반응형

오늘은 위의 그래프를 만들어 볼 것입니다. 

흠 우선 이번에도 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()

 

완성 !!

반응형