如何将 RGB 元组传递给 `px.bar`?

How to pass RGB tuples to `px.bar`?

您需要 so_sample.parquet 到 运行 代码

我需要在 plotly 中复制这个条形图,最重要的是能够以相同的方式随机预选颜色。

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

df = pd.read_parquet('so_sample.parquet')
df = df.groupby(['col1', 'col2']).size().unstack().fillna(0)
df.plot(
    kind='bar',
    stacked=True,
    legend=False,
    xlabel='',
    rot=0,
    color=np.random.uniform(0, 1, (df.shape[1], 3)),
)

这是我目前所做的:

import plotly.express as px

df = pd.read_parquet('so_sample.parquet')
df = df.groupby(['col1', 'col2']).size().reset_index(name='count')
px.bar(
    df,
    x='col1',
    y='count',
    color='col2',
).show()

我尝试通过 color_discrete_sequence=[color1, color2, ...],但没有任何区别。

matplotlib中使用的数据格式是宽格式,而plotly中是长格式。 plotly 应该是相同的宽格式,你可以指定你最喜欢的颜色图。我选择了Dark24,颜色比较多

import plotly.express as px
import pandas as pd

df = pd.read_parquet('./data/so_sample.parquet')
#df = df.groupby(['col1', 'col2']).size().reset_index(name='count')
df = df.groupby(['col1', 'col2']).size().unstack().fillna(0)

px.bar(
    df,
    x=df.index,
    y=df.columns.tolist(),
    color_discrete_sequence=px.colors.qualitative.Dark24,
).show()