簡體   English   中英

Holoviews-如何從數據框列創建並排欄?

[英]Holoviews - How to create side-by-side bars from dataframe columns?

我想創建一個Holoviews條形圖(使用Bokeh后端),其中Year在X軸上,而A和B列在Y軸上。 對於每個Year,我希望A和B列中的值的條形彼此相鄰出現,即對於2008年,我具有1和3高度的條形,對於2009年,我具有3和6高度的條形,依此類推。 我嘗試了許多不同的方法,包括文檔中分組條的示例,但無法使其正常工作。 請參見下面的示例:

%%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

請幫忙。 我迷失了方向!

當您的數據采用整潔的格式時,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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM