При использовании этого в скрипте (не в IPython) ничего не происходит, т.е. окно графика не появляется:
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()
Даже при добавлении time.sleep(5)
все равно ничего нет. Почему?
Есть ли способ сделать это без ручного вызова matplotlib ?
python
pandas
matplotlib
Basj
источник
источник
ts.plot()
?import matplotlib.pyplot as plt
,plt.show()
ts.plot()
программа завершается сразу после этого. Даже если я добавлюtime.sleep(10)
ничего не отображается.plot()
объекта panda справится со всем за меня (т.е. pandas выполняет работу matplotlib вместо меня): см. этот пример .Ответы:
После того, как вы создали свой сюжет, вам нужно сообщить ему matplotlib
show
. Обычный способ сделать что-то - импортироватьmatplotlib.pyplot
и вызыватьshow
оттуда: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()
Поскольку вы просили не делать этого (почему?), Вы можете использовать следующее [ПРИМЕЧАНИЕ. Это больше не работает с более новыми версиями
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()
Но все, что вы там делаете, - это находите место, куда
matplotlib
было импортированоpandas
, и вызываетеshow
оттуда ту же функцию.Вы пытаетесь не звонить,
matplotlib
чтобы ускорить процесс? Если это так, то вы действительно ничего не ускоряете, посколькуpandas
уже импортируетpyplot
: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
Наконец, причина, по которой пример, который вы указали в комментариях , не нуждается в вызове,
matplotlib
заключается в том, что он выполняется в интерактивном режиме в файлеiPython notebook
, а не в сценарии.источник
Если вы используете
matplotlib,
и по-прежнему ничего не отображается в блокноте iPython (или в Jupyter Lab), не забудьте установить параметр inline дляmatplotlib
в блокноте.import matplotlib.pyplot as plt %matplotlib inline
Тогда следующий код будет работать безупречно:
fig, ax = plt.subplots(figsize=(16,9)); change_per_ins.plot(ax=ax, kind='hist')
Если вы не установите встроенный параметр, он не будет отображаться, и, добавив
plt.show()
в конце, вы получите дублирующиеся результаты.источник
Я только что
import matplotlib.pyplot as plt %matplotlib inline
и добавить строку
рядом с df.plot (), и он хорошо работал для
источник
%matplotlib inline
(это не стандартный Python, который можно использовать в скрипте).%matplotlib inline
используется в блокноте ipython / jupyter ...Другие ответы включают импорт
matplotlib.pyplot
и / или вызов какой-либо второй функции вручную.Вместо этого вы можете настроить
matplotlib
его в интерактивном режиме с помощью файлов конфигурации .Просто добавьте строку
interactive: True
в файл, вызываемый
matplotlibrc
в одном из следующих мест:matplotlib.get_configdir()
/home/username/.config/matplotlib/
C:\\Documents and Settings\\username\\.matplotlib\\
источник