ich folgende xlim
auf meine x-Achse gesetzt haben:Holen Position Datum auf der x-Achse
axA.set_xlim(datetime.date(2016, 12, 1), datetime.date(2018, 1, 30))
und jetzt würde Ich mag die Position des 12. Oktober bekommen (2017.10.12) auf meiner X-Achse, damit ich dort eine Anmerkung einfügen kann.
Ich habe versucht, das, dass aus mit date2num
und datestr2num
auf Figur:
release_date = datetime.datetime(2017, 10, 12)
print(mdates.date2num(release_date))
print(mdates.datestr2num('2017-10-12'))
print(axA.get_xlim())
Der obige Code-Ausgang:
-736614.0
736614.0
(17136.0, 17561.0)
Zunächst scheint es, wie date2num
und datestr2num
nicht geben ein identisches Ergebnis, aber problematischer liegen diese Ergebnisse nicht im Bereich von xlim
.
Wie kann ich die X-Position eines Datums finden (um eine Annotation zu platzieren), vorausgesetzt, dass xlim
ich oben eingestellt habe?
Code, um das Problem zu reproduzieren:
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()
den Code Lauf gibt's 736.614,0 736.614,0 (736.299,0, 736.724,0) ' für mich. Welche matplotlib Version verwendest du? Auch hier würde ein [mcve] viel helfen, das Problem zu finden. – ImportanceOfBeingErnest