Plotlyãšã¯ïŒ
Plotlyã¯ãPythonãJavaScriptãRããã®ä»ã®èšèªã§å©çšå¯èœãªã€ã³ã¿ã©ã¯ãã£ãå¯èŠåã©ã€ãã©ãªã§ããD3.jsãšWebGLã䜿çšããŠãã©ãŠã¶ã§ã°ã©ããã¬ã³ããªã³ã°ããå€§èŠæš¡ãªããŒã¿ã»ããã§ããªãããªã€ã³ã¿ã©ã¯ãã£ããã£ãå®çŸããŸããPlotly ExpressïŒPythonïŒã¯é«éãªã°ã©ãäœæã®ããã®é«ã¬ãã«APIãæäŸããplotly.graph_objectsã¯è©³çްãªå¶åŸ¡ãå¯èœã«ããŸãã
- ããã©ã«ãã§ã€ã³ã¿ã©ã¯ãã£ã - ãããŒããŒã«ãããããºãŒã ããã³ãéžæ
- Webãã€ãã£ã - ãã©ãŠã¶ãJupyterããŒãããã¯ã§çŸããã¬ã³ããªã³ã°
- ã¯ãã¹ãã©ãããã©ãŒã - PythonãJavaScriptãRãJuliaãMATLAB
- Dashçµ±å - Plotlyã°ã©ãã§å®å šãªWebããã·ã¥ããŒããæ§ç¯
- ãšã¯ã¹ããŒããªãã·ã§ã³ - éçç»åïŒPNGãSVGãPDFïŒãŸãã¯ã€ã³ã¿ã©ã¯ãã£ãHTML
Plotly Expressã䜿ã£ãåºæ¬çãªæ£ã°ã©ãïŒPythonïŒ
Plotly Expressã¯ãPythonã§Plotlyã°ã©ããäœæããæãéãæ¹æ³ã§ããããŒã¿ãã€ã³ããŒãããŠæºåããåŸãæ£ã°ã©ãã«ã¯ãã£ã1è¡ã®ã³ãŒããå¿ èŠã§ãã以äžã¯æå°éã®äŸã§ãïŒ ```python import plotly.express as px data = {'Category': ['A', 'B', 'C', 'D'], 'Values': [23, 45, 56, 78]} fig = px.bar(data, x='Category', y='Values', title='åºæ¬çãªæ£ã°ã©ã') fig.show() ```
- px.bar()ã¯ããã©ã«ãã§çžŠæ£ãäœæ
- xãšyã¯ã«ããŽãªåãšå€åãå®çŸ©
- fig.show()ã§ã€ã³ã¿ã©ã¯ãã£ããªã°ã©ããã¬ã³ããªã³ã°
- JupyterããŒãããã¯ãColabãVS Codeãã¹ã¯ãªããã§åäœ
- color='åå'ã远å ãããšã«ããŽãªå¥ã«è²åããããæ£ã«
Plotlyã§ã®æ°Žå¹³æ£ã°ã©ã
orientation='h'ãèšå®ããxãšyã®å²ãåœãŠãå ¥ãæ¿ããããšã§åããå転ã§ããŸããæ°Žå¹³æ£ã°ã©ãã¯ãé·ãã«ããŽãªåãå€ãã®ã«ããŽãªãããå Žåã«é©ããŠããŸãã ```python fig = px.bar(data, x='Values', y='Category', orientation='h', title='æ°Žå¹³æ£ã°ã©ã') fig.show() ```
ã°ã«ãŒãåïŒã¯ã©ã¹ã¿åïŒæ£ã°ã©ã
colorãã©ã¡ãŒã¿ã䜿çšããŠãè€æ°ã®ç³»åã䞊ã¹ãŠè¡šç€ºããŸããPlotlyã¯åã«ããŽãªã®æ£ãèªåçã«ã°ã«ãŒãåããŸãã ```python import plotly.express as px df = px.data.medals_long() # ãµã³ãã«ããŒã¿ã»ãã fig = px.bar(df, x='nation', y='count', color='medal', barmode='group', title='åœå¥ãªãªã³ããã¯ã¡ãã«') fig.show() ```
- barmode='group'ã¯æ£ã䞊ã¹ãŠé 眮
- colorãã©ã¡ãŒã¿ã¯ããŒã¿ãå¥ã ã®æ£ç³»åã«åå²
- åè²ã¯å¡äŸé ç®ã«ãªã
- ãããŒã§åã ã®æ£ã®è©³çްã衚瀺
Plotlyã§ã®ç©ã¿äžãæ£ã°ã©ã
barmodeã'stack'ã«å€æŽãããšãç©ã¿äžãæ£ã°ã©ããäœæã§ããŸããbarmodeãæå®ããã«colorã䜿çšããå Žåã®ããã©ã«ãã®åäœã¯ç©ã¿äžãã§ãã ```python fig = px.bar(df, x='nation', y='count', color='medal', barmode='stack', title='ç©ã¿äžããªãªã³ããã¯ã¡ãã«') fig.show() ```
Plotlyæ£ã°ã©ãã®ã«ã¹ã¿ãã€ãº
Plotlyã¯ãupdate_layout()ã¡ãœãããšupdate_traces()ã¡ãœãããéããŠå¹ åºãã«ã¹ã¿ãã€ãºãæäŸããŸããè²ããã©ã³ããè»žãæ³šéãªã©ã倿Žã§ããŸãã
- fig.update_layout(title_font_size=24) - ã¿ã€ãã«ã¹ã¿ã€ã«ã®èª¿æŽ
- fig.update_traces(marker_color='blue') - æ£ã®è²ã®å€æŽ
- fig.update_xaxes(tickangle=45) - 軞ã©ãã«ã®å転
- color_discrete_sequence=['#1f77b4', '#ff7f0e'] - ã«ã¹ã¿ã ã«ã©ãŒãã¬ãã
- fig.add_annotation() - ä»»æã®å Žæã«ããã¹ã泚éã远å
JavaScriptã§ã®Plotlyæ£ã°ã©ã
barChartGuides.guides.plotly-bar-chart.content.sections.6.content
ã€ã³ã¿ã©ã¯ãã£ããã£ãšã¢ãã¡ãŒã·ã§ã³ã®è¿œå
Plotlyãããã©ã«ãã§ããŸãã¯æå°éã®èšå®ã§æå¹ã«ããã¢ãã¡ãŒã·ã§ã³ãšã€ã³ã¿ã©ã¯ãã£ãæ©èœã§ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããŸãã
- ãããŒããŒã«ããã - ããã©ã«ãã§æå¹ãhovertemplateã§ã«ã¹ã¿ãã€ãºå¯èœ
- ã¯ãªãã¯ã€ãã³ã - JavaScriptã®plotly_clickã€ãã³ãã䜿çšããŠã«ã¹ã¿ã ã¢ã¯ã·ã§ã³ãå®è¡
- ã¢ãã¡ãŒã·ã§ã³ - animation_frameãã©ã¡ãŒã¿ã远å ããŠã¢ãã¡ãŒã·ã§ã³é·ç§»ãå®çŸ
- ã¬ã³ãžã¹ã©ã€ã㌠- æç³»åæ¢çŽ¢ã®ããã«rangesliderã远å
- ãã¿ã³/ããããããŠã³ - updatemenusã§UIã³ã³ãããŒã«ã远å
Plotly vs ChartGen.aiã®äœ¿ãåã
Plotlyã¯ãããã°ã©ã ã«ããå¶åŸ¡ãäžå¯æ¬ ãªã€ã³ã¿ã©ã¯ãã£ããªããã·ã¥ããŒããããŒã¿ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããéçºè ã«é©ããŠããŸããããããè¿ éãªå¯èŠåãã³ãŒããæžããããªãå Žåã«ã¯ãChartGen.aiããããã§ãã·ã§ãã«ãªã°ã©ããžã®ããéãéãæäŸããŸãã
- Plotlyãéžã¶å ŽåïŒã¢ããª/ããã·ã¥ããŒãã®æ§ç¯ãããã°ã©ã ã«ããæŽæ°ãå¿ èŠãè€éãªã€ã³ã¿ã©ã¯ãã£ããã£ãå¿ èŠ
- ChartGen.aiãéžã¶å ŽåïŒè¿ éãªåçºã°ã©ããã³ãŒãã£ã³ã°ãé¿ãããã峿ãšã¯ã¹ããŒããå¿ èŠãã¯ã©ã€ã¢ã³ããã¬ãŒã³ããŒã·ã§ã³
- ChartGen.aiã®å©ç¹ïŒããŒã¿ã貌ãä»ããã ãã§æ°ç§ã§ã°ã©ããååŸ - ã©ã€ãã©ãªèšå®äžèŠ
- Plotlyã®å©ç¹ïŒå®å šãªå¶åŸ¡ãã¢ãã¡ãŒã·ã§ã³ãã«ã¹ã¿ã ã¯ãªãã¯ãã³ãã©
ã¹ããããã€ã¹ãããïŒPlotlyããŒãã£ãŒãïŒPythonãšJavaScriptã§äœãã€ã³ã¿ã©ã¯ãã£ããªæ£ã°ã©ãã®äœææ¹æ³
Plotlyãã€ã³ã¹ããŒã«
PythonïŒpip install plotlyãJavaScriptïŒCDNçµç±ã§ã€ã³ã¯ã«ãŒãããããnpm install plotly.jsã
ã©ã€ãã©ãªãã€ã³ããŒã
PythonïŒimport plotly.express as pxãJavaScriptïŒã¹ã¯ãªããã¿ã°ãŸãã¯importæãã€ã³ã¯ã«ãŒãã
ããŒã¿ãæºå
ããŒã¿ãã«ããŽãªåãšå€åãæã€DataFrameïŒPythonïŒãŸãã¯ãªããžã§ã¯ãã®é åïŒJavaScriptïŒãšããŠæŽçããŸãã
æ£ã°ã©ããäœæ
PythonïŒfig = px.bar(df, x='category', y='value')ãJavaScriptïŒPlotly.newPlot('div', data)ã
å€èгãã«ã¹ã¿ãã€ãº
Pythonã§ã¯update_layout()ãupdate_traces()ããJavaScriptã§ã¯ã¬ã€ã¢ãŠã/èšå®ãªããžã§ã¯ãã䜿çšããŸãã
衚瀺ãŸãã¯ãšã¯ã¹ããŒã
fig.show()ã§ã€ã³ã¿ã©ã¯ãã£ã衚瀺ãfig.write_image()ã§éçãšã¯ã¹ããŒãããŸãã¯fig.to_html()ã§Webåã蟌ã¿ã
ãããã質å
Plotlyã¯ç¡æã§äœ¿çšã§ããŸããïŒ
Plotlyã®æ£ã°ã©ããç»åãšããŠä¿åããã«ã¯ã©ãããã°ããã§ããïŒ
ã³ãŒãã£ã³ã°ãªãã§Plotlyã䜿çšã§ããŸããïŒ
Plotlyã§ç©ã¿äžãæ£ã°ã©ããäœæããã«ã¯ã©ãããã°ããã§ããïŒ
æ£ã°ã©ãã«ãããPlotly vs MatplotlibïŒ
ã³ãŒãã£ã³ã°ããã«æ£ã°ã©ããäœæããæãéãæ¹æ³ã¯äœã§ããïŒ
é¢é£ã¬ã€ã
æ£ã°ã©ãïŒæ£ã°ã©ããšæ£ã°ã©ãã®å®å šã¬ã€ã
æ£ã°ã©ãã®ç©¶æ¥µã¬ã€ã - ãã¹ãŠã®çš®é¡ããã¹ããã©ã¯ãã£ã¹ãåŠã³ããªã³ã©ã€ã³ã§ç¡æã§äœæããŸãã
ç©ã¿äžãæ£ã°ã©ãïŒç©ã¿äžãæ£ã°ã©ãã®äœæãšäœ¿çšã«é¢ããå®å šã¬ã€ã
å æ¬çãªã¬ã€ããšç¡æãªã³ã©ã€ã³ããŒã«ã§ç©ã¿äžãæ£ã°ã©ãã®äœæãšè§£éãåŠã³ãŸãã
ã°ã«ãŒã忣ã°ã©ãïŒã¯ã©ã¹ã¿ãŒåæ£ã°ã©ãã®äœæãšäœ¿ç𿹿³
ã«ããŽãªéã§è€æ°ã®ããŒã¿ç³»åãæšªã«äžŠã¹ãŠæ¯èŒããããã®ã°ã«ãŒã忣ã°ã©ãããã¹ã¿ãŒããŸãã
