熊猫:在选定的时间戳上用两条垂直线绘制两个时间序列的图形

时间:2018-06-29 09:46:24

标签: python pandas matplotlib time-series

我首先要说的是,这个问题与此处提出的问题类似:Pandas graphing a timeseries, with vertical lines at selected dates-但是,我遇到了两个以上无法解决的错误,我无法解决!

我正在尝试使用Panda绘制两个时间序列。我的第一次尝试产生了一个如下图所示的情节:Two Timeseries plots

我想做的是将黑色三角形绘制为一系列垂直线。我尝试使用下面的代码来执行此操作,但收到错误消息:

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()

0 个答案:

没有答案