簡體   English   中英

Plotly:分組和堆疊條形圖,堆疊條形圖不同 colors?

[英]Plotly: Grouped and Stacked barchart, different colors for stacked bars?

我有分組和堆疊的條形圖。 現在我想為以不同顏色堆疊的值着色。 我的 plot 目前看起來像這樣(帶有標記的部分應該有不同的顏色):

在此處輸入圖像描述

該組對應於一個類別,堆疊基於兩個值列之間的增量(增量堆疊在較低值的頂部)。 我想用稍淺的顏色(這里:淺藍色表示Cat1 ,淺紅色表示Cat1 )為增量(即堆積條的上部)上色。 但是,我找不到合適的選擇。

我的數據如下所示:

import pandas as pd

data = [
    ["Station1", 2.5, 3.0, "Cat1"],
    ["Station1", 3.7, 4.2, "Cat2"],
    ["Station2", 1.7, 2.1, "Cat1"],
    ["Station2", 3.9, 4.0, "Cat2"],
]
df = pd.DataFrame(data, columns=["station", "val1", "val2", "category"])
df["delta"] = df["val2"] - df["val1"]

這是繪圖 function:

import plotly.express as px

px.bar(df, x="station", y=["val1", "delta"], color="category", barmode="group").show()

我怎樣才能給三角洲塗上不同的顏色? 解決辦法也可以在plotly(快遞不一定要plotly)。 有沒有辦法解決手動計算delta列的問題?

我提出了一個應該能很好地滿足您的需求的建議。 至少在視覺上只要delta >=0 據我所知,分組和堆疊的條形圖仍然有點棘手。 但是使用px.Bar構建兩個不同的圖形,然后使用go.Figure object()中的 fig._data 將它們組合起來將讓你構建這個:

在此處輸入圖像描述

正如您將從代碼中看到的那樣, delta並未明確實現,而是在不透明條和非不透明條之間直觀顯示。 如果這是你可以使用的東西,我會看看我是否可以在 hoverinfo 中包含delta

完整代碼:

import pandas as pd
import plotly.express as px
import plotly.graph_objects as go

data = [
    ["Station1", 2.5, 3.0, "Cat1"],
    ["Station1", 3.7, 4.2, "Cat2"],
    ["Station2", 1.7, 2.1, "Cat1"],
    ["Station2", 3.9, 4.0, "Cat2"],
]
df = pd.DataFrame(data, columns=["station", "val1", "val2", "category"])
df["delta"] = df["val2"] - df["val1"]

fig1_data = px.bar(df, x="station", y=["val1"], color="category", barmode="group")._data
fig2_data = px.bar(df, x="station", y=['val2'], color="category", barmode="group")._data

fig1_data[0]['marker']['color'] = 'rgba(255,0,0,1)'
fig1_data[1]['marker']['color'] = 'rgba(0,0,255,1)'

fig2_data[0]['marker']['color'] = 'rgba(255,0,0,0.2)'
fig2_data[1]['marker']['color'] = 'rgba(0,0,255,0.2)'

dat = fig1_data+fig2_data
fig = go.Figure(dat)

fig3 = go.Figure(fig._data)
fig.update_layout(barmode='relative', title_text='Relative Barmode')
fig3.show()

暫無
暫無

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

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