set_xlim()设置错误的日期范围

时间:2017-12-24 20:04:12

标签: python-3.x matplotlib

我正在尝试明确设置xlim范围,我的X轴使用datetime个日期。

当我明确设置范围时,matplotlib似乎会自动调整它:

axA.set_xlim([mdates.num2date(736299.0), mdates.num2date(736724.0)])
print(axA.get_xlim())

output >> (17136.0, 17561.0)

为什么返回的值与我设置的值不同?

我正在尝试设置xlim并在特定点绘制一条垂直线。再现问题的完整示例:

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from datetime import datetime


def get_dataframe():
    values = [11, 22, 11]
    dates = [
        datetime(2017, 12, 1),
        datetime(2017, 12, 2),
        datetime(2017, 12, 3)
    ]

    df = pd.DataFrame(data={'date': dates, 'value': values})
    df = df.set_index(['date']).sort_index()

    return df


def plot(dataA):
    fig, axA = plt.subplots()
    dataA.plot(ax=axA)

    # same result whether I try to set with numbers or datetime objects
    # axA.set_xlim([datetime(2016, 12, 1), datetime(2018, 1, 30)])
    axA.set_xlim([mdates.num2date(736299.0), mdates.num2date(736724.0)])
    print(axA.get_xlim())

    # trying to draw a line at a X date in range
    axA.axvline(736614.0)
    axA.axvline(mdates.datestr2num('2017-10-12'))


df = get_dataframe()
plot(df)
plt.show()

我已经被困在这一天超过一天了,谷歌搜索和广泛搜索;任何正确方向的帮助或指示或正确的文档将不胜感激。我正在使用Python 3.6.3和matplotlib 2.1.1

0 个答案:

没有答案