Сделайте несколько цифр из словаря без перезаписи предыдущего рисунка [дубликат]

Помимо использования пакета time / datetime, pandas также можно использовать для решения одной и той же проблемы. Вот как мы можем использовать pandas для преобразования метки времени в читаемую дату:

Временные метки могут быть в двух форматах:

  1. 13 цифр (миллисекунды). Чтобы преобразовать миллисекунды на сегодняшний день, используйте:
    import pandas
    result_ms=pandas.to_datetime('1493530261000',unit='ms')
    str(result_ms)
    
    Output: '2017-04-30 05:31:01'
    
  2. 10 цифр (в секундах). Для преобразования секунд до даты используйте:
    import pandas
    result_s=pandas.to_datetime('1493530261',unit='s')
    str(result_s)
    
    Output: '2017-04-30 05:31:01'
    
2
задан Syd 28 July 2015 в 20:33
поделиться

4 ответа

Чтобы сгенерировать новый рисунок, вы можете добавить 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)
3
ответ дан Deduplicator 26 August 2018 в 09:30
поделиться

Самый простой способ убедиться, что все ваши строки попадают в окно правильной фигуры, это что-то вроде:

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) в скриптах / программах.

1
ответ дан tacaswell 26 August 2018 в 09:30
поделиться

Используя последний 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()
0
ответ дан user1495323 26 August 2018 в 09:30
поделиться

Используйте функцию .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()

Вы можете повторять это столько раз, сколько хотите

-1
ответ дан Will Norvelle 26 August 2018 в 09:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: