Помимо использования пакета time / datetime, pandas также можно использовать для решения одной и той же проблемы. Вот как мы можем использовать pandas для преобразования метки времени в читаемую дату:
Временные метки могут быть в двух форматах:
import pandas
result_ms=pandas.to_datetime('1493530261000',unit='ms')
str(result_ms)
Output: '2017-04-30 05:31:01'
import pandas
result_s=pandas.to_datetime('1493530261',unit='s')
str(result_s)
Output: '2017-04-30 05:31:01'
Чтобы сгенерировать новый рисунок, вы можете добавить plt.figure () перед любым графиком, который делает ваша программа.
import matplotlib.pyplot as plt
import numpy as np
def make_plot(slope):
x = np.arange(1,10)
y = slope*x+3
plt.figure()
plt.plot(x,y)
make_plot(2)
make_plot(3)
Самый простой способ убедиться, что все ваши строки попадают в окно правильной фигуры, это что-то вроде:
from six.moves import input
import matplotlib.pyplot as plt
another = True
while another:
fig, ax = plt.subplots()
ax.plot(range(5))
fig.canvas.manager.show()
# this makes sure that the gui window gets shown
# if this is needed depends on rcparams, this is just to be safe
fig.canvas.flush_events()
# this make sure that if the event loop integration is not
# set up by the gui framework the plot will update
another = bool(input("would you like another? "))
Если вы хотите запустить это с помощью не-gui-сервера, вам нужно будет удалить flush_events
вызовите или заверните его в папку try: ... except NotImplementedError
. Большая часть этого осложнения - защитное программирование, потому что GUI могут быть трудными, и поведение этого кода может зависеть от многих факторов, которые не очевидны из показанного кода.
Использование неявных осей pyplot
может привести к проблемы, поскольку «текущие оси» задаются последними осями, на которые пользователь нажал. Вы действительно должны использовать pyplot
только при интерактивном вводе в rpel и почти никогда (кроме plt.subplots
) в скриптах / программах.
Используя последний matlibplot, я нашел следующее для моих целей:
# create figure (will only create new window if needed)
plt.figure()
# Generate plot1
plt.plot(range(10, 20))
# Show the plot in non-blocking mode
plt.show(block=False)
# create figure (will only create new window if needed)
plt.figure()
# Generate plot2
plt.plot(range(10, 20))
# Show the plot in non-blocking mode
plt.show(block=False)
...
# Finally block main thread until all plots are closed
plt.show()
Используйте функцию .figure()
для создания нового окна, следующий код делает два окна:
import matplotlib.pyplot as plt
plt.plot(range(10)) # Creates the plot. No need to save the current figure.
plt.draw() # Draws, but does not block
plt.figure() # New window, if needed. No need to save it, as pyplot uses the concept of current figure
plt.plot(range(10, 20))
plt.draw()
Вы можете повторять это столько раз, сколько хотите