Я использовал поток для вывода вывода System.out и System.err последовательно:
for (int i = 0; i & lt; 5; i ++) {try {Thread. сна (100); System.out.print ( "OUT"); Thread.sleep (100); System.err.print ( "ERR"); } catch (InterruptedException ex) {System.out.println (ex.getMessage ()); }}
Как сказал @KyssTao, help(dates.num2date)
говорит, что x
должен быть float, дающим число дней с 0001-01-01 плюс один. Следовательно, 19910102
не 2 / янв / 1991, потому что, если вы посчитали 19910101 дней с 0001-01-01, вы получите что-то в год 54513 или подобное (разделите на 365,25, количество дней в году).
Вместо этого используйте datestr2num
(см. help(dates.datestr2num)
):
new_x = dates.datestr2num(date) # where date is '01/02/1991'
Вы можете сделать это более просто, используя plot()
вместо plot_date()
.
Сначала преобразуем ваши строки в экземпляры Python datetime.date
:
import datetime as dt
dates = ['01/02/1991','01/03/1991','01/04/1991']
x = [dt.datetime.strptime(d,'%m/%d/%Y').date() for d in dates]
y = range(len(x)) # many thanks to Kyss Tao for setting me straight here
Затем сюжет:
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%m/%d/%Y'))
plt.gca().xaxis.set_major_locator(mdates.DayLocator())
plt.plot(x,y)
plt.gcf().autofmt_xdate()
Результат:
[/g0]