๐ Pandas ์๊ฐํ 2 - plotly
2. plotly
๐ ์ด๋ฒ ํฌ์คํ
์์๋ iplot๋ณด๋ค ์ธ์ฌํ๊ฒ ์๊ฐํ๊ฐ ๊ฐ๋ฅํ plotly
์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค.
2.1. plotly ์ฌ์ฉํ๊ธฐ
๐ ๋จผ์ plotly๋ฅผ ์ค์นํด์ค์๋ค!!
!pip install plotly
๐ ์ด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ํฌํธํ๊ฒ ์ต๋๋ค.
import plotly.graph_objects as go
import plotly.offline as pyo
pyo.init_notebook_mode()
๐ iplot๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก plotly ์ญ์ ์ฌ๋ฌ๊ฐ์ง ๊ทธ๋ํ ํ ๋ง๊ฐ ์๋๋ฐ, plotly ์์๋ ์ด๊ฒ์ template์ด๋ผ๊ณ ํฉ๋๋ค. template ๋ชฉ๋ก์ ํ๋ฒ ์์๋ณด๊ฒ ์ต๋๋ค.
import plotly. io as pio
pio.templates
>>
Templates configuration
-----------------------
Default template: 'plotly'
Available templates:
['ggplot2', 'seaborn', 'simple_white', 'plotly',
'plotly_white', 'plotly_dark', 'presentation', 'xgridoff',
'ygridoff', 'gridon', 'none']
2.2. ๊ธฐ๋ณธํํ
๐ ๊ธฐ๋ณธ์ ์ธ ํํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- fig = go.Figure()
- fig.add_trace( go.๊ทธ๋ํ์ข ๋ฅ( x = data1, y = data2 ) )
- fig.update_layout()
- fig.add_annotation()
- fig.show()
- ๐ iplot์ ๋ฐ์ดํฐํ๋ ์์์ ๋ฐ๋ก ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆด ์ ์์ง๋ง ( Dataframe.iplot( ~ ) ) plotly๋ x์ถ๊ณผ y์ถ์ ๊ฐ์ ์ง์ ํด์ค์ผ ํฉ๋๋ค!!
2.2.1. fig.add_trace( )
๐ fig.add_trace( )
ํจ์๋ฅผ ๊ฐ์ง๊ณ ๊ทธ๋ํ์ ์ข
๋ฅ์ ๋ฐ์ดํฐ, ๊ทธ๋ํ์ ์ต์
์ ์ง์ ํฉ๋๋ค.
๐์ธ์
go.๊ทธ๋ํ ์ข ๋ฅ( )
- ๊ทธ๋ํ ์ข ๋ฅ ์ง์ ๋ฐ ์ต์ ์ง์ ex) go.Scatter, go.Bar, go.Heatmapx, y
- ๋ฐ์ดํฐ ์ง์ mode
- ๊ทธ๋ํ์ ์ธ๋ถ ํํ ์ง์ ex) mode = โlines+markers+textโmarker_color
- marker์ ์์ ์ง์ text
- mode์ text์ ๋ค์ด๊ฐ ๋ด์ฉ์ ์์ฑtextposition
- text์ ์์น ์ง์ ex) textposition = โtop centerโ / textposition = โautoโtextfont_size
- text์ ํฌ๊ธฐ ์ค์ texttemplate
- ์ ๊ทํํ์์ผ๋ก ๊ทธ๋ํ์ text ํํ๋ฅผ ์ ์ธํด์คname
- ์ฃผ๋ก ํ๋์ figure ๊ฐ์ฒด์ ๋๊ฐ ์ด์์ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆด๋ legend(์ฃผ์) ์ต์ ์ง์
๐ ํ๋์ figure ๊ฐ์ฒด์ ์ฌ๋ฌ๊ฐ์ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฌ๋ ค๋ฉด add_trace( )๋ฅผ ์ฌ๋ฌ๊ฐ ์ ์ธํด์ฃผ๋ฉด๋ค๋ฉ๋๋ค.
2.2.2. fig.update_layout( )
๐ fig.update_layout( )
ํจ์๋ฅผ ๊ฐ์ง๊ณ ๊ทธ๋ํ๊ฐ ๋ค์ด๊ฐ ๋ฐฐ๊ฒฝ์ ๋ํ ์ ๋ณด๋ฅผ ์ง์ ํฉ๋๋ค.
๐ ๋์ ๋๋ฆฌ ํํ๋ก ์ ์ธํฉ๋๋ค.
๐ iplot ์ layout๊ณผ ์ ์ฌํ ๋๋์ด๋ผ๊ณ ๋ณด์๋ฉด ๋ ๊ฑฐ ๊ฐ์ต๋๋ค!!
๐ ์ธ์
title
- text, font, size, color, x/yshowlegend
: True / False- ์ฃผ์ ํ์ ์ฌ๋ถxaxis / yaxis
: title, showticklabels, dtick, tick0, tickfontautosize
: True / False - figure ๊ฐ์ฒด์ ํฌ๊ธฐ ์ง์ - False ์ธ ๊ฒฝ์ฐ - โheightโ : ~, โwidthโ : ~
'template'
: โtemplate_nameโ - figure๊ฐ์ฒด์ template ์ง์
2.2.3. fig.add_annotation( )
๐ fig.add_annotation( )
ํจ์๋ฅผ ๊ฐ์ง๊ณ ๊ทธ๋ํ์์ ๊ฐ์กฐํ ๋ถ๋ถ์ annotation์ ์์ฑํฉ๋๋ค.
๐ ๋์ ๋๋ฆฌ ํํ๋ก ์ ์ธํฉ๋๋ค.
๐ ์ธ์
x / y
: ~ - annotation ์ด ๊ธ์ด๊ฐ ์ง๊ด์ ์ธ ์์น ์ง์ ex) x = โ2020-03-05โ, y = 9456text
: ~ - annotation ๋ด์ฉfont
- size, color-
align
: ~ - text ์ ๋ ฌ ์์น ์ค์ ex) โalignโ : โcenterโ showarrow : True / False
- ํ์ดํ ํ์ ์ฌ๋ถ ์ค์ arrowhead : ~
- ํ์ดํ ๋จธ๋ฆฌ ์ข ๋ฅ ์ง์ ex) โarrowheadโ : 2arrowsize : ~
- ํ์ดํ ๋จธ๋ฆฌ ํฌ๊ธฐ ์ง์ ex) โarrowsizeโ : 1arrowwidth : ~
- ํ์ดํ ๋๋น ์ง์ ex) โarrowwidthโ : 2-
arrowcolor : ~
- ํ์ดํ ์ ์ง์ bordercolr : ~
- annotation์ ๋ฐ๊นฅ ์ ์ ์ง์ borderwidth : ~
- ๋ฐ๊นฅ ์ ๋๋น ์ง์ ex) โborderwidthโ : 2borderpad : ~
- text ๊ฐ ๋ค์ด๊ฐ ๊ณต๊ฐ ์ง์ ex) โborderpadโ : 7-
bgcolor : ~
- annotation ๋ฐฐ๊ฒฝ์ ์ง์ ax / ay : ~
- ์ง๊ด์ ์ธ ์์น ๊ธฐ์ค annotation์ ์ธ๋ถ ์์น ์ค์ ex) โaxโ : 20, โayโ : -50ax
- 0 (๊ฐ์ด๋ฐ) ๊ธฐ์ค์ผ๋ก ์์๋ฉด ์ค๋ฅธ์ชฝ, ์์๋ฉด ์ผ์ชฝay
- 0 (๊ฐ์ด๋ฐ) ๊ธฐ์ค์ผ๋ก ์์๋ฉด ์๋์ชฝ, ์์๋ฉด ์์ชฝ
opacity : ~
- annotation ํฌ๋ช ๋ ์ค์ . ์์์๋ก ํฌ๋ช ํด์ง ex) โopacityโ : 0.9
2.2.4. fig.show( )
๐ fig.show( )
ํจ์๋ ์ง๊ธ๊น์ง ์ค์ ํ figure ๊ฐ์ฒด๋ฅผ ๋ณด์ฌ์ค๋๋ค.
๐ ์ฌ๊ธฐ๊น์ง ํด์ plotly ์ ๊ธฐ๋ณธ ๊ตฌ๋ฌธ์ ๋ชจ๋ ์์๋ณด์์ต๋๋ค. ์ด์ ์ค์ ๋ก๋ ์ด๋ป๊ฒ ์ฌ์ฉ๋๋์ง ์์๋ณด๋๋ก ํฉ์๋ค๐.
2.3. ์ฝ๋
import plotly.graph_objects as go
import plotly.offline as pyo
pyo.init_notebook_mode()
import plotly.io as pio
fig = go.Figure()
fig.add_trace(
go.Bar(
x = Dataframe.index, y = Dataframe['column'], text = Dataframe['column'], marker_colors = colors
))
fig.update_layout(
{
'title' : {'text':, 'font':{'size':, 'color':}},
'xaxis' : {'title':, 'font':, 'showticklabels':, 'tick0':, 'dtick':, },
'yaxis' : {'title':, 'font':, 'showticklabels':, 'tick0':, 'dtick':, },
'showlegend': ,
'autosize' : False,
'height' : ,
'width' : ,
'template' :
})
fig.add_annotation(
{
'x': , 'y': ,
'text' : ,
'font' : {'size' : , 'color' : },
'align' : 'center',
'showarrow' : True,
'arrowhead' : 2,
'arrowsize' : 1,
'arrowwidth' : 2,
'arrowcolor' : ,
'bordercolor' : ,
'borderwidth' : 2,
'borderpad' : 3,
'bgcolor' : ,
'ax' : 20, 'ay' : -50,
'opacity' : 0.9
})
fig.show()
๐ฉ (2022.10.25 ์ถ๊ฐ) ์ ํํ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ์์๋ฅผ ํตํด์ ์์๋ณด๋๋ก ํฉ์๋ค!!
fig = go.Figure()
fig.add_trace(
go.Bar(
x = density_2013_tot_top10.index, y = density_2013_tot_top10['pop/area'],
marker_color = colors
)
)
fig.update_layout(
{
'title' : {
'text' : '<b>Population / Area about total ages in 2013</b>',
'font' : {'size' : 20},
'x' : 0.5
},
'xaxis' : {'title' : {'text' : 'Abbreviation'}, 'showticklabels' : True},
'yaxis' : {'title' : {'text' : 'pop/area'}, 'showticklabels' : True, 'dtick' : 1000},
'template' : 'plotly_white'
}
)
fig.add_annotation({
'x' : "DC",
'y' : 9550,
'text' : 'pop / area in DC',
'showarrow' : True,
'font' : {'size' : 10, 'color' : 'white'},
'align' : 'center',
'arrowhead' : 2,
'arrowsize' : 1,
'arrowwidth' : 2,
'arrowcolor' : '#04BFAD',
'ax' : 20, 'ay' : -50,
'bordercolor' : '#04BFAD',
'borderwidth' : 2,
'borderpad' : 7,
'bgcolor' : '#F25C5C',
'opacity' : 0.9
})
fig.show()
๐ fig.add_trace( )
์ marker_colors
์ธ์๋ฅผ ์ ์ค์ ํด ์ฃผ๋ฉด ์์ ์์์ฒ๋ผ ํ๋์ ๋ฐ์ดํฐ๋ง ๊ฐ์กฐํ๋ ๊ฒ๋ ํ ์ ์์ต๋๋ค. ์ด ๋ฐฉ๋ฒ์ ๋ค์ ํฌ์คํ
์์ ๊ฐ๋ณ๊ฒ ์์๋ณผ ์์ ์
๋๋ค.
๐ figure = go.Figure( )
๋ก figure ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ fig.add_trace( )
๋ก ๊ทธ ์์ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ ค์ค๋๋ค. ๊ทธ ํ์ fig.update_layout( )
๊ณผ fig.add_annotation( )
์ ๊ฐ์ง๊ณ ์ธ๋ถ์ ์ธ ์กฐ์ ์ ํด์ฃผ๋ฉด ์ด๋ ๊ฒ ๊น๋ํ๊ณ ์ง๊ด์ ์ธ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆด ์ ์์ต๋๋ค๐.
๐ ์์ง ์๊ฐํ ๊ฒฝํ์ด ๋ถ์กฑํด์ ๊ฐ ๊ทธ๋ํ ํํ์ ์ต์ํ์ง๋ ์์ง๋ง, ์ด๋ค ๋ฐ์ดํฐ์ ์ด๋ค ๊ทธ๋ํ๊ฐ ์ ํฉํ์ง๋ ๋ฏธ๋ฆฌ ์์๋ฌ์ผ๊ฒ ์ต๋๋ค๐โโ๏ธ
Leave a comment