Holoviews曲线中的分类轴导致错误

时间:2018-02-21 14:48:50

标签: python pandas bokeh holoviews

我有这个数据

df = pd.read_csv('https://docs.google.com/spreadsheets/d/e/2PACX-1vQxY-rTQNBbMWtRI2p8m_gj0TvmkHt3_CqNkhRILq6s5xL3mGX-IXtZt9pej-ae3ZNN1EnAP_iC0unx/pub?output=csv', index=False)

df.head()
Id  Year    Period  Cumulative  YearPeriod  YearPeriodStr
0   16432976    1   1   6.0 11  Period 11
1   16432976    1   2   7.0 12  Period 12
2   16432976    1   0   0.0 10  Period 10
3   16879454    1   1   6.0 11  Period 11
4   16879454    1   2   6.0 12  Period 12

我想要实现的是x轴上两个序数变量的组合。第一级应为年,第二级。以下代码是我认为会导致我想要的图形:

%opts Curve [width=600 height=400 show_grid=True default_tools=['save','hover',]  show_legend=False] (color='indianred', alpha=0.3, line_width=0.2, )

ds = hv.Dataset(df).sort(['Year','Period'])
ds.to(hv.Curve, ['Year','Period'],'Cumulative', 'Id').overlay()

但是这会将Period放在y轴上。以下代码让我更接近我想要的东西:

%opts Curve [width=600 height=400 show_grid=True default_tools=['save','hover',]  show_legend=False] (color='indianred', alpha=0.3, line_width=0.2, )

# Numerical column
df['YearPeriod'] = (df.Year * 10) + (df.Period)
ds = hv.Dataset(df).sort(['Year','Period'])
ds.to(hv.Curve, 'YearPeriod','Cumulative', 'Id').overlay()

但是x轴现在是一个连续变量,而我想要的是第二级,即Period,是序数。 以下代码或多或少地导致了我想要的内容,但是当行数超过120时失败。

%opts Curve [width=600 height=400 show_grid=True default_tools=['save','hover',]  show_legend=False] (color='indianred', alpha=0.3, line_width=0.2, )

# String
df['YearPeriodStr'] = 'Period'+ df['Year'].astype(str) + df['Period'].astype(str)

ds = hv.Dataset(df.head(120)).sort(['Year','Period'])
ds.to(hv.Curve, 'YearPeriodStr','Cumulative', 'Id').overlay()

我错过了什么?

0 个答案:

没有答案