Mpld3: рдмреНрд░рд╛рдЙрдЬрд░/рдПрдЪрдЯреАрдПрдордПрд▓ рдлрд┐рдЧрд░ рд╕рд╛рдЗрдЬ рдХреЗ рдмрдЬрд╛рдп рдлрд┐рдЧрд░ рд╕рд╛рдЗрдЬ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ * dpi

рдХреЛ рдирд┐рд░реНрдорд┐рдд 6 рдлрд╝рд░ре░ 2014  ┬╖  31рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: mpld3/mpld3

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреИрдХреЗрдЬ рдХрд╛ рдЖрдирдВрдж рд▓реЗ рд░рд╣реЗ рд╣реИрдВ, рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред

рдпрд╣ рдПрдХ рд╕реБрдЭрд╛рдпрд╛ рдЧрдпрд╛ рд╕реБрдзрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдлреА рдкрд╛рдЗрдереЛрдирд┐рдХ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдлрд┐рд░ рди рддреЛ d3js рд╣реИ :)

рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдЖрдХреГрддрд┐ рдХрд╛ рд╕реЗрдЯ рдЖрдХрд╛рд░ рд╕реНрдХреНрд░реАрди рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреИрдирд╡рд╛рд╕ рдЖрдХрд╛рд░ рдХреЛ рдмрд╛рдЙрдВрдбрд┐рдВрдЧ div рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ "рдЕрдзрд┐рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓" рд╣реЛрдЧрд╛, рдФрд░ рдлрд┐рд░ рдЙрд╕ div рдЖрдХрд╛рд░ рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЪреМрдбрд╝рд╛рдИ/рдЬреЛ рдХреБрдЫ рднреА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЕрдиреНрдпрдерд╛ рдбреЗрд╡рд▓рдкрд░ рдЪрд╛рд╣рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдЗрд╕реЗ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ _js.py рдФрд░ _object.py рдореЗрдВ рдордЬрд╝рд╛рдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@cliffckerr рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ draw_figure рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВ, рд╢рд╛рдпрдж рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛ Object рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЙрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ svg рдкрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЖрдк рдкрд╛рд╕ рдХрд░ рд╕рдХреЗрдВ {viewBox: ..., width: '90vw', height: 'auto'} рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдореЗрдВред

рдореИрдВ рдЖрдкрд╕реЗ рдФрд░ рдЗрд╕ рдереНрд░реЗрдб рдХреЗ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рд╕реЗ рдкреВрдЫрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХрд╣реАрдВ рдФрд░ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕реЗ fig_to_html() ред рдЕрдЧрд░ рдРрд╕рд╛ рд╣реИ, рддреЛ рд╢рд╛рдпрдж рд╣рдореЗрдВ рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╕реЛрдЪрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдиреНрдпрдерд╛, рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдФрд░ рдореИрдВ рддреБрд░рдВрдд draw_figure() рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рд╕рднреА 31 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдкреВрдЫ рд░рд╣реЗ рд╣реИрдВ ... рд╣рдо рдореИрдЯрдкреНрд▓реЛрдЯрд▓рд┐рдм рдЖрдХреГрддрд┐ рд╕реЗ рдЗрдВрдЪ рдореЗрдВ рдЖрдХреГрддрд┐ рдХрд╛ рдЖрдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдбреАрдкреАрдЖрдИ рднреА рдореИрдЯрдкреНрд▓реЛрдЯрд▓рд┐рдм рдЖрдХреГрддрд┐ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдЖрдк рдХреИрд╕реЗ рд╕реБрдЭрд╛рд╡ рджреЗ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдмрджрд▓ рджреЗрдВ? рдзрдиреНрдпрд╡рд╛рдж

рдкрд╛рдпрдерди рдореЗрдВ рд╕реЗрдЯ рдирд┐рд░рдкреЗрдХреНрд╖ рдЖрдХреГрддрд┐ рдЖрдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдореЗрд░рд╛ рдорддрд▓рдм рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реИ:

<div id='parent' class='figsizeinfo'>
//mpld3 generated code
</div>

