簡體   English   中英

我如何使用 Plotly express 制作一維直方圖而不為每一行的相同值創建新的 x 值?

[英]How can i use Plotly express to make a 1D histogram without making new x values for each row of the same value?

這就是我的 plot 實際上是這樣的:當前 output

這是數據框: DataFrame

這是我當前的代碼:


import pandas as pd
import plotly.express as px

pd.set_option('display.max_rows', None)
pd.set_option('display.max_columns', None)
pd.set_option('display.width', None)

df = pd.read_csv('sales.csv')

df.columns = df.columns.str.replace(' ', '')

fig= px.bar(df, x='number', y='number', color='profit')
fig.show()

如您所見,銷售數字多次相同,所以我想要 plot 一個直方圖,每個 x 值是具有相同鍵號的所有銷售的總利潤,因此我可以比較每個銷售鍵號的利潤。

我如何使用 Pandas 和 plotly 快遞做到這一點?

ps:我是一個真正的菜鳥

  • 您的數據框有問題。 已經模擬它並使用您的代碼生成圖形。 它產生了一個非常不同的數字(見下面的第一張圖片)
    • 我懷疑您的 dataframe 有問題,數字列不是數字而是字符串。 檢查df.dtypes
    • 這暗示 xaxis 是無序的,事實顏色不會生成顏色條,但使用順序 colors
  • 已經展示了通過銷售數量獲得總利潤的方法。 首先聚合pandas然后 plot數字作為 x 軸,利潤作為 ya 軸
import numpy as np
import pandas as pd
import plotly.express as px

# simulate data frame
df = pd.DataFrame({"number": np.repeat(np.arange(3334, 3389), 6)}).pipe(
    lambda d: d.assign(profit=np.random.uniform(-10, 200, len(d)))
)

# question approach
fig = px.bar(df, x="number", y="number", color="profit")
fig.show()

# requested approach
fig = px.bar(
    df.groupby("number", as_index=False).agg({"profit": "sum"}), x="number", y="profit"
).update_layout(xaxis={"type": "category"})

fig.show()

在此處輸入圖像描述

暫無
暫無

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

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