我首先要说的是,这个问题与此处提出的问题类似:Pandas graphing a timeseries, with vertical lines at selected dates-但是,我遇到了两个以上无法解决的错误,我无法解决!
我正在尝试使用Panda绘制两个时间序列。我的第一次尝试产生了一个如下图所示的情节:
我想做的是将黑色三角形绘制为一系列垂直线。我尝试使用下面的代码来执行此操作,但收到错误消息:
File "/Users/an16975/anaconda3/lib/python3.6/site-packages/matplotlib/dates.py", line 254, in _from_ordinalf
dt = datetime.datetime.fromordinal(ix).replace(tzinfo=UTC)
ValueError: ordinal must be >= 1
有人有什么想法吗?我已经在下面发布了产生ValueError的完整代码。
#import modules
import pandas as pd
import matplotlib.pyplot as plt
#load csv files
df1 = pd.read_csv('/Users/an16975/Desktop/PhD/Code/Bulletins/Fuego_MIROVA_Table_valuesonly_2014_2018_Ailsa_CSV.csv', index_col=['Date'], parse_dates=['Date'], dayfirst=True)
df2 = pd.read_csv('/Users/an16975/Desktop/PhD/Code/Bulletins/bulletins_2015_18_with_lava.csv', index_col=['Date'], parse_dates=['Date'], dayfirst=True)
#plot values
fig, ax1 = plt.subplots(figsize=(12,6))
ax1.plot(df1, 'rx', label='Values (Unit)')
ax2 = ax1.twinx()
ymin, ymax = ax2.get_ylim()
ax2.vlines(df2, ymin=ymin, ymax=ymax-1, color='k', label='Special bulletins')
ax1.set_xlabel('Date')
ax1.set_ylabel('Value (Unit)')
ax1.set_ylim([1 * 10 ** 9, 1 * 10 ** 10])
plt.tight_layout()
plt.show()