Ten objektový způsob je podle mě bezpečnější a proč se učit 2 způsoby místo jednoho.
Podle mě to je nutné jakmile člověk potřebuje něco složitějšího - více obrázků v jednom, zakomponovat to do nějakého programu nebo využít např. zmíněný %matplotlib notebook
a ipywidgets pro vytvoření jednoduchého klikacího rozhraní v notebooku.
Příklad takové směsky (podle mě to je náchylné na chyby při různých úpravách):
plt.figure() def add_two_lines(ax): ax.plot([1,3], [2, 3]) plt.plot([1, 3], [2, 2], 'm--') ax_l = plt.subplot(1, 2, 1) plt.plot([1, 2], [1, 2]) ax_r = plt.subplot(1, 2, 2) ax_r.plot([1, 2], [1, 2]) add_two_lines(ax_l) # magentová čára v pravém obrázku?
Přikreslování do grafu v notebooku - taková "animace" bez tvorby videa:
import time %matplotlib notebook # obvykle umísťuji do samostatné 2. buňky na začátku notebooku (1. buňka importy) fig, ax = plt.subplots() for i in range(10): ax.plot([0, 1], [0, i]) time.sleep(1) fig.canvas.draw()
Dva obrázky vedle sebe s použitím Dataframe.plot, kterému pošlu objekt os pro vykreslení:
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(6, 3), sharey=True, tight_layout=True) (ax_l, ax_r) = axes df = pd.DataFrame({'x': [1, 2, 5], 'y1': [1, 2, 2], 'y2': [2, 3, 5]}) # do levého obrázku df.plot('x', 'y1', ax=ax_l, legend=False) # do pravého obrázku df.plot('x', 'y2', ax=ax_r, legend=False) # do obou obrázku přidáme lineární čáru for ax in axes: ax.plot([1, 5], [1, 5], 'k--', label='linear') ax.legend() ax_l.set_ylabel('y')