ν¨ν€μ§λ₯Ό μ λ§ μ¦κ²Όμ΅λλ€. 곡μ ν΄ μ£Όμ μ κ°μ¬ν©λλ€.
μ΄κ²μ μ μλ κ°μ μ¬νμ΄μ§λ§ μμ ν νμ΄μ¬μ μ΄μ§λ μμ΅λλ€. κ·Έλ¬λ λ€μ 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κ° μλνλ λ°©μμ λλ€)
ν ... μ΄ μ§λ¬Έμ μΉμ λν κ²½νμ΄ μλ€λ κ²μ λλ¬λ΄λ κ²μΌ μ μμ§λ§ 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 κ·Έλ¦Όμ μλ΅ ν¬κΈ°λ μ λ§ μ μ©ν κ²μ λλ€. νμ¬ Figureλ₯Ό μ μ°½μΌλ‘ μ΄ μ μλλ‘ λ²νΌ(λꡬ λͺ¨μμμ)μΌλ‘ μ΄κ²μ μΆκ°νλ©΄ μ 체 Figureμ ν¬κΈ°λ₯Ό μ½κ² μ‘°μ ν μ μμ΅λλ€.
+1
@hadim "νμ΄μ¬"μΌλ‘ μ μ§νκ³ μΆμ΅λλ€.
mpld3.fig_to_d3(fig,size="adaptive")
μ’μ λ°©μμ κ° λ κ²μ λλ€
λλ λμνλ€ !
κ·Έλ¦Όμ λ€λ₯Έ ν¬κΈ°λ‘ λ§λλ κ²μ΄ μ½λ€λ κ²μ μ΄ν΄ν©λλ€. κ·Έλ¬λ μ λ°μ μΌλ‘ λλ μ¬μ ν κ·Έκ²μ΄ μ’μ μκ°μΈμ§ νμ νμ§ λͺ»ν©λλ€. κ·Έλ¦Ό ν¬κΈ°κ° μμ λλ©΄ λͺ¨λ μ λλΉ, λ§μ»€ μμΉ, λ§μ»€ ν¬κΈ°, κΈκΌ΄ ν¬κΈ° λ±μ ν΄νΉν΄μΌ νλ―λ‘ λ§μ μ΄μ μμ΄ μ½λμ λ§μ 볡μ‘μ±μ΄ μΆκ°λ©λλ€. λν λ²λ‘, μΆ λ μ΄λΈ λ° κΈ°ν μμ±μ μ¬λ°λ₯Έ λ°°μΉλ plt.draw() λͺ λ Ήμ λ°λΌ λ¬λΌμ§λλ€. plt.draw() λͺ λ Ήμ λ΄λΆ κ·Έλ¦Ό ν¬κΈ°μ dpi μ€μ μ κΈ°λ°μΌλ‘ κ°μ ν©λλ€. - μ¬μ€ μ΄ν μ‘°μ .
μ΄ mpld3μ μ² νμ matplotlib μμΉμ μλ λ΄μ©μ κ°λ₯ν ν κ°κΉκ² λ°μνλ κ°λ¨ν μΆλ ₯μ μμ±νλ κ²μ λλ€. μΆλ ₯ Figureμ ν¬κΈ°λ₯Ό λ³κ²½νλ €λ κ²½μ° μ νΈνλ λ°©λ²μ matplotlib Figure ν¬κΈ°λ₯Ό μ‘°μ νλ κ²μ λλ€. λ€λ₯Έ λͺ¨λ κ²μ ꡬν, ν μ€νΈ λ° μ μ§ κ΄λ¦¬νλ λ° ν° κ³¨μΉ«κ±°λ¦¬κ° λ κ² κ°μ΅λλ€.
νλ¬κ·ΈμΈμ μ΄λ»μ΅λκΉ?
plugins.connect(fig, plugins.ResponsiveSize())
νλ¬κ·ΈμΈμ΄ μλ§λ μ’μ λ°©λ²μΌ κ²μ λλ€. κ·Έλ¬λ λ€μ κΈκΌ΄ ν¬κΈ°, μ λλΉ, λ§μ»€ ν¬κΈ°, λ²λ‘ μμΉ λ° μΆ ν μ€νΈ μμΉλ₯Ό μ‘°μ νλ λ°©λ²μ 무μμ λκΉ? μ΄λ¬ν λͺ¨λ λ¬Έμ λλ¬Έμ ν¬κΈ° μ‘°μ μ μ§μνλ κ΄λ²μν μΈνλΌκ° μμΌλ©΄ κ·Έλ¬ν νλ¬κ·ΈμΈμ μ μ©μ±μ΄ λ§€μ° μ νμ μΌ κ²μ΄λΌκ³ μκ°ν©λλ€.
@jakevdp λμνμ§ μμ΅λλ€. μμ 3μ΄ ν΄νΉμμ κ²ͺμ μ μΌν λ¬Έμ λ λ μ΄λΈ μμΉμμΌλ©° λ€μ λ§νμ§λ§ λ λμ μλ°μ€ν¬λ¦½νΈλ₯Ό μμ±νλ λ¬Έμ μ λλ€. DOMμ λ§μ μμ μμ΄ μ λ μμΉμ μλ μμΉλ₯Ό νμ©ν©λλ€.
μ½λκ° μ§κΈ ꡬνλλ λ°©μμΌλ‘ λͺ¨λ κ²μ΄ κ·Έλ¦Όμ νλ μ½λ©λ©λλ€. μ½κ°μ μμ μΌλ‘ λλΉ/λμ΄, μ λκ» λ° κΈκΌ΄ ν¬κΈ°λ₯Ό div ν¬κΈ°μ λν΄ μ νμΌλ‘ μ‘°μ ν μ μμ΅λλ€. κ°μ₯ κΉλ€λ‘μ΄ λΆλΆμ μ’ ν‘λΉμ΄λ©° μ κΈ μ μμ΅λλ€. κ°λ‘ μΈλ‘ λΉμ¨μ΄ κ³ μ λλ©΄ λͺ¨λ κ²μ μ νμΌλ‘ νμ₯νλ κ²μ΄ λ§€μ° κ°λ¨ν©λλ€.
@hadim μ’μ μκ°μ λλ€.
λλ d3.jsλ₯Ό λͺ°λΌμ μ무 μκ°μ΄ μμ΅λλ€. νμ§λ§ μ°λ¦¬λ sv νμΌμ μμ νκ³ μκΈ° λλ¬Έμ μ½κ² ν μ μμ κ²μ΄λΌκ³ μκ°ν©λλ€...
κ·Έκ²μ λ§λλ κ°μ₯ μ’μ λ°©λ²μ λν΄ μκ°νκΈ° μμνλ λͺ κ°μ§ λ§ν¬:
@dansteingartμ κ²½μ° +1μ λλ€. λͺ¨λ SVG λ΄λΆ κΈΈμ΄μ μμΉλ₯Ό μλ μ’νλ‘ μ€μ ν λ€μ μΆλ ₯ μ μ viewBoxλ₯Ό μ¬μ©νμ¬ μ 체 κ·Έλ¦Όμ ν¬κΈ°λ₯Ό μ‘°μ νκ³ figsize matplotlib 맀κ°λ³μμ μΌμΉμν€μμμ€(λλ λ€λ₯Έ κ²½μ°μλ μλ΅ κ°λ₯).
@dansteingart - μΆ©λΆν JS ν΅λ§ μμΌλ©΄ μλν μ μλ€λ λ° λμν©λλ€. κ·Έλ¬λ κ·ΈλΌμλ λΆκ΅¬νκ³ μ λ μ΄ κΈ°λ₯μ ν¬ν¨νλλ‘ μ΄ ν¨ν€μ§λ₯Ό κ·Όλ³Έμ μΌλ‘ μμ νλ κ²μ μ§μ§νμ§ μμ΅λλ€.
μμ? κΈμ, ν μ‘°κ°μ κ·Έκ²μ΄ matplotlib μΈν°νμ΄μ€λ₯Ό ν΅ν΄ νλ‘― μμ, κ·Έλ¦Ό ν¬κΈ° λ±μ μ μν΄μΌνλ€λ ν¨ν€μ§ μ² νμ μλ°°λλ€λ κ²μ λλ€.
λ λ²μ§Έλ μ΄κ²μ΄ "νμ" κΈ°λ₯μ΄ μλλ©° μ΄λ¬ν νμκ° μλ κΈ°λ₯μ λν΄ μ½λ κΈ°λ°μ ν¨μ¬ λ 볡μ‘νκ² λ§λλ κ²μ μ₯κΈ°μ μΌλ‘ ν¨ν€μ§μ μμμ μ€ μ μλ€λ κ²μ λλ€. μ΄κ²μ΄ κ°λ₯ν μ΄μ μ λν λ°°κ²½ μ§μμ μλ SciPyμμ @ellisonbg μ κ°μ° μ μ°Έμ‘°νμμμ€.
μ΄λ¬ν μ’
λ₯μ λμμ μΆκ°νκΈ° μν΄ νλ¬κ·ΈμΈ μμ
μ νκ³ μΆλ€λ©΄ μΈμ λ μ§ νμν©λλ€. μ μλνλ€λ©΄ plugins
λͺ¨λμ ν¬ν¨μν¬ κ°μΉκ° μμ΅λλ€. κ·Έλ¬λ λλ κ·Έκ²μ΄ μ무리 λ©μ§λλΌλ ν¨ν€μ§μ μ² νμ λ°νλ μλ‘μ΄ κΈ°λ₯μ λν κΈ°λ³Έ κ·Έλ¦Ό λ μ΄μμμ μ£Όμ μμ μ λν΄ λ¨νΈνκ² λ°λν©λλ€.
λλ λ°©κΈ μ΄κ²μ μ¬λ‘μ‘ν μμκ³ μΌμ’ μ νλ¬κ·ΈμΈμ΄ μΌμ’ μ ν₯λ―Έλ‘μ΄ λ°μν κ·Έλ¦Ό ν¬κΈ° μ‘°μ λμμ μνν μ μλ κ²μ²λΌ λ€λ¦½λλ€. @dansteingart λ κΈ°λ₯μ λν μμ΄λμ΄μ νΉμ λ°©μμΌλ‘ κΈ°λ₯ ꡬνμ μμν κ°μΉκ° μλμ§μ λν μ§λ¬ΈμΌλ‘ μ΄ μ€λ λλ₯Ό μμνμ΅λλ€. μ§λ¬Έμ λν λ΅λ³μΌλ‘ νλ¬κ·ΈμΈμΌλ‘ μμνμ¬ _objects.py λλ _js.pyλ₯Ό λ³κ²½νμ§ μκ³ νλ¬κ·ΈμΈμ΄ μΌλ§λ λ©λ¦¬ κ° μ μλμ§ νμΈνλ κ²μ΄ μ’μ΅λλ€. νμ§λ§ κ·Έλ΄ μ€λΉκ° λμ΄ μλ€λ©΄ ν κ±Έμ λ¬Όλ¬μμ μ°λ¦¬κ° ν΄κ²°νλ €κ³ νλ λ¬Έμ μ λν΄ μ΄μΌκΈ°νκ³ μΆμ΅λλ€.
κ·Έλ¦Όμ μ€μ ν¬κΈ°κ° νλ©΄μ λ°μλλ κ²μ μ’μ§λ§ μΊλ²μ€ ν¬κΈ°λ₯Ό κ²½κ³ divλ‘ μ€μ νκ³ ν΄λΉ div ν¬κΈ°λ₯Ό λΈλΌμ°μ λλΉ/무μμ΄λ κ²°μ νλλ‘ νλ μ΅μ μ΄ μμΌλ©΄ "λ°μμ±"μ΄ λ λμ κ²μ΄λΌκ³ μκ°ν©λλ€. κ·Έλ μ§ μμΌλ©΄ κ°λ°μκ° μνλ κ²μ λλ€.
μ΄κ²μ΄ λμ¬ μ μ€ μΌμ΄μ€μ λν μ€λͺ μ μν©λλ€. λ΄ μΌλ° μν¬νλ‘μμλ μΉ λΈλΌμ°μ κ° μ΅λνλ μνμμ ν΄λΌμ°λμμ μ€νλλ λ ΈνΈλΆ μλ²μ ν¨κ» ipythonμ μ¬μ©ν©λλ€. λ°λΌμ μ λ¬΄μ© λμ€νλ μ΄μμ λ©ν± λμ€νλ μ΄λ‘ μ ννκ³ νλ©΄ λλΉκ° λ μμμ§λ©΄ λ¬Έμ κ° λ°μν μ μμ΅λλ€. νμ§λ§ λ€λ₯Έ μ¬λλ€μ΄ μκ°νλ λ€λ₯Έ μ€μ μ΄ μλ€κ³ νμ ν©λλ€. λ€λ₯Έ 무μ?
@jakevdp μΆ©λΆν 곡ννκ³ νμ΄μ¬ μΈ‘μμ _μ ν_ λ³κ²½λ κ²μ΄ μμ΄μΌ νλ€λ λ° λμν©λλ€. κ·Έλ¬λ JS μͺ½μμλ λͺ¨λ 곡μ ν κ²μμ΄λΌκ³ μκ°νκ³ μ€νμ ν¬μΈνΈκ° matplotlibμ d3jsμ κ°μ₯ μ’μ μΈ‘λ©΄μ κ²°ν©νλ κ²μ΄λΌλ©΄ κ³μ μΆκ΅¬ν κ°μΉκ° μλ€κ³ μκ°ν©λλ€.
λ΄κ° 보기μ fig_to_d3μ νΈμΆνλ©΄ νμ΄μ¬ μμμμ λ²μ΄λ κ·Έλ¦Όμ λ°μνμΌλ‘ λ§λ€κ³ = λ λμ JSλ₯Ό μμ±ν©λλ€.
λ°μν νμ΄μ§μ μ μ©μ±μ κ΄ν΄μλ iPython μΆλ ₯λ§μΌλ‘λ λμνμ§λ§ pythonμ iPython λ ΈνΈλΆ μ΄μμ΄λ©° κΆκ·Ήμ μΌλ‘ mpl3dλ₯Ό μ¬μ©νμ¬ ν¬κΈ° λ°μν μΉ νμ΄μ§λ₯Ό λ§λλ κ²μ΄ μ¬κΈ°μμ μμνλ κ²λ³΄λ€ λ μ μ©ν κ²μ΄λΌκ³ μκ°ν©λλ€.
κ·νμ λ Όλ¦¬μ λ°λΌ matplotlibμ λ°λΌ μΈλΆ μ¬νμ νλνλ €λ©΄ xlim/ylimμ λ³κ²½ν΄μΌ ν©λλ€.
νλ₯ν ν¨ν€μ§μ λ€μ ν λ² κ°μ¬λ립λλ€. νλ¬κ·ΈμΈμΌλ‘ ν μ μλ μΌμ νμΈνκ³ λ€μ μ°λ½λλ¦¬κ² μ΅λλ€.
@aflaxman
μ΄κ²μ΄ λμ¬ μ μ€ μΌμ΄μ€μ λν μ€λͺ μ μν©λλ€. λ΄ μΌλ° μν¬νλ‘μμλ μΉ λΈλΌμ°μ κ° μ΅λνλ μνμμ ν΄λΌμ°λμμ μ€νλλ λ ΈνΈλΆ μλ²μ ν¨κ» ipythonμ μ¬μ©ν©λλ€. λ°λΌμ μ λ¬΄μ© λμ€νλ μ΄μμ λ©ν± λμ€νλ μ΄λ‘ μ ννκ³ νλ©΄ λλΉκ° λ μμμ§λ©΄ λ¬Έμ κ° λ°μν μ μμ΅λλ€. νμ§λ§ λ€λ₯Έ μ¬λλ€μ΄ μκ°νλ λ€λ₯Έ μ€μ μ΄ μλ€κ³ νμ ν©λλ€. λ€λ₯Έ 무μ?
http://pithy.io μ°Έμ‘°
λλ λ/λ΄ κ·Έλ£Ή/λ΄ μμ μ΄ μ€ν¬λ¦½νΈλ₯Ό μμ±ν λ€μ μΉ μ±μΌλ‘ μ νν μ μλλ‘ κ°λ΅νκ² μμ±νμ΅λλ€. κ·Έλ¦Όμ΄ μ°½λ¬Έμ λ± λ§κ² νλ©΄ μΆμ΄ ν¨μ¬ λ λ©μ Έμ§λλ€. 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");
});
μ¬κΈ°μ viewBox
λ₯Ό μ¬μ©νλλ‘ @hadim λ° @carlinmack μ λ λ²μ§Έλ‘ μ¬μ©νκ² μ΅λλ€. μ€μ λ‘ λ§€μ° κ°λ¨ν μ μμ΅λλ€. μλ₯Ό λ€μ΄, νμ¬ <svg width="1200" height="800">
κ° μλ κ²½μ° λμ <svg viewBox="0 0 1200 800">
λ₯Ό μλνμμμ€. κ·Έκ² λ€μΌ viewBox
λ svg λ΄λΆμ μ’νκ³λ₯Ό μ μνκ³ width
λ° height
맀κ°λ³μλ μ ν μ¬νμ΄ λμ΄ λ€λ₯Έ μμμ λ§μ°¬κ°μ§λ‘ μΈλΆ μΉμλ₯Ό μ μν©λλ€. width=100%
λ₯Ό μ¬μ©νκ±°λ cssλ₯Ό ν΅ν΄ μ§μ κ°μ μ€μ ν μλ μμ΅λλ€(cssμ λλΉμ λμ΄λ μμ±λ³΄λ€ μ°μ ν¨).
μ΅μ ν¬λ‘¬ λ²μ μμ μ±κ³΅μ μΌλ‘ μ¬μ©νμ΅λλ€. μμΈν λ΄μ©μ λΈλΌμ°μ κ° μ’ μμ±μ μ‘°μ¬ν΄μΌ νμ§λ§ κ²°λ‘ μ λͺ ννλ€κ³ μκ°ν©λλ€.
μΆμ : https://css-tricks.com/scale-svg μ λ°°κ²½ κΈ°μ¬κ° μμ§λ§ μμμ μ€λͺ
ν λ°©λ²μ΄ μλνκ³ (μ΅μν μ΅μ λΈλΌμ°μ μμλ) κ°λ
μ μΌλ‘ κ°λ¨ν λ νΌλμ€λ½μ΅λλ€. viewBox = "0 0 ${width} ${height}"
λ΄λΆ μ½λμ κ²½μ° width=...
λ° height=...
λλ νμν κ²½μ° ν¬κΈ° μ‘°μ μ μν css 맀κ°λ³μ.
λ€, κ·Έκ² λ°λ‘ @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()
μ λ³κ²½ν μ μμ΅λλ€.