рдЬрд╣рд╛рдВ figsizeinfo рдЖрдХрд╛рд░ рдХрд╛ CSS рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рд╣реИ, рдФрд░ mpld3 div рдХреЛ рднрд░рддрд╛ рд╣реИред (рдореЗрд░реЗ рдЕрдиреБрднрд╡ рдореЗрдВ рдпрд╣ рд╣реИ рдХрд┐ рдХреИрд╕реЗ flotjs рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)

рд╣рдореНрдо ... рдпрд╣ рдкреНрд░рд╢реНрди рд╡реЗрдм рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдореЗрд░реА рдЕрдиреБрднрд╡рд╣реАрдирддрд╛ рдХреЛ рдзреЛрдЦрд╛ рджреЗ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдПрд╕рд╡реАрдЬреА (рдЬреЛ mpld3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ) рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд┐рдХреНрд╕реЗрд▓-рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдФрд░ рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрджрд▓рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреНрдпрд╛ рдлреНрд▓реЛрдЯрдЬ рдПрд╕рд╡реАрдЬреА, рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ?

рдПрд╕рд╡реАрдЬреА (рд╕реНрдХреЗрд▓реЗрдмрд▓ рд╡реЗрдХреНрдЯрд░ рдлреЙрд░реНрдореЗрдЯ) рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рд╡реЗрдХреНрдЯрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдкрд┐рдХреНрд╕реЗрд▓ рдЖрдзрд╛рд░рд┐рдд рдирд╣реАрдВред

рдпрд╣рд╛рдБ рдПрдХ SVG рдЫрд╡рд┐ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдХрд┐ рд╡реИрдирд┐рд▓рд╛ рдореИрдЯрдкреНрд▓реЛрдЯрд▓рд┐рдм рдХреЗ рд╕рд╛рде рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдЬреЛ рд╡рд┐рдВрдбреЛ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдорд╛рдкреА рдЬрд╛рддреА рд╣реИ:

http://bleepshow.pithy.io/SVG_Example

(рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдЖрдзрд╛рд░рд┐рдд)

d3js, рдФрд░ рд╕рднреА рдХреИрдирд╡рд╛рд╕ рдбреНрд░рд╛рдЗрдВрдЧ рдЖрдВрдХрдбрд╝реЗ, рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ, рд╡реЗрдХреНрдЯрд░ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЯреНрд░рд┐рдХ, рдореИрдВ рдХрд▓реНрдкрдирд╛ рдХрд░рддрд╛ рд╣реВрдВ, рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реИ

