有没有一种方法可以将条形图与时间轴动画分组在一起?

时间:2019-07-25 23:55:32

标签: python pyspark plotly

我目前有一个条形图,其中在x轴上以类别显示,在y轴上以总数显示。它具有动画效果,因此当用户按下播放键时,它将循环显示表中的每个条目,每个月的时间为1,然后是2,依此类推。以下是我当前使用的版本:https://plot.ly/~samuelbuxton/187/

我不希望将2018年的门票和2019年的门票相互堆叠,而是希望它们像这样https://plot.ly/python/bar-charts/#grouped-bar-chart进行分组。

到目前为止,我已经尝试在图形创建语句中添加“ barmode ='group'”。这根本没有改变图形,也不会产生任何错误消息。我将在以下代码中突出显示此更改。

> #Scatterplot x -axis time y axis = number of tickets 
> 
> import chart_studio import chart_studio.plotly as py  import
> plotly.graph_objs as go import pandas as pd import plotly.express as
> px
> 
> from math import log
> 
> #Selecting the corresponding columns from pyspark dataframe
> 
> y0 = tbl_SP.limit(2000).select('TotalTickets').collect()
> 
> y = [] for sublist in y0:
>     for item in sublist:
>         y.append(item)    x = []
> 
> x0 =  tbl_SP.limit(2000).select('Month').collect() for sublist in x0:
>     for item in sublist:
>         x.append(item) z = []
>          z0 =  tbl_SP.limit(2000).select('Year').collect() for sublist in z0:
>     for item in sublist:
>         z.append(item)
> 
> w = []
>          w0 =  tbl_SP.limit(2000).select('cmdb_ci').collect() for sublist in w0:
>     for item in sublist:
>         w.append(item)
> 
> #Converting data to pandas dataframe
> 
> data = {'TotalTickets':y , 'Month': x, 'Year': z, 'Category': w}
> dataPD = pd.DataFrame(data)
> 
> #Creating barchart figure, last parameter is my attempted solution
> 
> fig = px.bar(dataPD, x='Category', y="TotalTickets", animation_frame =
> 'Month', color = 'Year', barmode = 'group')
> 
> #Changing axis label fig.update_xaxes(title_text=' ')
> 
> 
> 
> 
> 
> #Publish to chart studio
> py.plot(fig, output_type = "div")

希望我能够将条形图分组在一起,以便特定月份的2018年条形图将紧随2019年条形图而不是堆叠在一起。

1 个答案:

答案 0 :(得分:1)

编辑:这里的问题是您的Year列是数字列,因此在基础图中只有一条迹线。这就是为什么您在侧面看到连续的色标的原因。要强制px进入分类颜色模式,您需要将Year列设置为字符串列:dataPD["Year"] = dataPD["Year"].astype(str)

barmode='group'是此方法的工作方式,它至少对我有帮助:

import plotly.express as px
tips = px.data.tips()
px.bar(tips, x='sex', y="total_bill", animation_frame ='size', color = 'smoker', barmode = 'group')

这会产生一个动画分组的条形图...对您来说是否一样?

animated grouped bar chart