亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用散景繪制堆積條形圖

使用散景繪制堆積條形圖

夢里花落0921 2023-08-08 15:39:36
我正在嘗試按照文檔的這一部分使用散景繪制堆積條形圖。但我的數據框有點復雜。它看起來像這樣:?mount has the following return codes (the bits can be ORed):? ?0? ? ? success? ?1? ? ? incorrect invocation or permissions? ?2? ? ? system error (out of memory, cannot fork, no more loop devices)? ?4? ? ? internal mount bug? ?8? ? ? user interrupt? ?16? ? ?problems writing or locking /etc/mtab? ?32? ? ?mount failure? ?64? ? ?some mount succeeded? ?The command mount -a returns 0 (all succeeded), 32 (all failed), or 64 (some failed,? some? ?succeeded).
查看完整描述

1 回答

?
精慕HU

TA貢獻1845條經驗 獲得超8個贊

bokeh 不一定需要字典才能工作,因此我們實際上可以使用pivotDataframe 方法來實現所需的轉換并直接繪制結果。


>>> df = pd.DataFrame({

    'events': ['a', 'b', 'a', 'c', 'b', 'c'],

    'count': [2, 1, 8, 1, 4, 1],

    'Name': ['jerry', 'jerry', 'joe', 'joe', 'megan', 'megan']})


>>> df

  events  count   Name

0  a      2      jerry

1  b      1      jerry

2  a      8      joe  

3  c      1      joe  

4  b      4      megan

5  c      1      megan

轉換數據:


>>> df2 = df.pivot(index="Name", columns="events", values="count").fillna(0)

>>> df2

events  a   b   c

Name            

jerry   2.0 1.0 0.0

joe     8.0 0.0 1.0

megan   0.0 4.0 1.0

繪制數據:


from bokeh.plotting import figure

from bokeh.palettes import viridis


names = df2.index.tolist()

events = df2.columns.tolist()

color = viridis(len(events))


p = figure(x_range=names)

p.vbar_stack(events, x="Name", source=df2, width=.9, color=color), legend_label=events)

show(p)

https://img1.sycdn.imooc.com//64d1f1b10001800f03190316.jpg

繪制此圖的另一種方法是使用 Holoviews 庫(只需添加此庫,因為 Holoviews 可以生成一些比 Bokeh 更簡潔的代碼)。Holoviews 會為您處理數據轉換,因此您不需要任何額外的工作:


import holoviews as hv

hv.extension("bokeh")


hv.Bars(df, kdims=["Name", "events"], vdims="count").opts(stacked=True)

https://img1.sycdn.imooc.com//64d1f1bf0001071104090373.jpg

至于替代解決方案,我并不完全確定。我認為與 167 種類型的事件進行視覺比較并不容易(即 167 種獨特的顏色,因此這些顏色可能不是非常容易辨別 - 更不用說具有 167 個條目的笨拙圖例)。如果這種可視化方式沒有幫助,我建議使用 Holoviews 庫為您的每個名字創建一個條形圖。然后,您可以切換數據中每個人的繪圖。

import holoviews as hv
hv.extension("bokeh")

hv.Bars(df, kdims=["Name", "events"], vdims="count").groupby("Name")

https://img1.sycdn.imooc.com//64d1f1d10001082309810366.jpg

查看完整回答
反對 回復 2023-08-08
  • 1 回答
  • 0 關注
  • 115 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號