Kiedy używasz tego w skrypcie (nie IPythonie), nic się nie dzieje, tj. Okno wykresu nie pojawia się:
import numpy as np
import pandas as pd
ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))
ts.plot()
Nawet przy dodawaniu time.sleep(5)
wciąż nic nie ma. Czemu?
Czy jest na to sposób, bez konieczności ręcznego wywoływania matplotlib ?
python
pandas
matplotlib
Basj
źródło
źródło
ts.plot()
?import matplotlib.pyplot as plt
,plt.show()
ts.plot()
program kończy się natychmiast po tym. Nawet jeślitime.sleep(10)
nic nie dodam, jest wyświetlane.plot()
na obiekcie pandy załatwi wszystko dla mnie (tj. pandy wykonują zadanie matplotlib zamiast mnie): zobacz ten przykład .Odpowiedzi:
Po utworzeniu fabuły musisz powiedzieć jej matplotlib
show
. Zwykłym sposobem wykonywania czynności jest importowaniematplotlib.pyplot
i wywoływanieshow
z tego miejsca:import numpy as np import pandas as pd import matplotlib.pyplot as plt ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000)) ts.plot() plt.show()
Ponieważ nie chcesz tego robić (dlaczego?), Możesz użyć następującego [UWAGA: To już nie działa z nowszymi wersjami
pandas
]:import numpy as np import pandas as pd ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000)) ts.plot() pd.tseries.plotting.pylab.show()
Ale wszystko, co tam robisz, to znajdowanie miejsca, które
matplotlib
zostało zaimportowanepandas
i wywoływanie tej samejshow
funkcji z tego miejsca.Czy próbujesz uniknąć dzwonienia
matplotlib
, aby przyspieszyć działanie? Jeśli tak, to naprawdę niczego nie przyspieszasz, ponieważpandas
już importujepyplot
:python -mtimeit -s 'import pandas as pd' 100000000 loops, best of 3: 0.0122 usec per loop python -mtimeit -s 'import pandas as pd; import matplotlib.pyplot as plt' 100000000 loops, best of 3: 0.0125 usec per loop
Wreszcie, powodem, dla którego przykład, do którego utworzyłeś link w komentarzach, nie jest potrzebne wywołanie,
matplotlib
jest to, że jest uruchamiany interaktywnie wiPython notebook
skrypcie, a nie w skrypcie.źródło
Jeśli używasz
matplotlib,
i nadal, rzeczy nie pojawiają się w notatniku iPython (lub też w Jupyter Lab), pamiętaj, aby ustawić opcję inline dlamatplotlib
w notatniku.import matplotlib.pyplot as plt %matplotlib inline
Wtedy poniższy kod będzie działał bez zarzutu:
fig, ax = plt.subplots(figsize=(16,9)); change_per_ins.plot(ax=ax, kind='hist')
Jeśli nie ustawisz opcji inline, nie pojawi się, a dodając
plt.show()
na końcu otrzymasz zduplikowane wyniki.źródło
Właśnie zrobiłem
import matplotlib.pyplot as plt %matplotlib inline
i dodaj linię
obok df.plot () i działało dobrze dla
źródło
%matplotlib inline
(nie jest to standardowy Python, którego można użyć w skrypcie).%matplotlib inline
jest używany w notebooku ipython / jupyter ...Inne odpowiedzi obejmują
matplotlib.pyplot
ręczne importowanie i / lub wywoływanie drugiej funkcji.Zamiast tego można skonfigurować
matplotlib
, aby być w trybie interaktywnym z jego plikami konfiguracyjnymi .Po prostu dodaj linię
interactive: True
do pliku o nazwie
matplotlibrc
w jednym z następujących miejsc:matplotlib.get_configdir()
/home/username/.config/matplotlib/
C:\\Documents and Settings\\username\\.matplotlib\\
źródło