figwidth = $(тАЬ#parentтАЭ).width //(jquery based, but you get the point )

рдЗрд╕рдХреЗ рдмрдЬрд╛рдп

figwidth = figsize[0] * dpi;

рд╣рд╛рдВ, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдПрд╕рд╡реАрдЬреА рд╡реЗрдХреНрдЯрд░-рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рддрдХ рдореИрдВ рдЧрд▓рдд рдирд╣реАрдВ рд╣реВрдВ, рдХреИрдирд╡рд╛рд╕ рдХрд╛ рдЖрдХрд╛рд░, рд╕рд╛рде рд╣реА рдорд╛рд░реНрдХрд░реЛрдВ рдХрд╛ рдЖрдХрд╛рд░ рдФрд░ рд╕реНрдХреНрд░реАрди рдкрд░ рдЙрдирдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрд┐рдВрджреБрдУрдВ рдореЗрдВ рдорд╛рдкрд╛ рдЬрд╛рддрд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрд╕рд╡реАрдЬреА рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдмреЗрд╣рдж рдЬрдЯрд┐рд▓ рд╣реЛрдЧрд╛ рдЬреЛ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдЦрд┐рдбрд╝рдХреА рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдЖрдВрдХрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕реНрдХреЗрд▓ рдХрд░реЗрдЧрд╛ред

рдирд╣реАрдВ, рдпрд╣ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИред

рдпрд╣рд╛рдБ рд╣реИрдХ рдореИрдВрдиреЗ рдЖрдкрдХреЗ 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

@ рд╣рджреАрдо рдореИрдВ рдЗрд╕реЗ "рдкрд╛рдпрдердирд┐рдХ" рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рддреЛ рдХреБрдЫ рдРрд╕рд╛

mpld3.fig_to_d3(fig,size="adaptive")

рдПрдХ рдЕрдЪреНрдЫрд╛ рдЯреНрд░рд┐рдЧрд░ рд╣реЛрдЧрд╛

рдореИрдВ рд╕рд╣рдордд рд╣реВрдБ !

рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдХреГрддрд┐ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдЖрдХрд╛рд░ рдмрдирд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИред рд▓реЗрдХрд┐рди рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░ рдореИрдВ рдЕрднреА рднреА рдЖрд╢реНрд╡рд╕реНрдд рдирд╣реАрдВ рд╣реВрдВ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдПрдХ рдмрд╛рд░ рдлрд┐рдЧрд░ рдХрд╛ рдЖрдХрд╛рд░ рд╕рдВрд╢реЛрдзрд┐рдд рд╣реЛ рдЬрд╛рдиреЗ рдкрд░, рдЗрд╕рдореЗрдВ рд╕рднреА рд▓рд╛рдЗрди рдЪреМрдбрд╝рд╛рдИ, рдорд╛рд░реНрдХрд░ рд╕реНрдерд╛рди, рдорд╛рд░реНрдХрд░ рдЖрдХрд╛рд░, рдлрд╝реЙрдиреНрдЯ рдЖрдХрд╛рд░ рдЗрддреНрдпрд╛рджрд┐ рдХреЛ рд╣реИрдХ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧрд╛ рдЬреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд▓рд╛рдн рдХреЗ рдХреЛрдб рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдЬрдЯрд┐рд▓рддрд╛рдПрдВ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд▓реЗрдЬреЗрдВрдб, рдЕрдХреНрд╖ рд▓реЗрдмрд▓ рдФрд░ рдЕрдиреНрдп рдЧреБрдгреЛрдВ рдХрд╛ рд╕рд╣реА рд╕реНрдерд╛рди plt.draw() рдХрдорд╛рдВрдб рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЖрдВрддрд░рд┐рдХ рдЖрдХреГрддрд┐ рдЖрдХрд╛рд░ рдФрд░ рдбреАрдкреАрдЖрдИ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдзрд╛рд░рдгрд╛ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдХреИрд╕реЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рддрдереНрдп рдХреЗ рдмрд╛рдж рд╕рдорд╛рдпреЛрдЬрд┐рддред

рдЗрд╕ mpld3 рдХрд╛ рджрд░реНрд╢рди рд╕рд░рд▓ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдмрд╛рд░реАрдХреА рд╕реЗ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ matplotlib рдЖрдВрдХрдбрд╝реЛрдВ рдореЗрдВ рд╣реИред рдпрджрд┐ рдЖрдк рдЖрдЙрдЯрдкреБрдЯ рдлрд┐рдЧрд░ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдкрд╕рдВрджреАрджрд╛ рддрд░реАрдХрд╛ рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдк matplotlib рдлрд┐рдЧрд░ рд╕рд╛рдЗрдЬ рдХреЛ рдПрдбрдЬрд╕реНрдЯ рдХрд░реЗрдВред рдХреБрдЫ рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ, рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдФрд░ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЬрд▓реНрджреА рд╕реЗ рдПрдХ рдкреНрд░рдореБрдЦ рд╕рд┐рд░рджрд░реНрдж рдмрди рдЬрд╛рдПрдЧрд╛ред

рдПрдХ рдкреНрд▓рдЧрдЗрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?

plugins.connect(fig, plugins.ResponsiveSize())

рдПрдХ рдкреНрд▓рдЧрдЗрди рд╢рд╛рдпрдж рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдлрд┐рд░, рдЖрдк рдлрд╝реЙрдиреНрдЯ рдЖрдХрд╛рд░, рд░реЗрдЦрд╛ рдХреА рдЪреМрдбрд╝рд╛рдИ, рдорд╛рд░реНрдХрд░ рдЖрдХрд╛рд░, рдХрд┐рдВрд╡рджрдВрддреА рд╕реНрдерд╛рди рдФрд░ рдЕрдХреНрд╖ рдкрд╛рда рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдХреИрд╕реЗ рдирд┐рдкрдЯрддреЗ рд╣реИрдВ? рдЙрди рд╕рднреА рдореБрджреНрджреЛрдВ рдХреЗ рдХрд╛рд░рдг, рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╡реНрдпрд╛рдкрдХ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЗ рдмрд┐рдирд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд▓рдЧрдЗрди рдореЗрдВ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреА рдПрдХ рд╕реАрдорд┐рдд рд╕реАрдорд╛ рд╣реЛрдЧреАред

@jakevdp рдореИрдВ рдЕрд╕рд╣рдордд рд╣реВрдВ: рдЙрдкрд░реЛрдХреНрдд рдореЗрд░реЗ 3 рд╕реЗрдХрдВрдб рд╣реИрдХ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рд▓реЗрдмрд▓ рд╕реНрдерд╛рди рдереЗ, рдФрд░ рдлрд┐рд░, рдпрд╣ рдмреЗрд╣рддрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИред рдбреАрдУрдПрдо рдмрд┐рдирд╛ рдЕрдзрд┐рдХ рдХрд╛рдо рдХреЗ рдкреВрд░реНрдг рд╕реНрдерд┐рддрд┐ рдФрд░ рд╕рд╛рдкреЗрдХреНрд╖ рд╕реНрдерд┐рддрд┐ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЕрдм рдХреЛрдб рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕рдм рдХреБрдЫ рдЖрдХреГрддрд┐ рдореЗрдВ рдХрдард┐рди рдХреЛрдбрд┐рдд рд╣реИред рдереЛрдбрд╝реЗ рд╕реЗ рдХрд╛рдо рдХреЗ рд╕рд╛рде, рдЪреМрдбрд╝рд╛рдИ/рдКрдВрдЪрд╛рдИ, рд░реЗрдЦрд╛ рдореЛрдЯрд╛рдИ, рдФрд░ рдлрд╝реЙрдиреНрдЯ рдЖрдХрд╛рд░ рдХреЛ div рдЖрдХрд╛рд░ рдХреЗ рд╡рд┐рд░реБрджреНрдз рд░реИрдЦрд┐рдХ рд░реВрдк рд╕реЗ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдореБрд╢реНрдХрд┐рд▓ рд╣рд┐рд╕реНрд╕рд╛ рдкрд╣рд▓реВ рдЕрдиреБрдкрд╛рдд рд╣реЛрдЧрд╛, рдФрд░ рдЗрд╕реЗ рд▓реЙрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдмрд╛рд░ рдкрд╣рд▓реВ рдЕрдиреБрдкрд╛рдд рд▓реЙрдХ рд╣реЛ рдЬрд╛рдиреЗ рдкрд░, рд░реИрдЦрд┐рдХ рд░реВрдк рд╕реЗ рд╕рдм рдХреБрдЫ рд╕реНрдХреЗрд▓ рдХрд░рдирд╛ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ

@ рд╣рджреАрдо рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред

рдореИрдВ d3.js рдирд╣реАрдВ рдЬрд╛рдирддрд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВрдХрд┐ рд╣рдо svg рдлрд╝рд╛рдЗрд▓ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд▓реНрдкрдирд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ...

рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд╕рд░реНрд╡реЛрддреНрддрдо рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд▓рд┐рдВрдХ:

@dansteingart рдХреЗ рд▓рд┐рдП +1ред рд╕рднреА рдПрд╕рд╡реАрдЬреА рдЖрдВрддрд░рд┐рдХ рд▓рдВрдмрд╛рдИ рдФрд░ рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рд╛рдкреЗрдХреНрд╖ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдореЗрдВ рд╕реЗрдЯ рдХреНрдпреЛрдВ рди рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ рдкрд╣рд▓реЗ рдкреВрд░реЗ рдЖрдВрдХрдбрд╝реЗ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реНрдпреВрдмреЙрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдЗрд╕рд▓рд┐рдП рдЕрдВрдЬреАрд░ рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рди рдХрд░реЗрдВ matplotlib рдкреИрд░рд╛рдореАрдЯрд░ (рдпрд╛ рдЕрдиреНрдп рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрддреНрддрд░рджрд╛рдпреА рд╣реЛ)ред

@dansteingart - рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдкрд░реНрдпрд╛рдкреНрдд JS рд╣реИрдХреНрд╕ рдХреЗ рд╕рд╛рде, рдЖрдк рдЗрд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛, рдореИрдВ рдЙрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкреИрдХреЗрдЬ рдХреЛ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рдорд░реНрдерди рдореЗрдВ рдирд╣реАрдВ рд╣реВрдВред

рдХреНрдпреЛрдВ? рдЦреИрд░, рдПрдХ рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдкреИрдХреЗрдЬ рдХреЗ рдкреВрд░реНрд╡реЛрдХреНрдд рджрд░реНрд╢рди рдХреЗ рдЦрд┐рд▓рд╛рдл рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдкреНрд▓реЙрдЯ рддрддреНрд╡реЛрдВ, рдЖрдХреГрддрд┐ рдХреЗ рдЖрдХрд╛рд░ рдЖрджрд┐ рдХреЛ matplotlib рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рджреВрд╕рд░рд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ "рдЬрд░реВрд░реА" рд╕реБрд╡рд┐рдзрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреА рдЧреИрд░-рдЬрд░реВрд░реА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЖрдзрд╛рд░ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдмрдирд╛рдирд╛ рдкреИрдХреЗрдЬ рдХреЛ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдиреБрдХрд╕рд╛рди рдкрд╣реБрдВрдЪрд╛рдПрдЧрд╛ред рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕ рдкрд░ рдХреБрдЫ рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рд▓рд┐рдП, рдкрд┐рдЫрд▓реЗ рд╕рд╛рд▓ SciPy рдкрд░ @ellisonbg рдХреА рдмрд╛рддрдЪреАрдд рджреЗрдЦреЗрдВред

рдпрджрд┐ рдЖрдк рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрди рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред рдпрджрд┐ рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ plugins рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЗрд╕реЗ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рд▓рд╛рдпрдХ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рдлрд┐рдЧрд░ рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рдмрдбрд╝реЗ рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╣реВрдВ, рдЬреЛ рдкреИрдХреЗрдЬ рдХреЗ рджрд░реНрд╢рди рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИрдВ, рдЪрд╛рд╣реЗ рд╡реЗ рдХрд┐рддрдиреЗ рднреА рдЕрдЪреНрдЫреЗ рдХреНрдпреЛрдВ рди рд╣реЛрдВред

рдореИрдВ рдмрд╕ рдЗрд╕ рдкрд░ рдкрдХрдбрд╝рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд▓рдЧрдЗрди рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рджрд┐рд▓рдЪрд╕реНрдк рдЙрддреНрддрд░рджрд╛рдпреА рдЖрдХреГрддрд┐ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреВрд░рд╛ рдХрд░ рд╕рдХрддреА рд╣реИред @dansteingart рдиреЗ рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рдПрдХ рдлреАрдЪрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд┐рдпрд╛, рдФрд░ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рд╡рд╛рд▓ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рдерд╛ред рдкреНрд░рд╢реНрди рдХреЗ рдЙрддреНрддрд░ рдореЗрдВ, рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рдкреНрд▓рдЧрдЗрди рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ _objects.py рдпрд╛ _js.py рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛ рдХрд┐рддрдиреА рджреВрд░ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ, рддреЛ рдореИрдВ рдПрдХ рдХрджрдо рдкреАрдЫреЗ рд╣рдЯрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рдХрд┐рд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:

рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдЖрдХреГрддрд┐ рдХрд╛ рд╕реЗрдЯ рдЖрдХрд╛рд░ рд╕реНрдХреНрд░реАрди рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреИрдирд╡рд╛рд╕ рдЖрдХрд╛рд░ рдХреЛ рдмрд╛рдЙрдВрдбрд┐рдВрдЧ div рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ "рдЕрдзрд┐рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓" рд╣реЛрдЧрд╛, рдФрд░ рдлрд┐рд░ рдЙрд╕ div рдЖрдХрд╛рд░ рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЪреМрдбрд╝рд╛рдИ/рдЬреЛ рдХреБрдЫ рднреА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЕрдиреНрдпрдерд╛ рдбреЗрд╡рд▓рдкрд░ рдЪрд╛рд╣рддрд╛ рд╣реИред

рдореБрдЭреЗ рдЙрд╕ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдЪрд╛рд╣рд┐рдП рдЬрд╣рд╛рдВ рдпрд╣ рдЖрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред рдЕрдкрдиреЗ рдирд┐рдпрдорд┐рдд рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рдореЗрдВ, рдореИрдВ рдЕрдкрдиреЗ рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдЕрдзрд┐рдХрддрдо рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдиреЛрдЯрдмреБрдХ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде ipython рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рддреЛ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЖ рд╕рдХрддрд╛ рд╣реИ рдЕрдЧрд░ рдореИрдВ рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ рдкреНрд░рджрд░реНрд╢рди рд╕реЗ рдЕрдкрдиреЗ рд▓реИрдкрдЯреЙрдк рдбрд┐рд╕реНрдкреНрд▓реЗ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рд╕реНрдХреНрд░реАрди рдХреА рдЪреМрдбрд╝рд╛рдИ рдХрдо рд╣реЛрддреА рд╣реИред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЕрдиреНрдп рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рднреА рд╣реИрдВ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдиреНрдп рд▓реЛрдЧ рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВред рдФрд░ рдХреНрдпрд╛?

@jakevdp рдХрд╛рдлреА рдореЗрд▓рд╛ рд╣реИ, рдФрд░ рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдЕрдЬрдЧрд░ рдХреА рддрд░рдл _at all_ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬреЗрдПрд╕ рдкрдХреНрд╖ рдкрд░ рдпрд╣ рд╕рдм рдЙрдЪрд┐рдд рдЦреЗрд▓ рд╣реИ, рдФрд░ рдпрджрд┐ рдкреНрд░рдпреЛрдЧ рдХрд╛ рдмрд┐рдВрджреБ matplotlib рдФрд░ d3js рдХреЗ рд╕рд░реНрд╡реЛрддреНрддрдо рдкрд╣рд▓реБрдУрдВ рд╕реЗ рд╢рд╛рджреА рдХрд░рдирд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред

рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдореИрдВ рдЗрд╕реЗ рджреЗрдЦрддрд╛ рд╣реВрдВ, рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк fig_to_d3 рдкрд░ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЕрдЬрдЧрд░ рднреВрдорд┐ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЖрдХреГрддрд┐ рдХреЛ рдЙрддреНрддрд░рджрд╛рдпреА рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ = рдмреЗрд╣рддрд░ рдЬреЗрдПрд╕ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВред

рдЙрддреНрддрд░рджрд╛рдпреА рдкреГрд╖реНрдареЛрдВ рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рд▓рд┐рдП, рдЕрдХреЗрд▓реЗ iPython рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЖрдкрд╕реЗ рд╕рд╣рдордд рд╣реВрдВ, рд▓реЗрдХрд┐рди Python iPython рдиреЛрдЯрдмреБрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдЕрдВрддрддрдГ, mpl3d рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдХрд╛рд░ рдХреЗ рдЙрддреНрддрд░рджрд╛рдпреА рд╡реЗрдм рдкреЗрдЬ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдпрд╣рд╛рдВ рдмрддрд╛рдП рдЧрдП рд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

рдЖрдкрдХреЗ рддрд░реНрдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЕрдЧрд░ рдореИрдВ matplotlib рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЬрд╝реВрдо рдЗрди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдмрд╕ xlim/ylim.

рдлрд┐рд░ рд╕реЗ рдорд╣рд╛рди рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдореИрдВ рдПрдХ рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд╛рдкрд╕ рдЖрдКрдВрдЧрд╛ред

@aflaxman

рдореБрдЭреЗ рдЙрд╕ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдЪрд╛рд╣рд┐рдП рдЬрд╣рд╛рдВ рдпрд╣ рдЖрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред рдЕрдкрдиреЗ рдирд┐рдпрдорд┐рдд рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рдореЗрдВ, рдореИрдВ рдЕрдкрдиреЗ рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдЕрдзрд┐рдХрддрдо рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдиреЛрдЯрдмреБрдХ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде ipython рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рддреЛ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЖ рд╕рдХрддрд╛ рд╣реИ рдЕрдЧрд░ рдореИрдВ рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ рдкреНрд░рджрд░реНрд╢рди рд╕реЗ рдЕрдкрдиреЗ рд▓реИрдкрдЯреЙрдк рдбрд┐рд╕реНрдкреНрд▓реЗ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рд╕реНрдХреНрд░реАрди рдХреА рдЪреМрдбрд╝рд╛рдИ рдХрдо рд╣реЛрддреА рд╣реИред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЕрдиреНрдп рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рднреА рд╣реИрдВ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдиреНрдп рд▓реЛрдЧ рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВред рдФрд░ рдХреНрдпрд╛?

рджреЗрдЦреЗрдВ http://pithy.io

рдореИрдВрдиреЗ рдореБрдЭреЗ/рдореЗрд░реЗ рд╕рдореВрд╣/рдореЗрд░реА рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдерд╛ рдЬреЛ рдлрд┐рд░ рд╡реЗрдм рдРрдкреНрд╕ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреА рд╣реИрдВред рдлрд┐рдЧрд░ рдлрд┐рдЯ рд╣реЛрдиреЗ рд╕реЗ рдЦрд┐рдбрд╝рдХреА рдЬреАрд╡рди рдХреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдмрдирд╛рддреА рд╣реИред MPL3d рдореБрдЭреЗ рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ рдкреНрд▓реЙрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫреЗ рдЯреВрд▓ рджреЗрддрд╛ рд╣реИ (рдореИрдВ рд╣реИрдХрд┐рдВрдЧ рдлрд╝реНрд▓реЛрдЯ рдЪрд╛рд░реЛрдВ рдУрд░ рдХрд░ рд░рд╣рд╛ рдерд╛), рдФрд░ рдпрджрд┐ рдЗрдВрдЯрд░реЗрдХреНрдЯрд┐рд╡ рдкреНрд▓реЙрдЯ рдЖрдХрд╛рд░ рдЙрддреНрддрд░рджрд╛рдпреА рд╣реИрдВ, рддреЛ рдпрд╣ рд╕рдм рдЬреАрдд рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж @dansteingartред рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рднрд▓реЗ рд╣реА JS Python рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╣реЛ, рдлрд┐рд░ рднреА рдпрд╣ рдХреЛрдб рд╣реИ рдФрд░ рдЗрд╕реЗ рдЕрднреА рднреА рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдУрдкрди рд╕реЛрд░реНрд╕ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХреЗ рд╕рд╛рде рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдореЗрд░рд╛ рдЕрдиреБрднрд╡ рдпрд╣ рд╣реИ рдХрд┐ рд▓реЛрдЧ рдЕрдХреНрд╕рд░ рд╕рд╛рде рдЖрддреЗ рд╣реИрдВ рдЬреЛ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕рд╛рд╣рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдПрдХ рдмрд╛рд░ рдЙрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд╡рд┐рд▓рдп рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЙрдирдХрд╛ рд░рдЦрд░рдЦрд╛рд╡ рдФрд░ рд░рдЦрд░рдЦрд╛рд╡ рдЙрди рдХреБрдЫ рджреЗрд╡реЛрдВ рдХреЗ рдХрдВрдзреЛрдВ рдкрд░ рдЖ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдкреИрдХреЗрдЬ рдореЗрдВ рдирд┐рд╡реЗрд╢ рдХрд┐рдпрд╛ рд╣реИред рджреАрд░реНрдШрд╛рд╡рдзрд┐ред рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрд╕ рдмрд┐рдВрджреБ рдкрд░ рдЕрддреНрдпрдзрд┐рдХ рдкреНрд░рддрд┐рдмрджреНрдз рд╣реВрдВ рдЬрд╣рд╛рдВ рдореБрдЭреЗ рдХреБрдЫ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдмрдирд╛рдП рдЧрдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдкреИрдХреЗрдЬреЛрдВ рдкрд░ рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реЛрдирд╛ рдкрдбрд╝рд╛ред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдХрд┐ mpld3 рдЙрд╕ рдмрд┐рдВрджреБ рддрдХ рдкрд╣реБрдВрдЪреЗред

рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдФрд░ рдореИрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рд╣реВрдВ рдХрд┐ рдЖрдк рдПрдХ рдкреНрд▓рдЧрдЗрди рдореЗрдВ рдХреНрдпрд╛ рдПрдХ рд╕рд╛рде рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред

@jakevdp рдЙрд╕ рдмрд┐рдВрджреБ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд▓рдЧрдЗрди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдЙрд╕ рдЕрдВрдд рддрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдпрд╣ рдореЗрд░реА рдЧрд▓рддреА рд╣реЛрдЧреА, рдЖрдкрдХреА рдирд╣реАрдВ (рдЕрд░реНрдерд╛рдд, рдЬрдм рддрдХ рдХрд┐ рдЖрдк fig_to_d3 :-p рдирд╣реАрдВ рдмрджрд▓рддреЗ)

рдкреБрдирд░реНрд▓реЗрдЦрди рдЖ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдХрдо рд╕реЗ рдХрдо рд╡рд┐рд╢реЗрд╖ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрди рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП _slightly_ рдЖрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВрдиреЗ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреА рдЧрддрд┐рд╢реАрд▓ рд╕реНрдерд┐рддрд┐ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рдиреБрдХрд╕рд╛рди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдЧрд░ рдЖрдк рдЗрд╕ рдкрд░ рдХреЛрдИ рдкреНрд░рдЧрддрд┐ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред

рдирдорд╕реНрддреЗ, рдорд╣рд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдХреНрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреЛрдИ рдкреНрд░рдЧрддрд┐ рд╣реБрдИ рд╣реИ? рдХреНрдпрд╛ рдкреНрд▓рдЧрдЗрди / рдлреАрдЪрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдореИрдВ "рдХреИрдирд╡рд╛рд╕ рдЖрдХрд╛рд░ рдХреЛ рдмрд╛рдЙрдВрдбрд┐рдВрдЧ рдбрд┐рд╡ рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдХрд▓реНрдк" рдХреА рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдзрдиреНрдпрд╡рд╛рджред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдпреЛрдЧреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рдЬрд┐рд╢ рд░рдЪрдиреЗ рдХреЗ рдмрд╛рдж рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдЖрдк 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% рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рд╕реАрдзреЗ рд╕реАрдПрд╕рдПрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рд╕реАрдПрд╕рдПрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдКрдВрдЪрд╛рдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИ)ред

рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдХреЗ рдХреНрд░реЛрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдХреНрд░реЙрд╕-рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдиреАрдЪреЗ рдХреА рд░реЗрдЦрд╛ рд╕реНрдкрд╖реНрдЯ рд╣реИред

рдкреАрдПрд╕: https://css-tricks.com/scale-svg рдкрд░ рдПрдХ рдкреГрд╖реНрдарднреВрдорд┐ рдЖрд▓реЗрдЦ рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рднреНрд░рдорд┐рдд рд▓рдЧрддрд╛ рд╣реИ рдЬрдм рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╡рд┐рдзрд┐ рдХреЗрд╡рд▓ рдХрд╛рдо рдХрд░рддреА рд╣реИ (рдХрдо рд╕реЗ рдХрдо рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ) рдФрд░ рдЕрд╡рдзрд╛рд░рдгрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рд╕рд░рд▓ рд╣реИ: viewBox = "0 0 ${width} ${height}" рдЖрдВрддрд░рд┐рдХ рдХреЛрдб рдХреЗ рд▓рд┐рдП, width=... рдФрд░ height=... svg рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╛ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдкреБрди: рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕реАрдПрд╕рдПрд╕ рдкреИрд░рд╛рдореАрдЯрд░ред

рд╣рд╛рдБ рдареАрдХ рд╣реИ, рдареАрдХ рдпрд╣реА @carlinmack рдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рд╣реИред рдореИрдВ "рдЖрдХреГрддрд┐ рдХреЛ рдСрдЯреЛрд╕реНрдХреЗрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП d3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ" рд╕реЗ рднреНрд░рдорд┐рдд рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╢реБрджреНрдз HTML / CSS рд╣реИ, рд▓реЗрдХрд┐рди рдареАрдХ рд╣реИ, 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() рдореЗрдВ рднреА рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

jakevdp picture jakevdp  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

pranet picture pranet  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ledmonster picture ledmonster  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

sheldonpark picture sheldonpark  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

edvakf picture edvakf  ┬╖  29рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