为1秒采样数据设置分钟次要刻度会引发:OverflowError: int too big to convert
考虑以下 Dataframe ,采样间隔为1秒,跨度约为30分钟:
import matplotlib.pyplot as plt
from matplotlib.dates import MinuteLocator
import pandas as pd
ndex = pd.date_range('2021-08-01 07:07:07', '2021-08-01 07:41:12', freq='1S', name='Time')
df = pd.DataFrame(data=np.random.randint(1, 100, len(ndex)), index=ndex, columns=['A'])
现在我们绘制它:
fig, ax = plt.subplots()
df.plot(color='red', marker='x', lw=0, ms=0.2, ax=ax)
它创造了一个情节没有任何抱怨:
现在我想每分钟都有小滴答声。
我试过了
ax.xaxis.set_minor_locator(MinuteLocator())
但是OverflowError: int too big to convert
的情况就不行了
1条答案
按热度按时间whitzsjs1#
pandas.DataFrame.plot
使用matplotlib
作为默认的绘图后端,但它将日期刻度编码为unix时间戳,这将导致OverflowError: int too big to convert
。kind='line'
,但在OP中使用marker='x', lw=0, ms=0.2
来绘制杂乱的散点图。pandas.DataFrame.plot.scatter
将正常工作。matplotlib.pyplot.scatter
将按预期工作。seaborn.scatterplot
也可以:sns.scatterplot(x=df.index, y=df.A, color='red', marker='x', ax=ax)
*在
python 3.8.11
、pandas 1.3.2
、matplotlib 3.4.3
和seaborn 0.11.2
中进行测试matplotlib.pyplot.scatter
'01'
)(例如'%m %H:%M'
)。pandas.DataFrame.plot.scatter
的第一个字符pandas.DataFrame.plot
与kind='scatter'
组合使用第一个月第一个月
第一个月第一个月第一个月