我想创建一个Holoviews条形图(使用Bokeh后端),其中Year在X轴上,而A和B列在Y轴上。对于每个Year,我希望A和B列中的值的条形彼此相邻出现,即对于2008年,我具有1和3高度的条形,对于2009年,我具有3和6高度的条形,依此类推。我尝试了许多不同的方式,包括文档中的grouped bars示例,但无法使其正常工作。请参见下面的示例:
%%opts Bars [xrotation=90 width=600 show_legend=False tools=['hover']]
df=pd.DataFrame({'Year':[2008,2009,2010,2011,2012,2013],
'A': [1,2,3,4,5,6],'B':[3,6,9,12,15,18]})
print(df)
bars = hv.Bars(df, kdims=['Year'], vdims=['A'])
bars
请帮助。我迷失了方向!
答案 0 :(得分:0)
当您的数据采用整洁的格式时,HoloViews通常效果最好。但是,为了更轻松地处理像您这样的数据,我们开发了一个名为hvPlot的配套库。要生成所需的图,只需运行:
import hvplot.pandas
df=pd.DataFrame({'Year':[2008,2009,2010,2011,2012,2013],
'A': [1,2,3,4,5,6],'B':[3,6,9,12,15,18]})
df.hvplot.bar('Year')
或者,您可以了解pd.melt方法,该方法可以采用多种格式的数据并将其转换为整齐的数据集:
%%opts Bars [xrotation=90 width=600 show_legend=False tools=['hover']]
df=pd.DataFrame({'Year':[2008,2009,2010,2011,2012,2013],
'A': [1,2,3,4,5,6],'B':[3,6,9,12,15,18]})
tidy_df = df.melt(id_vars=['Year'], value_vars=['A', 'B'])
bars = hv.Bars(tidy_df, ['Year', 'variable'], ['value'])
bars