1 回答

TA貢獻(xiàn)1898條經(jīng)驗 獲得超8個贊
編輯:
我忘了你想要一個作為酒吧。
此外,如果您不想弄亂所有這些datetime東西,您可以將年份繪制為 x 軸上的整數(shù)(月份是 1/12 的分?jǐn)?shù))。但是我發(fā)現(xiàn),datetime一旦將所有內(nèi)容都作為時間對象,使用就非常聰明。
我不太熟悉直接pandas從matplotlib. 不過,我無法完全復(fù)制您的數(shù)據(jù):要遵循下面的示例,您必須將多索引轉(zhuǎn)換為單個日期時間索引,我認(rèn)為這不會太難。
import datetime as dt
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
#making fake data
dates1 = pd.date_range('12-01-2007','06-01-2010',periods=9)
data1 = np.random.randint(0,3598215,9)
df1 = pd.DataFrame(data1,index=dates1,columns=['Values'])
dates2 = pd.date_range('01-01-2006',periods=4,freq='1Y') #i don't get why but this starts at the end of 2006, near 2007
df2 = pd.DataFrame([69,3000,5,791],index=dates2,columns=['Values'])
#plotting
fig, ax = plt.subplots()
ax.bar(df2.index,df2['Values'],width=dt.timedelta(days=200),color='red',label='df2')
ax.set_yscale('log')
ax.set_ylabel('DF2 values',color='red')
ax2 = ax.twinx()
ax2.plot(df1.index,df1['Values'],color='blue',label='df1')
ax2.set_yscale('log',)
ax2.set_ylabel('DF1 values',color='blue')
years = mdates.YearLocator() #locate years for the ticks
ax.xaxis.set_major_locator(years) #format the ticks to just show years
xfmt = mdates.DateFormatter('%Y')
ax.xaxis.set_major_formatter(xfmt)
ax.legend(loc=0)
ax2.legend(loc=2)
添加回答
舉報