Ipython: %matplotlib 인라인은 ipywidgets 6.0κ³Ό 잘 μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

에 λ§Œλ“  2017λ…„ 03μ›” 03일  Β·  46μ½”λ©˜νŠΈ  Β·  좜처: ipython/ipython

Jupyter λ…ΈνŠΈλΆμ—μ„œ %matplotlib inline λŠ” 더 이상 μƒˆλ‘œμš΄ ipywidgets 6.0 @interact 와 잘 μž‘λ™ν•˜μ§€ μ•ŠλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. λ‚΄κ°€ μ•„λŠ” ν•œ 인라인 λ°±μ—”λ“œλŠ” 이미지와 ν•¨κ»˜ display_data λ©”μ‹œμ§€λ₯Ό 보내기 전에 셀이 μ™„μ „νžˆ 끝날 λ•ŒκΉŒμ§€ κΈ°λ‹€λ¦½λ‹ˆλ‹€(https://github.com/ipython/ipython/blob/7cde22957303ab53df8bd464ad5d7ed616197f31/에 λ“±λ‘λœ μ‹€ν–‰ ν›„ ν›… μ°Έμ‘°). IPython/core/pylabtools.py#L383). ipywidgets 6.0μ—μ„œλŠ” μš°λ¦¬κ°€ μΊ‘μ²˜ν•œ 좜λ ₯에 λŒ€ν•΄ 보닀 ꡬ체적으둜 μƒν˜Έ μž‘μš©μ΄ μž‘λ™ν•˜λŠ” 방식을 λ³€κ²½ν–ˆμŠ΅λ‹ˆλ‹€. ν•¨μˆ˜ μ‹€ν–‰ 쀑에 전솑

import matplotlib.pyplot as plt
from ipywidgets import interact

%matplotlib inline
x = [1,2,5,4,3]
@interact(n=(2,5))
def f(n):
    plt.plot(x[:n])

이 λ¬Έμ œλŠ” 인라인 λ°±μ—”λ“œ(μœ μš©ν•¨)와 잘 μž‘λ™ν•˜κ³  ipywidgets μƒν˜Έ μž‘μš©κ³Όλ„ 잘 μž‘λ™ν•˜λŠ” 쒋은 μ†”λ£¨μ…˜μ„ 찾을 수 μžˆλŠ” 방법이 μžˆλŠ”μ§€ μ•Œμ•„λ³΄κΈ° μœ„ν•΄ 토둠을 μ‹œμž‘ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄ 인라인 λ°±μ—”λ“œμ— 이미지λ₯Ό μ¦‰μ‹œ ν”ŒλŸ¬μ‹œν•˜λ„λ‘ μ§€μ‹œν•˜κ³  μ…€ 싀행이 μ™„λ£Œλœ ν›„μ—λŠ” ν”ŒλŸ¬μ‹œν•˜μ§€ μ•Šλ„λ‘ ν•˜λŠ” 방법이 μžˆλ‹€λ©΄ κ·Έκ²ƒμœΌλ‘œ μΆ©λΆ„ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 μ½”λ“œλŠ” 예λ₯Ό λ“€μ–΄ μž‘λ™ν•©λ‹ˆλ‹€(인라인 λ°±μ—”λ“œκ°€ ν™œμ„±ν™” λ˜μ§€ μ•Šμ€ μƒνƒœ )

import matplotlib.pyplot as plt
from ipywidgets import interact

x = [1,2,5,4,3]
@interact(n=(2,5))
def f(n):
    plt.plot(x[:n])
    plt.show()

CC @SylvainCorlay , @tacaswell.

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

μ•ˆλ…• λͺ¨λ‘, λ‚˜λŠ” μ΄κ²ƒμ˜ 기술적 μ„ΈλΆ€ 사항을 λ”°λ₯΄μ§€ μ•Šμ•˜μ§€λ§Œ λ¬Έμ œκ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€. κ΅¬ν˜„ μ„ΈλΆ€ 사항에 관계없이 matplotlib+interactκ°€ κ°€λŠ₯ν•œ ν•œ "κ·Έλƒ₯ μž‘λ™"ν•˜λŠ” 것이 맀우 μ€‘μš”ν•˜λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

λͺ¨λ“  46 λŒ“κΈ€

이것은 μž‘λ™ν•˜λŠ” 것 κ°™μ§€λ§Œ 더 λ‚˜μ€ 방법에 λŒ€ν•œ μ†”λ£¨μ…˜μ΄ μžˆλŠ” μ‚¬λžŒμ΄ μžˆμŠ΅λ‹ˆκΉŒ?

import matplotlib.pyplot as plt
from ipywidgets import interact
from ipykernel.pylab.backend_inline import flush_figures

%matplotlib inline
x = [1,2,5,4,3]
@interact(n=(2,5))
def f(n):
    plt.plot(x[:n])
    flush_figures()

인라인 mpl λ°±μ—”λ“œμ—μ„œ μž‘μ—…ν•œ CC @minrk .

μš°λ¦¬κ°€ ν•  수 μžˆλŠ” 일은 λ³„λ‘œ μ—†λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

그림을 ν‘œμ‹œν•˜κΈ° μœ„ν•΄ μ–΄λ–€ νœ΄λ¦¬μŠ€ν‹±μ„ μ‚¬μš©ν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ? λ§Žμ€ μ½”λ“œ μž¬μ‚¬μš© 수치만큼 λͺ¨λ“  수치 μ—…λ°μ΄νŠΈλ₯Ό ν•  μˆ˜λŠ” μ—†μ§€λ§Œ μ• λ‹ˆλ©”μ΄μ…˜μ΄ μžˆλŠ” 것이 μΌλ°˜μ μž…λ‹ˆλ‹€.

각 μž‘μ—… ν›„ ν”ŒλŸ¬μ‹œν•  특수 μΌ€μ΄μŠ€ @interact ?

각 μž‘μ—… 후에 ν”ŒλŸ¬μ‹œν•  특수 μΌ€μ΄μŠ€ @interact ?

쒋은 지적, μ œμ•ˆ κ°μ‚¬ν•©λ‹ˆλ‹€. (matplotlib에 λŒ€ν•œ νŠΉλ³„ν•œ 경우 ν•˜λ‚˜μ˜ νŠΉμ • λ°±μ—”λ“œμ— λŒ€ν•΄) 그것을 μˆ˜ν–‰ν•˜λŠ” 것이 맀우 κΉ¨λ—ν•˜λ‹€κ³  β€‹β€‹λŠκ»΄μ§€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ•„λ§ˆλ„ μœ„μ˜ μ˜ˆμ™€ 같이 μ‚¬μš©μžκ°€ λͺ…μ‹œμ μœΌλ‘œ 좜λ ₯을 ν”ŒλŸ¬μ‹œν•˜λŠ” 것이 큰 λ¬Έμ œμΈμ§€ ν™•μΈν•˜κΈ° μœ„ν•΄ 기닀릴 κ²ƒμž…λ‹ˆλ‹€. λ‚΄ 말은, λͺ…μ‹œμ μΈ 것이 μ•”μ‹œμ μΈ 것보닀 λ‚«κ³  κ·Έ λͺ¨λ“  것이...

νŽΈμ§‘: μš”μ•½ν•˜μžλ©΄, μ €λŠ” μš°λ¦¬κ°€ ν•  수 μžˆλŠ”(λ˜λŠ” ν•΄μ•Ό ν•˜λŠ”) 것이 λ§Žμ§€ μ•Šλ‹€λŠ” 데 λ™μ˜ν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€...

이것은 λ‚΄κ°€ μƒκ°ν–ˆλ˜ 것보닀 훨씬 μ‰½λ‹€λŠ” 것이 λ°ν˜€μ‘ŒμŠ΅λ‹ˆλ‹€. μ œκ°€ 이것을 더 일찍 ν…ŒμŠ€νŠΈν•˜λ €κ³  ν–ˆμ„ λ•Œ μ œκ°€ λ­”κ°€ 잘λͺ»ν•œ 것이 ν‹€λ¦Όμ—†μŠ΅λ‹ˆλ‹€. μš°λ¦¬λŠ” flush_figuresλ₯Ό ν˜ΈμΆœν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€. ν‘œμ€€ plt.showλ₯Ό ν˜ΈμΆœν•˜λŠ” κ²ƒμœΌλ‘œ μΆ©λΆ„ν•©λ‹ˆλ‹€:

import matplotlib.pyplot as plt
from ipywidgets import interact

%matplotlib inline
x = [1,2,5,4,3]
@interact(n=(2,5))
def f(n):
    plt.plot(x[:n])
    plt.show()

μ‚¬λžŒλ“€μ—κ²Œ μƒν˜Έ μž‘μš©μ— show() λͺ…령을 μ‚½μž…ν•˜λ„λ‘ μš”μ²­ν•˜λŠ” 것이 맀우 합리적이라고 μƒκ°ν•˜λ―€λ‘œ 이λ₯Ό λ‹«μŠ΅λ‹ˆλ‹€.

이 λ™μž‘(및 λ‹€λ₯Έ 잠재적인 사후 μ‹€ν–‰ 좜λ ₯)을 μœ μ§€ν•˜λ €λ©΄ 좜λ ₯ μΊ‘μ²˜κ°€ μ™„λ£Œλ˜κΈ° 전에 μƒν˜Έ μž‘μš©μ—μ„œ 사후 X 후크λ₯Ό λͺ…μ‹œμ μœΌλ‘œ ν˜ΈμΆœν•  수 μžˆμŠ΅λ‹ˆκΉŒ? 일반적으둜 μƒν˜Έ μž‘μš©μ„ 톡해 ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λŠ” 것에 λŒ€ν•œ λ‚˜μ˜ κΈ°λŒ€λŠ” 마치 λ‚΄κ°€ μ…€μ—μ„œ ν•œ 번 ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•œ 것과 μ •ν™•νžˆ λ™μΌν•˜κ²Œ μž‘λ™ν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

'λŒ€ν™”ν˜•' matplotlibλŠ” 일반적으둜 plt.showκ°€ λΆˆν•„μš”ν•˜λ‹€λŠ” 것을 μ˜λ―Έν•˜κΈ° λ•Œλ¬Έμ— μ‚¬λžŒλ“€μ΄ matplotlib와 μƒν˜Έ μž‘μš©ν•˜λŠ” λͺ¨λ“  μ˜ˆμ œμ— 놀라 κ·Έλ¦Ό ν‘œμ‹œλ₯Ό 쀑지할 κ²ƒμœΌλ‘œ μ˜ˆμƒν•©λ‹ˆλ‹€. λŒ€ν™”ν˜• ν•¨μˆ˜μ— 넣어도 μ•„λ§ˆ λ°”λ€Œμ§€ β€‹β€‹μ•Šμ„ κ²ƒμž…λ‹ˆλ‹€.

IOThreadκ°€ λ„μž…λ˜κΈ° 전에 좜λ ₯을 보기 μœ„ν•΄ sys.stdout.flush() κ°€ ν•„μš”ν–ˆλ˜ 것을 μ•½κ°„ μƒκΈ°μ‹œν‚΅λ‹ˆλ‹€. 일이 μ–΄λ–»κ²Œ μž‘λ™ν•˜λŠ”μ§€ 생각할 λ•Œ μ™œ 그것이 ν•„μš”ν•œμ§€ 이해가 λ˜μ—ˆμ§€λ§Œ μ‚¬λžŒλ“€μ΄ κΈ°λŒ€ν•˜λŠ” λŒ€λ‘œ ν–‰λ™ν•˜μ§€ μ•Šμ•˜κΈ° λ•Œλ¬Έμ— 그것이 덜 λ†€λΌμš΄ 것은 μ•„λ‹™λ‹ˆλ‹€.

λ‚˜λŠ” μš°λ¦¬κ°€ λͺ¨λ“  사후 μ‹€ν–‰ ν•Έλ“€λŸ¬λ₯Ό μžλ™μœΌλ‘œ μ‹€ν–‰ν•΄μ•Ό ν•œλ‹€κ³  μƒκ°ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. flush_display 후크λ₯Ό κ°–λŠ” 것은 μ–΄λ–»μŠ΅λ‹ˆκΉŒ? μƒν˜Έ μž‘μš©μ„ μ‹œμž‘ν•˜κΈ° 전에 ν”ŒλŸ¬μ‹œν•˜κ³  μ’…λ£Œ 직전에 λ‹€μ‹œ ν”ŒλŸ¬μ‹œν•©λ‹ˆλ‹€. κ·Έλ ‡κ²Œ ν•˜λ©΄ stdout/stdin을 ν”ŒλŸ¬μ‹œν•˜λŠ” 것과 μ •ν™•νžˆ μœ μ‚¬ν•©λ‹ˆλ‹€.

κΈ€μŽ„, λ˜λŠ” λ‹€λ₯Έ ν•œνŽΈμœΌλ‘œ, μš°λ¦¬κ°€ μ‹€μ œλ‘œ 단일 μ…€μ²˜λŸΌ μž‘λ™ν•˜λŠ” μƒν˜Έ μž‘μš©μ„ μƒκ°ν•œλ‹€λ©΄ 사후 싀행이라고 λΆ€λ₯΄λŠ” 것이 합리적일 수 μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μƒν˜Έ μž‘μš©μ΄ λ‹€λ₯Έ ν•­λͺ©κ³Ό ν•¨κ»˜ 셀에 μžˆλŠ” 경우λ₯Ό λŒ€λΉ„ν•˜μ—¬ μƒν˜Έ μž‘μš©μ΄ μ‹€ν–‰ 되기 μ „κ³Ό 후에 μ‹€ν–‰ ν›„ ν˜ΈμΆœμ„ 원할 κ²ƒμž…λ‹ˆλ‹€.

λŒ€ν™”κ°€ 아직 λλ‚˜μ§€ μ•Šμ•˜κΈ° λ•Œλ¬Έμ— μž¬κ°œν•©λ‹ˆλ‹€...

λ‚˜λŠ” flush_display ν›„ν¬μ˜ 아이디어λ₯Ό μ’‹μ•„ν•˜κ³  이둠적으둜 μž‘λ™ν•  κ²ƒμž…λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μƒˆ 후크λ₯Ό μ •μ˜ν•˜κ³  λ°±μ—”λ“œλ₯Ό μ‚¬μš©ν•˜λ„λ‘ μ „ν™˜ν•˜λ €λ©΄ ipythonκ³Ό ipykernel 및 ipywidget의 μ‘°μ •λœ λ¦΄λ¦¬μŠ€κ°€ ν•„μš”ν•©λ‹ˆλ‹€.

μƒν˜Έ μž‘μš©μ΄ μ‹€μ œλ‘œ 단일 μ„Έν¬μ²˜λŸΌ μž‘λ™ν•œλ‹€κ³  μƒκ°ν•˜λ©΄

λ‚˜λŠ” 이것이 κ·Έλ“€μ˜ 핡심이라고 μƒκ°ν•˜κ³  그것은 큰 'λ§Œμ•½'μž…λ‹ˆλ‹€. λ‚΄κ°€ μƒκ°ν•˜λŠ” λ°©μ‹μ΄μ§€λ§Œ (아직) λ‚˜λŠ” λͺ¨λ“  μ‚¬λžŒμ΄ μ•„λ‹™λ‹ˆλ‹€.

f μš°λ¦¬λŠ” μ‹€μ œλ‘œ 단일 μ„Έν¬μ²˜λŸΌ μž‘λ™ν•˜λŠ” μƒν˜Έ μž‘μš©μ„ μƒκ°ν•©λ‹ˆλ‹€.
λ‚˜λŠ” 이것이 κ·Έλ“€μ˜ 핡심이라고 μƒκ°ν•˜κ³  그것은 큰 'λ§Œμ•½'μž…λ‹ˆλ‹€. λ‚΄κ°€ μƒκ°ν•˜λŠ” λ°©μ‹μ΄μ§€λ§Œ (아직) λ‚˜λŠ” λͺ¨λ“  μ‚¬λžŒμ΄ μ•„λ‹™λ‹ˆλ‹€.

이것에 λŒ€ν•΄ ν˜Όλž€μŠ€λŸ¬μš΄ 점은 μ½”λ“œκ°€ μžˆλŠ” 셀이 있고 μƒν˜Έ μž‘μš©μ΄ μ‹€ν–‰λ˜κ³  μ½”λ“œκ°€ λͺ‡ 개 더 있으면 셀이 μ‹€μ œλ‘œ μ„Έ 개의 μ…€μ²˜λŸΌ μ‹€ν–‰λœλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€(즉, 사후 싀행이 μ„Έ 번 λ‹€λ₯Έ 경우). 그런 κ²½μš°μ—λŠ” flush_displayκ°€ 더 합리적이라고 μƒκ°ν•©λ‹ˆλ‹€.

μΆ”κ°€ 질문: JLabμ—μ„œ 미러링된 좜λ ₯이 μž‘λ™ν•©λ‹ˆκΉŒ?

@willingc μœ„μ ―μ€ 미러링된 좜λ ₯κ³Ό ν•¨κ»˜ μž‘λ™ν•©λ‹ˆλ‹€.

@SylvainCorlay λ‚˜λŠ” 그듀이 μ§€κΈˆ μž‘λ™

μ†ŒμŒ μ£„μ†‘ν•©λ‹ˆλ‹€.

μž₯기적으둜 더 잘 μž‘λ™ν•΄μ•Ό ν•˜λŠ” μ ‘κ·Ό 방식은 matplotlib에 λŒ€ν•œ ipympl μœ„μ ― λ°±μ—”λ“œλΌκ³  μƒκ°ν•©λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ 이 λͺ¨λ“  것을 conf.d λ“±μœΌλ‘œ 더 μ‰½κ²Œ μ„€μΉ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€.

예, 미러링된 좜λ ₯은 μœ„μ—μ„œ μ„€λͺ…ν•œ λ³€κ²½ 사항과 ν•¨κ»˜ μž‘λ™ν•΄μ•Ό ν•©λ‹ˆλ‹€. ν™•μΈν•΄μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€!

이것에 λŒ€ν•΄ ν˜Όλž€μŠ€λŸ¬μš΄ 점은 μ½”λ“œκ°€ μžˆλŠ” 셀이 있고 μƒν˜Έ μž‘μš©μ΄ μ‹€ν–‰λ˜κ³  μ½”λ“œκ°€ λͺ‡ 개 더 있으면 셀이 μ‹€μ œλ‘œ μ„Έ 개의 μ…€μ²˜λŸΌ μ‹€ν–‰λœλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€(즉, 사후 싀행이 μ„Έ 번 λ‹€λ₯Έ 경우).

사싀, 그것은 쑰금 이상할 κ²ƒμž…λ‹ˆλ‹€. κ·Έλž˜λ„ 2λ²ˆμ€ μ•ˆλ˜κ² μ£ ? ν•˜λ‚˜λŠ” μ…€ 전체λ₯Ό μœ„ν•œ 것이고 λ‹€λ₯Έ ν•˜λ‚˜λŠ” μƒν˜Έ μž‘μš©μ˜ 첫 번째 ν˜ΈμΆœμ„ μœ„ν•œ κ²ƒμž…λ‹ˆκΉŒ? μƒκ°ν•˜λŠ” 방식에 따라 이것도 μ˜λ―Έκ°€ μžˆμŠ΅λ‹ˆλ‹€. @interact λ₯Ό μ‚¬μš©ν•˜λ©΄ 선언에 λŒ€ν•œ μ‹€ν–‰κ³Ό μƒν˜Έ μž‘μš©ν•˜λŠ” ν•¨μˆ˜μ˜ 첫 번째 ν˜ΈμΆœμ— λŒ€ν•œ μ‹€ν–‰μ΄λΌλŠ” 두 가지 싀행이 μžˆμŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄ @interact_manual λ₯Ό μ‚¬μš©ν–ˆλ‹€λ©΄ λ‘˜ 이상이 없을 것이라고 μƒκ°ν•©λ‹ˆλ‹€(ν™•μ‹€ν•˜μ§€ μ•ŠμŒ).

κ·Έλž˜λ„ 2λ²ˆμ€ μ•ˆλ˜κ² μ£ ? ν•˜λ‚˜λŠ” μ…€ 전체λ₯Ό μœ„ν•œ 것이고 λ‹€λ₯Έ ν•˜λ‚˜λŠ” μƒν˜Έ μž‘μš©μ˜ 첫 번째 ν˜ΈμΆœμ„ μœ„ν•œ κ²ƒμž…λ‹ˆκΉŒ?

λ‹€μŒ μ½”λ“œλ₯Ό κ³ λ €ν•˜μ‹­μ‹œμ˜€.

plt.plot([1,2,3])
@interact(n=(1,10))
def f(n):
    plt.plot([1,n])
plt.plot([4,5,6])

ν”Œλ‘œνŒ…μ€ λˆ„μ λ˜λ―€λ‘œ μƒν˜Έ μž‘μš©μ„ 자체적으둜 λ³„λ„μ˜ μ…€λ‘œ μ²˜λ¦¬ν•˜λ €λ©΄ μƒν˜Έ μž‘μš©μ΄ μ‹€ν–‰λ˜κΈ° 전에 Figureλ₯Ό ν”ŒλŸ¬μ‹œν•˜κ³  μƒν˜Έ μž‘μš© λ‚΄λΆ€μ˜ Figureλ₯Ό ν”ŒλŸ¬μ‹œν•œ λ‹€μŒ μ…€ λμ—μ„œ λ‹€μ‹œ ν•œ 번 ν”ŒλŸ¬μ‹œν•΄μ•Ό ν•©λ‹ˆλ‹€. 이것은 μš°λ¦¬κ°€ stdout을 ν”ŒλŸ¬μ‹œν•˜λŠ” 것과 μ •ν™•νžˆ μΌμΉ˜ν•©λ‹ˆλ‹€.

사싀 μœ„μ˜ μ˜ˆμ—μ„œ μ‚¬μš©μžκ°€ 무엇을 κΈ°λŒ€ν•˜λŠ”μ§€ 잘 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€. 무엇을 κΈ°λŒ€ν•˜κ² μŠ΅λ‹ˆκΉŒ?

생각해보면 μœ„μ˜ μ˜ˆλŠ” 그닀지 논리적이지 μ•ŠμŠ΅λ‹ˆλ‹€. 개인적으둜 ν•˜λ‚˜μ˜ ν”Œλ‘―λ§Œ λ™μ μœΌλ‘œ λ³€κ²½λ˜λŠ” μ„Έ 개의 ν”Œλ‘―μ„ μ˜ˆμƒν•˜μ§€λ§Œ 이와 같은 μž‘μ—…μ„ μˆ˜ν–‰ν•˜λ €λ©΄ @interact λ‚΄λΆ€μ˜ λͺ¨λ“  ν”Œλ‘― ν˜ΈμΆœμ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€.

μ–΄λ–€ 이유둜 μ „ν™”λ₯Όν•˜μ§€ 거기에 flush_figures 각 ν›„ .plot() ?

@myyc μ΄λŠ” ν–‰λ™μ˜ 의미 μžˆλŠ” μ€‘μš”ν•œ λ³€ν™”μž…λ‹ˆλ‹€. plot λŠ” ν”Œλ‘―μ— ν•­λͺ©μ„ μΆ”κ°€ν•©λ‹ˆλ‹€....

matplotlib와 달리 νŠΉμ • ipython 인라인 λ™μž‘μ„ μ˜λ―Έν–ˆμŠ΅λ‹ˆλ‹€.

νŽΈμ§‘ : μœ„μ—μ„œ μ„€λͺ…ν•œ κ²½μš°μ™€ 달리 "μœ μΌν•œ ν”Œλ‘œνŒ… κΈ°λŠ₯"으둜 μ…€λ‹Ή ν•˜λ‚˜μ˜ μƒν˜Έ μž‘μš©μ„ κ°–λŠ” 것이 더 일반적인 μ‚¬μš© 사둀라고 ν™•μ‹ ν•©λ‹ˆλ‹€ ...

이해 ν–ˆμ–΄μš”. λ‚˜λŠ” 이것이 κ·Έλ ‡κ²Œ λ‹€λ₯Έ 행동을 κ°€μ Έμ•Όν•œλ‹€κ³  μƒκ°ν•˜μ§€ μ•Šμ§€λ§Œ.

λ―Έλž˜μ— μ μ ˆν•œ μ ‘κ·Ό 방식은 μ•„λ§ˆλ„ λ…ΈνŠΈλΆ λ°±μ—”λ“œ λ˜λŠ” ipympl을 μ‚¬μš©ν•˜κ³  그림을 νŽΈμ§‘ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

ipywidgets의 μƒν˜Έ μž‘μš©μ—μ„œ 인라인 λ°±μ—”λ“œμ— λŒ€ν•œ matplotlib κ΄€λ ¨ ν•΄κ²° 방법을 κ΅¬ν˜„ν•˜λŠ” 것이 μ˜³μ§€ μ•Šμ€ 것 κ°™μŠ΅λ‹ˆλ‹€.

jason이 μ œκ³΅ν•œ μ½”λ“œμ—μ„œ:

plt.plot([1,2,3])
@interact(n=(1,10))
def f(n):
    plt.plot([1,n])
plt.plot([4,5,6])

μ˜ˆμƒ 좜λ ₯은 라인이 λ§Žμ€ κ·Έλ¦Όμž…λ‹ˆλ‹€..

예, μ „μ μœΌλ‘œ λ™μ˜ν•©λ‹ˆλ‹€. λ‚΄ 둜컬 μ„€μ •μ—μ„œ "μˆ˜μ • λŒ€κΈ° 쀑"μ΄λΌλŠ” λ°©μ‹μœΌλ‘œ μž„μ‹œλ‘œ μˆ˜μ •ν–ˆμŠ΅λ‹ˆλ‹€(νŒ¬λ” ν”Œλ‘œνŒ… 방법 λ¬΄μ‹œ)

이 λ¬Έμ œκ°€ λ‹€μ–‘ν•œ github ν”„λ‘œμ νŠΈμ—μ„œ λ°˜μ†‘λ˜λŠ” 것을 λ³΄μ•˜μœΌλ―€λ‘œ μ΅œμƒμ˜ ν•΄κ²° κ²½λ‘œκ°€ 무엇인지 κΆκΈˆν•©λ‹ˆλ‹€.

νŽΈμ§‘ : κ·Έλ ‡λ‹€λ©΄ 더 λͺ…μ‹œμ μœΌλ‘œ μ΄λ ‡κ²Œ μž‘μ„±ν•˜μ§€ μ•Šκ² μŠ΅λ‹ˆκΉŒ?

@interact(n=(1,10))
def f(n):
    plt.plot([1,2,3])
    plt.plot([1,n])
    plt.plot([4,5,6])

matplotlib μœ„μ ―μΈ ipympl νŒ¨ν‚€μ§€(https://github.com/matplotlib/jupyter-matplotlib)λ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. ipympl은 아직 초기 λ‹¨κ³„μ΄μ§€λ§Œ matplotlib 코어보닀 릴리슀 일정이 더 빨라야 ν•˜κ³  jupyterlab 등을 더 일찍 지원해야 ν•©λ‹ˆλ‹€...

확인은 λ¬΄μ‹œκ°€ λ”μ°ν•œ μ•„μ΄λ””μ–΄λΌλŠ” 것이 λ°ν˜€μ‘ŒμŠ΅λ‹ˆλ‹€. μ—…μŠ€νŠΈλ¦Όμ—μ„œ μˆ˜μ •μ„ κΈ°λŒ€ν•˜κ² μŠ΅λ‹ˆλ‹€ :)

κ΅μœ‘λ°›μ§€ λͺ»ν•œ μ‚¬μš©μž 관점에 κΈ°μ—¬ν•˜κΈ° μœ„ν•΄: ipywidgets 6.0으둜 μ—…λ°μ΄νŠΈν•œ ν›„ μœ„μ ― μ½”λ“œμ˜ λŒ€λΆ€λΆ„μ΄ μž‘λ™ν•˜μ§€ μ•ŠλŠ” 것을 λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€(μ—¬κΈ°μ—μ„œ λ…Όμ˜λœ 문제둜 인해). plt.show() ν˜ΈμΆœμ„ μΆ”κ°€ν•˜μ—¬ 문제λ₯Ό ν•΄κ²°ν•  수 μžˆμ—ˆμ§€λ§Œ μ΄λŸ¬ν•œ ν˜ΈμΆœμ„ μΆ”κ°€ν•˜λŠ” μœ„μΉ˜μ— λŒ€ν•΄ 맀우 μ£Όμ˜ν•΄μ•Ό ν•œλ‹€λŠ” 것도 μ•Œκ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. λ•Œλ•Œλ‘œ 이것을 λ„ˆλ¬΄ 빨리 ν˜ΈμΆœν•˜λ©΄ λ‚˜μ€‘μ— ν”Œλ‘―μ΄ λ‚˜νƒ€λ‚˜μ§€ μ•ŠλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€( plt.show() κ°€ λ‹€μ‹œ ν˜ΈμΆœλ˜λ”λΌλ„). λ‚˜λŠ” 이것을 μ΅œμ†Œν•œμ˜ 예λ₯Ό λ§Œλ“€ 만큼 μΆ©λΆ„νžˆ 찾아내지 μ•Šμ•˜μ§€λ§Œ ν˜„μž¬ λ™μž‘μ€ λ‚˜μ—κ²Œ 직관적이지 μ•Šμ€ κ²ƒμ²˜λŸΌ λ³΄μž…λ‹ˆλ‹€. λ‚˜λŠ” 그것을 ν”Όν•˜κΈ° μœ„ν•΄ μ‹œν–‰μ°©μ˜€λ₯Ό 톡해 ν”„λ‘œκ·Έλž˜λ°ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

ipywidgets의 μ •ν™•ν•œ 변경은 μ‹€μ œλ‘œ μƒˆλ‘œμš΄ λ™μž‘μ„ μΌμœΌμΌ°μŠ΅λ‹ˆκΉŒ? μ‹€ν–‰ ν›„ 후크가 μ „ν˜€ ν˜ΈμΆœλ˜μ§€ μ•ŠμŠ΅λ‹ˆκΉŒ, μ•„λ‹ˆλ©΄ μ—¬μ „νžˆ ν˜ΈμΆœλ˜μ§€λ§Œ μœ„μ ―μ΄ μ†Œμœ ν•œ 좜λ ₯에 λŒ€ν•΄ μœ„μ ―μ΄ νŠΉμ •λ˜κΈ° λ•Œλ¬Έμ— 좜λ ₯이 이제 μ‚­μ œλ©λ‹ˆκΉŒ? ν›„μžμ˜ 경우 캑처된 좜λ ₯을 ν•¨μˆ˜ λ³Έλ¬Έ 쀑에 κ²©λ¦¬ν•˜λŠ” 것이 μ˜¬λ°”λ₯Έ 일이 μ•„λ‹Œ κ²ƒμ²˜λŸΌ λ³΄μž…λ‹ˆλ‹€.

μ‹€ν–‰ ν›„ 후크가 호좜되고 μžˆμŠ΅λ‹ˆλ‹€(ν™•μ‹€ν•©λ‹ˆλ‹€).

import matplotlib.pyplot as plt
from ipywidgets import interact
%matplotlib inline

@interact(n=(0,10))
def f(n):
    plt.plot([0,n])

μŠ¬λΌμ΄λ”λ₯Ό μ΄λ™ν•©λ‹ˆλ‹€. ν”Œλ‘―μ΄ 셀에 μΆ”κ°€λ©λ‹ˆλ‹€. 사후 μ‹€ν–‰ 후크가 ν‘œμ‹œ 데이터 λ©”μ‹œμ§€λ₯Ό μ „μ†‘ν•©λ‹ˆλ‹€. μƒν˜Έ μž‘μš© 싀행은 μ‹€μ œλ‘œ ν•¨μˆ˜ 호좜 쀑에 λ°œμƒν•˜λŠ” 좜λ ₯ μΊ‘μ²˜μ—λ§Œ νŠΉν™”λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” 그것이 μ˜³μ€ 일이라고 μƒκ°ν•œλ‹€. 예λ₯Ό λ“€μ–΄ 두 개의 μ„œλ‘œ λ‹€λ₯Έ μƒν˜Έ μž‘μš©μ΄ μ™„μ „νžˆ λ™μΌν•œ μŠ¬λΌμ΄λ” μΈμŠ€ν„΄μŠ€λ₯Ό κ³΅μœ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

import matplotlib.pyplot as plt
from ipywidgets import interact, IntSlider
%matplotlib inline

x = IntSlider()
@interact(n=x)
def f(n):
    plt.plot([0,n])
    plt.show()
@interact(n=x)
def f(n):
    plt.plot([0,n,0,n])
    plt.show()

단일 μŠ¬λΌμ΄λ”κ°€ μ‘°μ •λ˜λ©΄(μ–΄λŠ UIμ—μ„œλ“ ) 두 μƒν˜Έ μž‘μš© λͺ¨λ‘ μŠ¬λΌμ΄λ”κ°€ μ›€μ§μ΄λŠ” 것을 보여주고 두 μƒν˜Έ μž‘μš© κΈ°λŠ₯이 λ™μΌν•œ μ‹€ν–‰ ν˜ΈμΆœμ—μ„œ μ‹€ν–‰λ©λ‹ˆλ‹€. 두 μƒν˜Έ μž‘μš©μ΄ 사후 μ‹€ν–‰ ν›„ν¬μ—μ„œ 좜λ ₯을 μΊ‘μ²˜ν•˜λ €κ³  μ‹œλ„ν•˜λŠ” 것은 잘λͺ»λœ κ²ƒμž…λ‹ˆλ‹€. λ‚˜λŠ” μ—¬κΈ°μ„œ 결점이 좜λ ₯을 μƒμ„±ν•˜κΈ° μœ„ν•΄ 사후 싀행을 μ‚¬μš©ν•˜κ³  μžˆλ‹€λŠ” 것인데, 그것은 λ„ˆλ¬΄ 거친 망치라고 μƒκ°ν•©λ‹ˆλ‹€. 단일 μ‹€ν–‰μ—μ„œ μ—¬λŸ¬ 번 호좜될 수 μžˆλŠ” μ½”λ“œ λΈ”λ‘μ—μ„œ μƒμ„±λœ 좜λ ₯을 ν”ŒλŸ¬μ‹œν•˜κΈ° μœ„ν•œ 보닀 μ„ΈλΆ„ν™”λœ λ©”μ„œλ“œκ°€ μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

μ½”λ“œ λΈ”λ‘μ—μ„œ μƒμ„±λœ 좜λ ₯을 ν”ŒλŸ¬μ‹œν•˜κΈ° μœ„ν•œ 보닀 μ„ΈλΆ„ν™”λœ 방법이 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

matplotlib ν”Œλ‘œνŒ…μ˜ 경우 이 ν”ŒλŸ¬μ‹±μ€ plt.show μˆ˜ν–‰ν•  λ•Œ λ°œμƒν•©λ‹ˆλ‹€.

μ΄λŸ¬ν•œ ν˜ΈμΆœμ„ μΆ”κ°€ν•˜λŠ” μœ„μΉ˜μ— λŒ€ν•΄ 맀우 μ£Όμ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€. λ•Œλ•Œλ‘œ 이것을 λ„ˆλ¬΄ 빨리 ν˜ΈμΆœν•˜λ©΄ λ‚˜μ€‘μ— ν”Œλ‘―μ΄ λ‚˜νƒ€λ‚˜μ§€ μ•ŠλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” 이런 일이 μΌμ–΄λ‚˜λŠ” 예λ₯Ό λ³΄λŠ” 데 μ •λ§λ‘œ 관심이 μžˆμŠ΅λ‹ˆλ‹€. μš°λ¦¬λŠ” λ™μž‘μ„ 직관적이고 이해할 수 μžˆλ„λ‘ λ§Œλ“€κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.

μ΄λŸ¬ν•œ ν˜ΈμΆœμ„ μΆ”κ°€ν•˜λŠ” μœ„μΉ˜μ— λŒ€ν•΄ 맀우 μ£Όμ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€. λ•Œλ•Œλ‘œ 이것을 λ„ˆλ¬΄ 빨리 ν˜ΈμΆœν•˜λ©΄ λ‚˜μ€‘μ— ν”Œλ‘―μ΄ λ‚˜νƒ€λ‚˜μ§€ μ•ŠλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” 이런 일이 μΌμ–΄λ‚˜λŠ” 예λ₯Ό λ³΄λŠ” 데 μ •λ§λ‘œ 관심이 μžˆμŠ΅λ‹ˆλ‹€. μš°λ¦¬λŠ” λ™μž‘μ„ 직관적이고 이해할 수 μžˆλ„λ‘ λ§Œλ“€κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.

μžμ„Ένžˆ μ„€λͺ…ν•˜μžλ©΄ ν”Œλ‘œνŒ…μ„ μˆ˜ν–‰ν•˜λŠ” μƒν˜Έ μž‘μš© ν•¨μˆ˜μ˜ λ§ˆμ§€λ§‰ 쀄에 plt.show() λ₯Ό μΆ”κ°€ν•˜λŠ” κ²ƒλ§ŒμœΌλ‘œλ„ 이전 λ™μž‘κ³Ό λ™μΌν•œ κ²°κ³Όλ₯Ό 얻을 수 μžˆλ‹€κ³  생각 ν•©λ‹ˆλ‹€. λ‚˜λŠ” 이것이 μž‘λ™ν•˜μ§€ μ•ŠλŠ” 예λ₯Ό λ³΄λŠ” 데 맀우 관심이 μžˆμŠ΅λ‹ˆλ‹€.

@jasongrout 봐 μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. λ‚΄κ°€ 이것을 μΉ˜λŠ” μ½”λ“œλŠ” λ‹€μ†Œ λ³΅μž‘ν•˜λ©° λ‚΄κ°€ λ‹€λ₯Έ 일을 잘λͺ»ν•˜κ³  μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. λ‚΄κ°€ 그것을 λ‹€μ‹œ 보게 λœλ‹€λ©΄ λ‚˜λŠ” 그것을 λΆ„λ¦¬ν•˜κ³  예λ₯Ό μ œκ³΅ν•˜λ €κ³  λ…Έλ ₯ν•  것이닀.

@jasongrout 쑰금 더 파고 ν›„, λ‚˜λŠ” λ‚΄κ°€ λ¬΄μ—‡μœΌλ‘œ μ‹€ν–‰ν–ˆμŠ΅λ‹ˆλ‹€ κ²ƒμ€ν•˜μ§€ μœ„μ ―μ˜, Jupyter λ…ΈνŠΈλΆ 자체의 μ†μ„±μž…λ‹ˆλ‹€ 생각 (ν•˜μ§€λ§Œ μš°λ¦¬λŠ” μ „ν™”λ₯Ό κ°•μ œν•˜κ³  있기 λ•Œλ¬Έμ— μ§€κΈˆμ€ μœ„μ ―κ³Ό μƒν˜Έ μž‘μš© plt.show() ).

λ…ΈνŠΈλΆ 셀에 ν”Œλ‘―μ„ λ§Œλ“€κ³  plt.show() ν˜ΈμΆœν•˜λ©΄ λ‚˜μ€‘μ— Figure에 λŒ€ν•œ μˆ˜μ • 사항이 ν‘œμ‹œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ‹€μŒμ€ μ΅œμ†Œν•œμ˜ μ˜ˆμž…λ‹ˆλ‹€.

%matplotlib inline
import matplotlib.pyplot as plt

def plotfun(t):
    fig, ax = plt.subplots(1,1)
    ax.plot([0,t],[0,t])
    plt.show()
    ax.plot([t,0],[0,t])
    plt.show()

plotfun(2)

첫 번째 라인 ν”Œλ‘―λ§Œ λ‚˜νƒ€λ‚©λ‹ˆλ‹€.

μ—¬κΈ° 더 κ°„λ‹¨ν•œ μ˜ˆκ°€ μžˆμŠ΅λ‹ˆλ‹€. %matplotlib inline λ°±μ—”λ“œκ°€ μ—†λŠ” 두 개의 μ…€. μ•„λ§ˆλ„ @tacaswell 이 두 번째 plt.show 에 쀄거리가 ν‘œμ‹œλ˜μ§€ μ•ŠλŠ” 이유λ₯Ό μ„€λͺ…ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

import matplotlib.pyplot as plt
fig, ax = plt.subplots(1,1)
ax.plot([0,1],[0,1])
plt.show()

쀄거리λ₯Ό λ³΄μ—¬μ€λ‹ˆλ‹€

ax.plot([1,0],[0,1])
plt.show()

아무것도 보여주지 μ•ŠλŠ”λ‹€

μ΅œμ‹  μ•ˆμ •μ μΈ jupyter, ipython, ipywidgets, matplotlib, python 3으둜 λ‚΄ μ»΄ν“¨ν„°μ—μ„œ ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€.

μ—¬κΈ°μ„œλ„ ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€.

@jasongrout 첫 번째 μ…€μ—μ„œ κ·Έλ¦Ό(및 μΊ”λ²„μŠ€ 및 μΆ•)을 λ§Œλ“  λ‹€μŒ ν‘œμ‹œν•˜κΈ° λ•Œλ¬Έμ— μ˜ˆμƒλ˜λŠ” λ™μž‘μž…λ‹ˆλ‹€. 그런 λ‹€μŒ 두 번째 μ…€μ—μ„œ κΈ°μ‘΄ μΆ•(κΈ°μ‘΄ κ·Έλ¦Ό)에 선을 μΆ”κ°€ν•©λ‹ˆλ‹€. %matplotlib qt λ˜λŠ” ipympl (λ˜λŠ” 전체 GUI 쀑 ν•˜λ‚˜)λ₯Ό μ‚¬μš©ν•˜λ©΄ ν”Œλ‘―μ΄ 두 번째 μ€„λ‘œ _μ—…λ°μ΄νŠΈλ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€_. ν•œ 번만 μ—…λ°μ΄νŠΈν•˜λ©΄ 되기 λ•Œλ¬Έμ— 이것이 μΈλΌμΈμ—μ„œ μž‘λ™ν•  κ²ƒμœΌλ‘œ κΈ°λŒ€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€(이것이 λ‚΄κ°€ 인라인을 λ³„λ‘œ μ’‹μ•„ν•˜μ§€ μ•ŠλŠ” 이유이며 λŒ€ν™”ν˜• κΈ°λŠ₯의 _λͺ¨λ‘_λ₯Ό λ²„λ¦½λ‹ˆλ‹€).

@tacaswell 인라인의 이 λ™μž‘μ€ ν•˜λ‚˜μ˜ 셀에 μžˆλŠ” 이전 μ˜ˆμ œμ—μ„œλ„ μ˜λ―Έκ°€ μžˆμŠ΅λ‹ˆκΉŒ? μ—¬κΈ° λ‹€μ‹œ μžˆμŠ΅λ‹ˆλ‹€:

%matplotlib inline
import matplotlib.pyplot as plt

def plotfun(t):
    fig, ax = plt.subplots(1,1)
    ax.plot([0,t],[0,t])
    plt.show()
    ax.plot([t,0],[0,t])
    plt.show()

plotfun(2)

plt.show μ—μ„œ 인라인 λ°±μ—”λ“œλŠ” 자체λ₯Ό png둜 λ Œλ”λ§ν•œ λ‹€μŒ pyplotμ—μ„œ 그림을 등둝 μ·¨μ†Œν•˜λ―€λ‘œ λ™μΌν•œ 셀에 μžˆλ”λΌλ„ λ‹€μŒ μ‡Όμ—μ„œ λ‹€μ‹œ λ Œλ”λ§λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μΆ”κ°€ show 없이 μΆ• λ©”μ†Œλ“œμ— λŒ€ν•œ 닀쀑 호좜이 μž‘λ™ν•΄μ•Ό ν•©λ‹ˆλ‹€.

λ‹€μŒμ€ 인라인 λ°±μ—”λ“œ μ½”λ“œμž…λ‹ˆλ‹€. https://github.com/ipython/ipykernel/blob/master/ipykernel/pylab/backend_inline.py

λŒ€ν™”ν˜• μœ„μ ―μ„ λ‹€μ‹œ μž‘λ™μ‹œν‚€κΈ° μœ„ν•΄ λ‘€λ°±ν•  수 μžˆλŠ” ipywidgets 및/λ˜λŠ” matplotlib μžˆμŠ΅λ‹ˆκΉŒ?

@jasongrout InlineBackend.close_figures 을 False 둜 μ„€μ •ν•˜λ €λŠ” κ²ƒμ²˜λŸΌ μ½”λ“œμ—μ„œ λ³΄μž…λ‹ˆλ‹€. ν•˜μ§€λ§Œ 속성을 μ„€μ •ν•˜λŠ” 방법을 잘 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€. μΌμ’…μ˜ λ§ˆλ²•μ„ μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆκΉŒ?

(κ·Έ μ§ˆλ¬Έμ€ μ›ƒκΈ°κ²Œ λ“€λ¦¬μ§€λ§Œ 말 κ·ΈλŒ€λ‘œμž…λ‹ˆλ‹€)

https://github.com/jupyter-widgets/ipywidgets/issues/1457 μ—μ„œ 이 문제λ₯Ό λ‹€μ‹œ μ œκΈ°ν–ˆμŠ΅λ‹ˆλ‹€. @ellisonbg - μœ„μ—μ„œ μ–ΈκΈ‰ν•œ flush_figures ν•΄κ²° 방법을 κ΅¬ν˜„ν•˜λ©΄ μ–΄λ–»κ²Œ λ˜λ‚˜μš”? 인라인 mpl λ°±μ—”λ“œμ—μ„œ μ‹€ν–‰ 쀑인지 확인해야 ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

그것은 κ±°λŒ€ν•œ kludgeμ§€λ§Œ μ–΄μ¨Œλ“  그것을 ν•  만큼 μΆ©λΆ„νžˆ μ€‘μš”ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ•„λ§ˆλ„ μš°λ¦¬κ°€ μ‹€μ œλ‘œ Figureλ₯Ό ν”ŒλŸ¬μ‹œν•˜κ³  μžˆλŠ”μ§€ κ°μ§€ν•˜κ³  μ‚¬λžŒλ“€μ—κ²Œ λͺ…μ‹œμ μΈ show() ν˜ΈμΆœμ„ μˆ˜ν–‰ν•˜λ„λ‘ μš”μ²­ν•˜λŠ” κ²½κ³ λ₯Ό λ°œν–‰ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

μ•ˆλ…• λͺ¨λ‘, λ‚˜λŠ” μ΄κ²ƒμ˜ 기술적 μ„ΈλΆ€ 사항을 λ”°λ₯΄μ§€ μ•Šμ•˜μ§€λ§Œ λ¬Έμ œκ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€. κ΅¬ν˜„ μ„ΈλΆ€ 사항에 관계없이 matplotlib+interactκ°€ κ°€λŠ₯ν•œ ν•œ "κ·Έλƒ₯ μž‘λ™"ν•˜λŠ” 것이 맀우 μ€‘μš”ν•˜λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

plt.show() λ˜λŠ” flush_figures() λ₯Ό μ‚¬μš©ν•˜μ—¬ λ…ΈνŠΈλΆμ„ μƒˆλ‘œ 고치면(컀널을 λ‹€μ‹œ μ‹œμž‘ν•˜μ§€ μ•Šκ³ ) μœ„μ ―κ³Ό ν•¨κ»˜ λ…ΈνŠΈλΆ μ €μž₯을 μ‚¬μš©ν•΄λ„ 그림이 μ‚¬λΌμ§‘λ‹ˆλ‹€. μ΄λŸ¬ν•œ μ™„ν™”κ°€ μ—†μœΌλ©΄ 닀쀑 ν”Œλ‘― 좜λ ₯ λ¬Έμ œκ°€ μ—¬μ „νžˆ μ‘΄μž¬ν•˜μ§€λ§Œ 그렇지 μ•ŠμŠ΅λ‹ˆλ‹€. 이것은 μ˜λ„λœ κ²ƒμž…λ‹ˆκΉŒ? 컀널이 μ’…λ£Œλœ κ²½μš°μ—λ„ λ™μΌν•˜κ²Œ μ μš©λ˜μ§€λ§Œ 이전 λ²„μ „μ˜ ipywidgetμ—μ„œλŠ” 그림의 μ΅œμ’… μƒνƒœκ°€ λΉ„λŒ€ν™”ν˜• ν”Œλ‘―κ³Ό μœ μ‚¬ν•œ λ…ΈνŠΈλΆμ— μ €μž₯λ˜μ–΄ 맀우 νŽΈλ¦¬ν–ˆμŠ΅λ‹ˆλ‹€.

이것이 λ²”μœ„λ₯Ό λ²—μ–΄λ‚˜κ±°λ‚˜ λ‚΄κ°€ λ­”κ°€λ₯Ό 잘λͺ»ν•˜κ³  μžˆλ‹€λ©΄ μ£„μ†‘ν•©λ‹ˆλ‹€. ipywidgets 6.0.0, matplotlib 2.0.2, λ…ΈνŠΈλΆ 5.0.0 및 Python 3.6.1 μ‹€ν–‰.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