Python | mktime переполняет ошибки

Если требование иметь легенду слева можно ослабить и поместить легенду вверх, тогда вы можете использовать ggarrange , оба графика у оси выровняют

library ( ggplot2 )
library(ggpubr)

set.seed(12345)
N <- 10000
x <- rnbinom(N, 1, .15)
x = data.frame ( value=x, yyy= rep("z", length(x)))


g1 <- ggplot(x, aes(y=value, x=yyy))+
  geom_point(aes(fill = yyy), size = 3, shape = 21, position = position_jitterdodge(), alpha = .14 )+
  theme_bw()  + coord_flip() + theme(legend.position="top")


h1 = ggplot( x, aes(value)) +
  geom_histogram(aes(y = stat(density)), binwidth = .1) 


ggarrange(g1, h1,  ncol=1, nrow=2, align = "v" )
18
задан kdt 8 March 2011 в 22:20
поделиться

2 ответа

time.mktime вызывает базовую функцию mktime из библиотеки C платформы. Например, приведенный выше код, который вы опубликовали, отлично работает для меня в Mac OS X, хотя он возвращает отрицательное число, поскольку дата предшествует эпохе Unix. Причина в том, что реализация mktime вашей платформы, вероятно, не поддерживает даты до эпохи Unix. Вы можете использовать модуль Python datetime для создания объекта datetime , соответствующего указанной выше дате, вычесть его из другого объекта datetime , который представляет эпоху Unix, и использовать вычисленную объект timedelta для получения количества секунд с начала эпохи:

from datetime import datetime
epoch = datetime(1970, 1, 1)
t = datetime(1956, 3, 2)
diff = t-epoch
print diff.days * 24 * 3600 + diff.seconds

Обновление : если вы используете Python 2.7 или выше, вы можете просто использовать print diff.total_seconds () , как указано ниже в комментарии Чада Миллера.

21
ответ дан 30 November 2019 в 08:52
поделиться

время python модуль

, Хотя этот модуль всегда доступен, не все функции, доступно на всех платформах. Большинство функций, определяемых в этом вызове модуля платформа C библиотечные функции с тем же именем. Может иногда быть полезно консультироваться с документацией по платформе, потому что семантика этих функций варьируется среди платформ.

эпоха является точкой, где время запускается и является зависимым платформы. Для Unix эпоха 1 января 1970, 0:00:00 (UTC). Узнать то, что эпоха находится на данной платформе, взгляд time.gmtime (0).

https://docs.python.org/3/library/time.html

Windows 10:

>>> time.gmtime(0)
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)

>>> list((ix for ix in time.gmtime(0)))
[1970, 1, 1, 0, 0, 0, 3, 1, 0]

>>> time.mktime(time.gmtime(0))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OverflowError: mktime argument out of range

библиотечная функция C на окнах 10 не поддерживает времена ниже определенного значения.

0
ответ дан 30 November 2019 в 08:52
поделиться
Другие вопросы по тегам:

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