Xtick интервал для matplotlib [дубликат]

Это ошибка в Eclipse . Кажется, что Eclipse использует отдельные потоки для чтения содержимого out и err потоков без какой-либо синхронизации.

Если вы скомпилируете класс и выполните его в консоль (с классическим java & lt; main class name & gt; ), порядок как ожидалось.

40
задан irl_irl 9 March 2012 в 03:47
поделиться

2 ответа

Как сказал @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'
13
ответ дан mathematical.coffee 16 August 2018 в 02:43
поделиться

Вы можете сделать это более просто, используя 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()

Результат:

enter image description here [/g0]

86
ответ дан bernie 16 August 2018 в 02:43
поделиться
  • 1
    вы могли бы просто написать y = range (len (x)) – Kyss Tao 9 March 2012 в 04:43
  • 2
    Я просто знаю, что xrange () можно использовать, чтобы избежать создания списка; но здесь мы создаем список в любом случае – Kyss Tao 9 March 2012 в 05:40
  • 3
    Я только что сделал эксперимент по синхронизации с len (x), чтобы быть 10Mio. Я ожидал, что диапазон () и ваше понимание списка с помощью xrange () будут одинаковыми; но к моему удивлению диапазон () был еще быстрее! – Kyss Tao 9 March 2012 в 05:46
  • 4
    @bernie Спасибо, это действительно помогло мне. Однако в моей проблеме у меня слишком много дней, поэтому весь сюжет забит. Как показать каждый пятый день или каждый десятый день на оси х с помощью вашего метода? – user1506145 3 July 2013 в 09:26
  • 5
    К сожалению, это показывает мне не 3 даты, а 6 других дат (в этом интервале). Использование matplotlib-1.5.1 – Groosha 22 May 2016 в 09:16
Другие вопросы по тегам:

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