gpt4 book ai didi

Python:以正确且更简单的方式用plotly绘制交叉表?

转载 作者:行者123 更新时间:2023-12-01 07:42:07 30 4
gpt4 key购买 nike

我有一个可行的解决方案,可以从 pandas 数据帧创建频率表并将其绘制为堆叠条形图:

ct = pd.crosstab(df['month'], df['region'])  # frequency table
ct.plot.bar(stacked=True) # create the bar plot of the frequencies

现在我需要在 plotly 中做到这一点。我所拥有的是:

import plotly.graph_objs as go
from matplotlib import cm

ct = pd.crosstab(df['month'], df['region']) # frequency table

colorMap = cm.get_cmap('jet', numEl)
data = []
# e.g. ct.values 11x8
for idx, colName in enumerate(ct.columns):
currColor = colorMap(idx/numEl)
g = go.Bar(
x=myX,
y=ct.values[:, idx],
name=colName,
marker=dict(color=currColor)
)

data.append(g)

# plot the data for example as dcc.Graph (import dash_core_components as dcc)

问题是颜色不对,肯定有比这个疯狂的手工代码更简单的解决方案吗?

最佳答案

我最近刚刚为 Django 应用程序做了类似的事情。我希望用户为 pandas 数据框提供两个变量,并使用关联的堆叠条形图进行交叉制表。这是我的做法,尽管非常相似,但希望它有助于简化事情:

import pandas as pd
import plotly.graph_objects as go
# Create data frame example
df = pd.DataFrame({'animal' : ['fish','fish','monkey'], 'zoo':['San Diego','Los Angeles','Santa Monica']})
#Cross-tabulate the example data frame.
df_cross = pd.crosstab(df.animal,df.zoo)
# initiate data list for figure
data = []
#use for loop on every zoo name to create bar data
for x in df_cross.columns:
data.append(go.Bar(name=str(x), x=df_cross.index, y=df_cross[x]))

figure = go.Figure(data)
figure.update_layout(barmode = 'stack')

#For you to take a look at the result use
figure.show()

#Since I was using django I had to use plot from plotly.offline to send the html to the
# form
figure_div = plot(figure,output_type='div')

我在执行此操作时使用了以下内容作为引用: https://plot.ly/python/bar-charts/#stacked-bar-chart

有一个好男人!

关于Python:以正确且更简单的方式用plotly绘制交叉表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56644954/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com