2017-12-24 4 views
0

x 축에 날짜의 위치를 ​​가져옵니다 내 X 축에, 그래서 거기에 주석을 넣을 수 있습니다.내 x 축에서 다음 <code>xlim</code>을 설정 한

내가 date2numdatestr2num를 이용하여 알아낼하려고 :

release_date = datetime.datetime(2017, 10, 12) 

print(mdates.date2num(release_date)) 
print(mdates.datestr2num('2017-10-12')) 

print(axA.get_xlim()) 

상기 코드 출력 :

-736614.0 
736614.0 

(17136.0, 17561.0) 

먼저 보인다 date2numdatestr2num 같은 동일한 결과를 제공하지 않는, 그러나 더 문제가되는 결과는 xlim의 범위를 벗어납니다.

위에서 xlim을 설정하면 날짜의 X 위치 (특수 효과를 배치 할 위치)를 어떻게 찾을 수 있습니까? 당신이 날짜 X- 축이있는 경우

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


def get_dataframe(): 
    values = [12, 16, 20] 
    dates = [ 
     datetime(2017, 12, 24), 
     datetime(2017, 12, 23), 
     datetime(2017, 12, 22) 
    ] 

    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) 

    axA.set_xlim(datetime(2016, 12, 1), datetime(2018, 1, 30)) 

    release = datetime(2017, 10, 12) 
    print(mdates.date2num(release)) 
    print(mdates.datestr2num('2017-10-12')) 
    print(axA.get_xlim()) 


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

가 제공을'736614.0 736614.0 (736299.0, 736724.0)' 나를 위해. 어떤 matplotlib 버전을 사용하고 있습니까? 다시 한 번 [mcve]는 문제를 찾는 데 많은 도움이됩니다. – ImportanceOfBeingErnest

답변

1

당신은 직접 날짜 객체를 사용할 수 있습니다 :

코드 문제를 재현하는 코드를 실행

ax.annotate('hello', xy=(datetime.datetime(2017, 10, 12), 1), 
      xytext=(datetime.datetime(2017, 10, 12), 5), 
      arrowprops={'facecolor': 'r'}) 
+1

그래도 문제가 해결되는지 확실하지 않습니다. 질문에 표시된 것처럼 축 한계가 꺼져 있으면 주석이 올바르게 표시되지 않을 수도 있습니다. – ImportanceOfBeingErnest

관련 문제