如何在matplotlib和pandas中用日期绘制hexbin?

如何在matplotlib和pandas中用日期绘制hexbin?,matplotlib,Matplotlib,我试图绘制一个日期的hexbin,但我采取的方法似乎有问题: import pandas as pd import datetime import random import matplotlib.pyplot as plt def getdate(): return datetime.datetime(2014,1,1)+datetime.timedelta(random.randint(0,100)) df=pd.DataFrame([(getdate(), getdate())

我试图绘制一个日期的hexbin,但我采取的方法似乎有问题:

import pandas as pd
import datetime
import random
import matplotlib.pyplot as plt

def getdate():
    return datetime.datetime(2014,1,1)+datetime.timedelta(random.randint(0,100))

df=pd.DataFrame([(getdate(), getdate()) for i in range(100)], columns=list("ab"))
plt.hexbin(df.a, df.b)
有时会出现错误消息

packages\IPython\core\formatters.py:239: FormatterWarning: Exception in image/png  formatter: Python int too large to convert to C long
  FormatterWarning, <matplotlib.figure.Figure at 0x929bba8>
packages\IPython\core\formatters.py:239:FormatterWarning:image中的异常/png格式化程序:Python int太大,无法转换为C long
格式化程序警告,
在任何情况下,情节都不会出现在IPython中


你知道发生了什么以及如何得到一个用日期标记的hexbin图吗?

你可以将日期转换成数字,使用
xaxis\u date()
yaxis\u date()

以下是输出:


非常感谢!实际上,示例中有三个未定义的
pl.
,但我更正了这一点:)
import pandas as pd
import datetime
import random
import matplotlib.pyplot as plt
import pylab as pl #**added**

def getdate():
    return datetime.datetime(2014,1,1)+datetime.timedelta(random.randint(0,100))

df=pd.DataFrame([(getdate(), getdate()) for i in range(10000)], columns=list("ab"))
ax = plt.gca()
ax.set_aspect("equal")
ax.hexbin(pl.date2num(df.a), pl.date2num(df.b), gridsize=20)
ax.xaxis_date()
ax.yaxis_date()
ax.xaxis.major.formatter.scaled[1.0] = "%Y-%m-%d"
ax.yaxis.major.formatter.scaled[1.0] = "%Y-%m-%d"
pl.xticks(rotation=45);