ããã±ãŒãžãæ¬åœã«æ¥œããã§ããŸããå ±æããŠãããŠããããšãã
ããã¯ææ¡ãããæ¹åã§ãããå®å šã«pythonicã§ã¯ãããŸããã ãããããã¯ãd3jsãããã§ã¯ãããŸãã:)
ãã£ã®ã¥ã¢ã®èšå®ãµã€ãºãç»é¢ã«åæ ãããã®ã¯çŽ æŽãããããšã§ããããã£ã³ãã¹ãµã€ãºãå¢çdivã«èšå®ãããã®divãµã€ãºããã©ãŠã¶ã®å¹ ãªã©ã§æ±ºå®ã§ããããã«ãããªãã·ã§ã³ããããšãå¿çæ§ãé«ããªãããšæããŸããããã§ãªããã°ãéçºè ã¯æãã§ããŸãã
ãããå®è¡ããããã«ã_js.pyãš_object.pyãããããåã䟡å€ã¯ãããŸããïŒ
äœãæ±ããŠããã®ãããããããŸãã... matplotlibã®å³ããã€ã³ãåäœã®å³ã®ãµã€ãºãååŸããmatplotlibã®å³ããdpiãååŸããŸãã ãããå€æŽããããšãã©ã®ããã«ææ¡ããŠããŸããïŒ ããããšã
Pythonã§èšå®ããã絶察å³åœ¢ãµã€ãºã䜿çšããã®ã§ã¯ãªãã次ã®ãããªæå³ã§ãã
<div id='parent' class='figsizeinfo'>
//mpld3 generated code
</div>
ããã§ãfigsizeinfoã¯ãµã€ãºã®CSSä»æ§ã§ãããmpld3ã¯divãåããŸãã ïŒç§ã®çµéšã§ã¯ããããflotjsã®ä»çµã¿ã§ãïŒ
ããŒã...ãã®è³ªåã¯ç§ã®Webé¢é£ã®çµéšããªãããšãè£åããããããŸããããSVGïŒmpld3ã䜿çšïŒã¯å®å šã«ãã¯ã»ã«ããŒã¹ã§ãããç°¡åã«å€æŽããããšã¯ã§ããªããšæããŸããã flotjsã¯SVGãŸãã¯ä»ã®ä»æ§ã䜿çšããŠããŸããïŒ
SVGïŒScalable Vector FormatïŒã°ã©ãã£ãã¯ã¯ããã¯ã»ã«ããŒã¹ã§ã¯ãªããã¯ãã«ããŒã¹ã§ãã
ããã¯ããŠã£ã³ããŠãµã€ãºã«åãããŠæ¡å€§çž®å°ããããã©matplotlibã§çæãããSVGç»åã®äŸã§ãã
http://bleepshow.pithy.io/SVG_Example
ïŒããªãã®äŸãã¯ã£ãããšãªãããŸããïŒ
d3jsãšãã¹ãŠã®ãã£ã³ãã¹ã®æç»å³ã¯ãç§ãç解ããŠããéããã¯ãã«ã§ããããããããå®è¡ã§ããã¯ãã§ãã
ããªãã¯ã¯ãç§ãæ³åãããèšå®ããããšã§ã
figwidth = $(â#parentâ).width //(jquery based, but you get the point )
ããããã
figwidth = figsize[0] * dpi;
ã¯ããSVGããã¯ã¿ãŒããŒã¹ã§ããããšã¯ç¥ã£ãŠããŸããã誀解ããªãéãããã£ã³ãã¹ã®ãµã€ãºãããŒã«ãŒã®ãµã€ãºãããã³ç»é¢äžã®ããŒã«ãŒã®äœçœ®ã¯ãã€ã³ãã§æž¬å®ãããŸãã ä»»æã®ãŠã£ã³ããŠãµã€ãºã§ä»»æã®å³åœ¢ã«æ£ããã¹ã±ãŒãªã³ã°ããSVGã³ãŒããäœæããã®ã¯éåžžã«è€éãªããã§ãã
ãããããšãŠãç°¡åã§ãã
ãããç§ãããªãã®fig_to_d3ã³ãŒãã«é©çšããããã¯ã§ãïŒ
print mpld3.fig_to_d3(fig).replace("\n","\r").replace("var figwidth = 8.0 * 80","var figwidth = $(window).width()*.9;").replace("var figheight = 6.0 * 80","var figheight = $(window).height()*.9;")
ããã¯æ¬¡ã®ããã«è¡šç€ºãããŸãïŒ
http://bleepshow.pithy.io/mpld3_window_scale_test
ããŠãã©ãã«ã¯ééã£ãå Žæã«ãããŸãããããããŸãã絶察ã«å³ã§ã¯ãªããdivãžã®äœçœ®ãåç §ããã ãã®åé¡ã§ãã ããããç§ãç¥ãéããå³ã®ã¬ã³ããªã³ã°ã¯ããŸãæ©èœããŸãã
ïŒããã¯ãæŽæ°ããªãéããµã€ãºå€æŽãããªãããšã«æ³šæããŠãã ããããã ããå°ãæ¥çå€ã䜿çšãããšããããç°¡åã§ãïŒ
ç§ã¯çŸåšãããã«åºã¥ãããœãªã¥ãŒã·ã§ã³ãèªåã§ä»®åžè£ ããŠããŸãããã«ãªã¯ãšã¹ãã«é©ãããã®ã«ä»äžããããšãã§ããŠããããã§ãã
mpld3ãã£ã®ã¥ã¢ã®ã¬ã¹ãã³ã·ããµã€ãºã¯æ¬åœã«äŸ¿å©ã§ãã ãããïŒããŒã«ããŒã®ïŒãã¿ã³ã§è¿œå ãããšãçŸåšã®å³ãæ°ãããŠã£ã³ããŠã§éãããšãã§ããå³å šäœã®ãµã€ãºãç°¡åã«å€æŽã§ããŸãã
+1
@hadim ãpythonicãã®ãŸãŸã«ããŠããããã®ã§ã
mpld3.fig_to_d3(fig,size="adaptive")
è¯ãããªã¬ãŒã«ãªããŸã
åæããŸã ïŒ
ãã£ã®ã¥ã¢ã®ãµã€ãºãå€ããã®ã¯ç°¡åã ãšæããŸãã ããããå šäœãšããŠããããè¯ãèãã ãšã¯ãŸã 確信ããŠããŸããã å³åœ¢ã®ãµã€ãºãå€æŽãããšããã¹ãŠã®ç·å¹ ãããŒã«ãŒã®äœçœ®ãããŒã«ãŒã®ãµã€ãºããã©ã³ãã®ãµã€ãºãªã©ããããã³ã°ããå¿ èŠããããŸããããã«ãããã³ãŒããéåžžã«è€éã«ãªãã倧ããªã¡ãªããã¯ãããŸããã ãŸããå¡äŸã軞ã©ãã«ãããã³ãã®ä»ã®ããããã£ã®æ£ããé 眮ã¯ãå éšã®å³åœ¢ã®ãµã€ãºãšdpièšå®ã«åºã¥ããŠä»®å®ãè¡ãplt.drawïŒïŒã³ãã³ãã«äŸåããŸããæ£çŽãªãšããããããç°¡åã«åé 眮ã§ãããã©ããã¯ããããŸããã -äºåŸã«èª¿æŽã
ãã®mpld3ã®å²åŠã¯ãmatplotlibã®å³ã®å 容ãå¯èœãªéãåæ ããåçŽãªåºåãçæããããšã§ãã åºåå³åœ¢ã®ãµã€ãºãå€æŽããå Žåã¯ãmatplotlibå³åœ¢ã®ãµã€ãºã調æŽããããšããå§ãããŸãã ãã以å€ã®ãã®ã¯ãå®è£ ããã¹ããããã³ä¿å®ãããã«å€§ããªé çã®çš®ã«ãªãããã§ãã
ãã©ã°ã€ã³ã¯ã©ãã§ããïŒ
plugins.connect(fig, plugins.ResponsiveSize())
ãã©ã°ã€ã³ã¯ãããããããè¡ãããã®è¯ãæ¹æ³ã§ãããã ããããç¹°ãè¿ãã«ãªããŸããããã©ã³ããµã€ãºãç·å¹ ãããŒã«ãŒãµã€ãºãå¡äŸã®å Žæã軞ã®ããã¹ãã®å Žæãã©ã®ããã«èª¿æŽããŸããïŒ ããããã¹ãŠã®åé¡ãããããããµã€ãºå€æŽããµããŒãããããã®åºç¯ãªã€ã³ãã©ã¹ãã©ã¯ãã£ããªããã°ããã®ãããªãã©ã°ã€ã³ã®æçšæ§ã¯éåžžã«éãããŠãããšæããŸãã
@jakevdpç§ã¯åæããŸããïŒäžèšã®3ç§éã®ããã¯ã§èŠããã ã®ã¯ã©ãã«ã®å Žæã ãã§ãããç¹°ãè¿ãã«ãªããŸãããããã¯ããè¯ãjavascriptãæžãããšã®åé¡ã§ãã DOMã䜿çšãããšãå€ãã®äœæ¥ãè¡ãããšãªãã絶察äœçœ®ãšçžå¯Ÿäœçœ®ã䜿çšã§ããŸãã
çŸåšã®ã³ãŒãã®å®è£ æ¹æ³ã§ã¯ããã¹ãŠãå³ã«ããŒãã³ãŒããããŠããŸãã å°ãã®äœæ¥ã§ãå¹ /é«ããç·ã®å€ªããããã³ãã©ã³ããµã€ãºãdivãµã€ãºã«å¯ŸããŠç·åœ¢ã«ã¹ã±ãŒãªã³ã°ã§ããŸãã æãé£ããéšåã¯ã¢ã¹ãã¯ãæ¯ã§ããããããããã¯ããããšãã§ããŸãã ã¢ã¹ãã¯ãæ¯ãããã¯ããããšããã¹ãŠãç·åœ¢ã«ã¹ã±ãŒãªã³ã°ããã®ã¯éåžžã«ç°¡åã§ã
@hadimããã¯è¯ãèãã§ãã
ç§ã¯d3.jsãç¥ããªãã®ã§ãäœãããããŸããã ããããç§ãã¡ã¯svgãã¡ã€ã«ã«åãçµãã§ããã®ã§ãç§ãã¡ã¯ãããç°¡åã«è¡ãããšãã§ããªããšã¯æ¬åœã«æ³åããŠããŸãã...
ãããäœãããã®æè¯ã®æ¹æ³ã«ã€ããŠèãå§ããããã®ããã€ãã®ãªã³ã¯ïŒ
@dansteingartã®å Žåã¯+1ã ãã¹ãŠã®SVGã®å éšã®é·ããšäœçœ®ãçžå¯Ÿåº§æšã«èšå®ããåºåã®åã«viewBoxã䜿çšããŠå³å šäœã®ãµã€ãºãå€æŽããfigsize matplotlibãã©ã¡ãŒã¿ãŒãšäžèŽãããŸãïŒãŸãã¯ä»ã®å Žåã¯å¿çããŸãïŒã
@ dansteingart-ååãªJSããã¯ãããã°ããããæ©èœãããããšãã§ããããšã«åæããŸãã ããããããã«ãããããããç§ã¯ãã®æ©èœãå«ããããã«ãã®ããã±ãŒãžãæ ¹æ¬çã«å€æŽããããšããµããŒãããŠããŸããã
ã©ãããŠïŒ ããŠã1ã€ã®éšåã¯ãããããèŠçŽ ãå³ã®ãµã€ãºãªã©ãmatplotlibã€ã³ã¿ãŒãã§ã€ã¹ãä»ããŠå®çŸ©ããå¿ èŠããããšããããã±ãŒãžã®åè¿°ã®å²åŠã«åããããšã§ãã
2ã€ç®ã¯ãããã¯ãå¿ é ãæ©èœã§ã¯ãªãããšã§ãããã®ãããªå¿ é ã§ã¯ãªãæ©èœã®ã³ãŒãããŒã¹ãå€§å¹ ã«è€éã«ãããšãé·æçã«ã¯ããã±ãŒãžã«æªåœ±é¿ãåãŒããŸãã ããããªããããªãã®ãã«ã€ããŠã®èæ¯ã«ã€ããŠã¯ãæšå¹Žã®SciPyã§ã®@ellisonbgã®è¬æŒãåç §ããŠãã ããã
ãã®çš®ã®åäœãè¿œå ãããã©ã°ã€ã³ã䜿çšãããå Žåã¯ãããããã ãããããŸãæ©èœããå Žåã¯ã plugins
ã¢ãžã¥ãŒã«ã«å«ãã䟡å€ããããããããŸããã ããããã©ããªã«ã¯ãŒã«ã§ãã£ãŠããããã±ãŒãžã®å²åŠã«åããæ°æ©èœã®åºæ¬çãªå³åœ¢ã¬ã€ã¢ãŠãã®å€§å¹
ãªå€æŽã«ã¯åºãå察ããŠããŸãã
ç§ã¯ããã«å·»ã蟌ãŸããŠãããšããã§ãããããçš®ã®ãã©ã°ã€ã³ããããçš®ã®èå³æ·±ãã¬ã¹ãã³ã·ããªãã£ã®ã¥ã¢ã®ãµã€ãºå€æŽåäœãå®çŸã§ããããã«æããŸãã @dansteingartã¯ãæ©èœã®ã¢ã€ãã¢ãšãç¹å®ã®æ¹æ³ã§æ©èœã®å®è£ ãéå§ãã䟡å€ããããã©ããã«ã€ããŠã®è³ªåãããã®ã¹ã¬ãããéå§ããŸããã 質åãžã®åçãšããŠããã©ã°ã€ã³ããå§ããŠã_objects.pyãŸãã¯_js.pyãå€æŽããã«ãã©ã°ã€ã³ãã©ããŸã§é²ãããšãã§ãããã確èªããããšããå§ãããŸãã ããããããããªãããããæãã§ãããªããç§ã¯äžæ©äžãã£ãŠãç§ãã¡ã解決ããããšããŠããåé¡ã«ã€ããŠè©±ããããšæããŸãïŒ
ãã£ã®ã¥ã¢ã®èšå®ãµã€ãºãç»é¢ã«åæ ãããã®ã¯çŽ æŽãããããšã§ããããã£ã³ãã¹ãµã€ãºãå¢çdivã«èšå®ãããã®divãµã€ãºããã©ãŠã¶ã®å¹ ãªã©ã§æ±ºå®ã§ããããã«ãããªãã·ã§ã³ããããšãå¿çæ§ãé«ããªãããšæããŸããããã§ãªããã°ãéçºè ã¯æãã§ããŸãã
ãããçºçãããŠãŒã¹ã±ãŒã¹ã«ã€ããŠãããã€ã説æããé¡ãããŸãã éåžžã®ã¯ãŒã¯ãããŒã§ã¯ãã¯ã©ãŠãã§å®è¡ãããŠããããŒãããã¯ãµãŒããŒã§ipythonã䜿çšããWebãã©ãŠã¶ãŒãæ倧åããŸãã ãã®ãããä»äºçšã®ãã£ã¹ãã¬ã€ããã©ãããããçšã®ãã£ã¹ãã¬ã€ã«åãæ¿ããŠãç»é¢ã®å¹ ãçããããšãåé¡ãçºçããå¯èœæ§ããããŸãã ããããä»ã®äººãèããŠããä»ã®èšå®ããããšç¢ºä¿¡ããŠããŸãã ã»ãã«äœãïŒ
@jakevdpååã«å ¬å¹³ã§ãããPythonåŽã§_ãŸã£ãã_å€æŽãããã¹ãã§ã¯ãªãããšã«åæããŸãã ãã ããJSåŽã§ã¯ãã¹ãŠå ¬æ£ãªã²ãŒã ã ãšæããŸããå®éšã®ãã€ã³ãããmatplotlibãšd3jsã®æè¯ã®åŽé¢ãçµã¿åãããããšã«ããå Žåã¯ãè¿œæ±ãã䟡å€ããããšæããŸãã
ç§ã®èŠæ¹ã§ã¯ãfig_to_d3ãåŒã³åºããšãPythonã®åå°ããªããªãããã£ã®ã¥ã¢ãå¿çæ§ã®é«ããã®ã«ãã=ããè¯ãJSãæžãããšãã§ããŸãã
ã¬ã¹ãã³ã·ãããŒãžã®æçšæ§ã«ã€ããŠã¯ãiPythonåºåã ãã§ãåæããŸãããPythonã¯iPythonããŒãããã¯ä»¥äžã®ãã®ã§ãããæçµçã«ã¯ãmpl3dã䜿çšããŠãµã€ãºã¬ã¹ãã³ã·ãWebããŒãžãäœæããæ¹ãããã§ç€ºåããããã䟿å©ã ãšæããŸãã
ããªãã®è«çã«ããã°ãmatplotlibã«åãããŠè©³çŽ°ãæ¡å€§ãããå Žåã¯ãxlim / ylimãå€æŽããå¿ èŠããããŸãã
ãã°ãããããã±ãŒãžã«æ¹ããŠæè¬ããŸãããã©ã°ã€ã³ã§ã¯ã§ããªãããšã確èªãããé£çµ¡ããããŸãã
@aflaxman
ãããçºçãããŠãŒã¹ã±ãŒã¹ã«ã€ããŠãããã€ã説æããé¡ãããŸãã éåžžã®ã¯ãŒã¯ãããŒã§ã¯ãã¯ã©ãŠãã§å®è¡ãããŠããããŒãããã¯ãµãŒããŒã§ipythonã䜿çšããWebãã©ãŠã¶ãŒãæ倧åããŸãã ãã®ãããä»äºçšã®ãã£ã¹ãã¬ã€ããã©ãããããçšã®ãã£ã¹ãã¬ã€ã«åãæ¿ããŠãç»é¢ã®å¹ ãçããããšãåé¡ãçºçããå¯èœæ§ããããŸãã ããããä»ã®äººãèããŠããä»ã®èšå®ããããšç¢ºä¿¡ããŠããŸãã ã»ãã«äœãïŒ
http://pithy.ioãåç §ããŠãã ãã
ç§ã¯ãç§/ç§ã®ã°ã«ãŒã/ç§ã®ã¯ã©ã¹ãã¹ã¯ãªãããèšè¿°ããŠWebã¢ããªã«å€æã§ããããã«ããããã«pithyãäœæããŸããã ãã£ã®ã¥ã¢ãçªã«ãã£ããããããšãç掻ããã£ãšå¿«é©ã«ãªããŸãã MPL3dã¯ãã€ã³ã¿ã©ã¯ãã£ããªãããããå®è¡ããããã®ã¯ããã«åªããããŒã«ãæäŸããŸãïŒç§ã¯ããããããããã³ã°ããŠããŸããïŒãã€ã³ã¿ã©ã¯ãã£ããªããããããµã€ãºã«åå¿ããå Žåãããã¯ãã¹ãŠåã¡ã§ãã
@dansteingartã«æè¬ããŸãã JSã¯PythonãŠãŒã¶ãŒããã¯é ãããŠããŸãããããã§ãã³ãŒãã§ãããç¶æããå¿ èŠãããããšã«æ³šæããŠãã ããã ãªãŒãã³ãœãŒã¹éçºã«é¢ããé·å¹Žã®ç§ã®çµéšã§ã¯ãæ°ããæ©èœã®å®è£ ã«è奮ããŠãã人ã ããããã£ãŠæ¥ãŸãããããã®æ©èœãçµ±åããããšããã®ã¡ã³ããã³ã¹ãšç¶æã¯ãããã±ãŒãžã«æè³ããæ°äººã®éçºè ã®è©ã«ããã£ãŠããŸããé·æã ã»ãã®æ°å¹Žåã«äœæããããã䜿çšãããããã±ãŒãžã®ãã°ã¬ããŒããç¡èŠããããåŸãªããªãã»ã©ãç§ã¯ãã§ã«éåžžã«ç±å¿ã«åãçµãã§ããŸãã ç§ã¯æ¬åœã«mpld3ããã®ãã€ã³ãã«å°éããããšãæãã§ããŸããã
ãç解ã®ã»ã©ãããããé¡ãããããŸãããã©ã°ã€ã³ã«äœããŸãšããããšãã§ãããã楜ãã¿ã«ããŠããŸãã
@jakevdpãã®ç¹ã¯ããç解ãããŠããããã©ã°ã€ã³ã¢ãŒããã¯ãã£ã¯ãã®ç®çã®ããã«ããŸãæ©èœãããšæããŸãã ãããå£ããå Žåãããã¯ããªãã®ããã§ã¯ãªããç§ã®ããã«ãªããŸãïŒã€ãŸããfig_to_d3ãå€æŽããªãéã:-pïŒ
æžãçŽããå§ãŸããŸãããããã¯ãå°ãªããšãç¹å¥ãªç¶æ³ã§ã¯ããã©ã°ã€ã³ãšããŠå®è£ ããã®ã_å°ã_ç°¡åãããããŸããã ã§ãããããããã€ãããã¯ãªç¶æ³ã念é ã«çœ®ããŠæžããããã§ã¯ãªãã®ã§ãèœãšãç©ŽããããããããŸããã ããã«ã€ããŠäœãé²å±ãããã°æããŠãã ããã
ããã«ã¡ã¯ãçŽ æŽããããããžã§ã¯ãã«æè¬ââããŸãã ãã®åé¡ã«ã€ããŠäœãé²å±ã¯ãããŸãããïŒ ãã©ã°ã€ã³/æ©èœã¯éçºãããŠããŸããïŒ å ·äœçã«ã¯ãããã£ã³ãã¹ãµã€ãºãå¢çdivã«èšå®ãããªãã·ã§ã³ããæããŸãã ããããšãã
ããã¯äŸ¡å€ã®ããæ©èœã ãšæããŸãããããããåŸã®åç §çšã«ãd3ã䜿çšããŠå³ãèªåã¹ã±ãŒã«ã«ããããšãã§ããŸãïŒããã§ã¯ãŠã£ã³ããŠã®é«ãã§ïŒ
fetch("d3/" + figure + ".json")
.then((response) => response.json())
.then((data) => mpld3.draw_figure(figure, data))
.then(() => {
d3.select("#" + figure)
.selectAll(".mpld3-figure")
.attr("width", "100%")
.attr("height", "70vh")
.attr("viewBox", "0 0 1200 800")
.attr("preserveAspectRatio", "xMinYMin meet");
});
ããã§ã¯ã@ hadimãš@carlinmackã2çªç®ã«äœ¿çšããŠã viewBox
ã䜿çšããŸãã å®éã«ã¯éåžžã«åçŽãªå ŽåããããŸãã ããšãã°ãçŸåš<svg width="1200" height="800">
ãããå Žåã¯ã代ããã«<svg viewBox="0 0 1200 800">
ãè©ŠããŠãã ããã ããã§ãããŸãã viewBox
ã¯svgå
ã®åº§æšç³»ãå®çŸ©ãã width
ããã³height
ãã©ã¡ãŒã¿ãŒã¯ãªãã·ã§ã³ã«ãªããä»ã®èŠçŽ ãšåæ§ã«å€éšå¯žæ³ãå®çŸ©ããŸãã width=100%
ã䜿çšããããšããcssãä»ããŠå€ãçŽæ¥èšå®ããããšãã§ããŸãïŒcssã¯å±æ§ãããåªå
ããããããå¹
ãšé«ãïŒã
ç§ã¯æè¿ã®ã¯ããŒã ããŒãžã§ã³ã§ãããããŸã䜿ããŸããã 詳现ã«ã€ããŠã¯ããã©ãŠã¶ãŒéã®äŸåé¢ä¿ã調æ»ããå¿ èŠããããŸãããçµè«ã¯æããã ãšæããŸãã
PSïŒ httpsïŒ//css-tricks.com/scale-svgã«èæ¯èšäºããããŸãããäžèšã§æŠèª¬ããæ¹æ³ãïŒå°ãªããšãææ°ã®ãã©ãŠã¶ãŒã§ã¯ïŒæ£ããæ©èœããæŠå¿µçã«åçŽã§ããå Žåãæ··ä¹±ãæããŸãïŒ viewBox = "0 0 ${width} ${height}"
å
éšã³ãŒãã®å Žåã¯width=...
ããã³height=...
ã
ãããããã¯ãŸãã«@carlinmackãææ¡ããããšã§ãã çŽç²ãªHTML / CSSã§ããããããd3ã䜿çšããŠå³åœ¢ãèªåã¹ã±ãŒã«åããããšæ··ä¹±ããŸããããDOMã®æäœã¯d3ã®æ©èœã§ãã @carlinmackã§ç€ºããããpreserveAspectRatioãã¯ãç§ãä¿¡ããŠããããã©ã«ãå€ã§ãïŒå°ãªããšããcss-tricks.comãªã³ã¯ã§èª¬æãããŠããŸãïŒã ãšã«ããã¢ã¹ãã¯ãæ¯ãç¶æãããŠããã®ã«ããªãheight="70vh"
ã瀺ãã®ã§ããããã ããã¯éåžžã«çããŠèã®é«ã人ç©ã®ããçš®ã®äžéã§ããïŒ
æ£è§£ã§ããããŒãã¬ãŒãã®æ°åããã¥ãŒããŒããããé«ããªãããšã¯æãŸãããããŸããã§ãã:)
å³ãå¿
èŠä»¥äžã«å€§ãããªãããšãé€ããŠãåšå²ã®ã³ã³ãã³ããšã®ç·å¯ãªé©åãå¿
èŠãªå Žåã¯é©åã§ã¯ãããŸããã 代ããã«max-height
ã䜿çšãããšããŸããããŸãã
ãããç§ããã©ãŠã¶ã«mpld3ãã£ã®ã¥ã¢ãããŒãããæ¹æ³ã§ãïŒ
let figureID = "id_12345" ;
let dataURL = figureID + ".json" ;
d3.json(dataURL).then( function(data) {
mpld3.draw_figure(figureID, data);
return data;
}).then( function(data) {
d3.select("#" + figureID)
.selectAll(".mpld3-figure")
.attr("width", null) // remove "width" and "height" attributes as set by mpld3
.attr("height", null)
.attr("viewBox", `0 0 ${data.width} ${data.height}`)
});
è°è«ããŠãããŠããããšã@ carlinmack @ perrette ïŒ å¶ç¶ã«ããããã«ééããã°ããã§ãã@ dkong-idmã®è§£æ±ºçã¯æ¬¡ã®ãšããã§ãã
const resizeChart = (viewBoxSettings) => {
let svg = document.getElementsByClassName("mpld3-figure");
if (svg && svg.length > 0) {
svg[0].setAttribute("viewBox",viewBoxSettings );
svg[0].setAttribute("width", "90vw");
svg[0].setAttribute("height", "auto");
}
}
@vladh ããã®èªåã¹ã±ãŒãªã³ã°æ©èœãmpld3
draw_figure
ãªãã·ã§ã³ã®åŒæ°ãšããŠããŸãã¯ã¹ã¿ã³ãã¢ãã³é¢æ°ãšããŠè¿œå ããã®ã¯å€§å€ãªäœæ¥ã§ããããïŒ
@cliffckerrãããdraw_figure
ã«ééããªãè¿œå ã§ããŸããããããã Object
ãåãããã®ãªããžã§ã¯ãã§æå®ããããã¹ãŠã®å±æ§ãsvg
ã«èšå®ããåŒæ°ãšããŠãæž¡ãããšãã§ããŸãã {viewBox: ..., width: '90vw', height: 'auto'}
ã®ãããªãã®ã§ã
fig_to_html()
ãªã©ããµããŒãããããã«ããããä»ã®å Žæã«è¿œå ããå¿
èŠããããã©ããããã®ã¹ã¬ããã®ä»ã®ãŠãŒã¶ãŒã«è³ªåããããšæããŸãã ãããããªããå€åç§ãã¡ã¯ããã«å¯Ÿãã解決çãèããã¹ãã§ãã ãã以å€ã®å Žåã¯ãç¥ãããã ãããããã«draw_figure()
ã«å€æŽãå ããããšãã§ããŸãã
@vladhã¯ãã fig_to_html()
ã§ãéåžžã«äŸ¿å©ã§ãã
æãåèã«ãªãã³ã¡ã³ã
@cliffckerrããã
draw_figure
ã«ééããªãè¿œå ã§ããŸãããããããObject
ãåãããã®ãªããžã§ã¯ãã§æå®ããããã¹ãŠã®å±æ§ãsvg
ã«èšå®ããåŒæ°ãšããŠãæž¡ãããšãã§ããŸãã{viewBox: ..., width: '90vw', height: 'auto'}
ã®ãããªãã®ã§ãfig_to_html()
ãªã©ããµããŒãããããã«ããããä»ã®å Žæã«è¿œå ããå¿ èŠããããã©ããããã®ã¹ã¬ããã®ä»ã®ãŠãŒã¶ãŒã«è³ªåããããšæããŸãã ãããããªããå€åç§ãã¡ã¯ããã«å¯Ÿãã解決çãèããã¹ãã§ãã ãã以å€ã®å Žåã¯ãç¥ãããã ãããããã«draw_figure()
ã«å€æŽãå ããããšãã§ããŸãã