繁体   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