我正在尝试明确设置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