我一直在尝试为某些商店的销售数据绘制排序的条形图,但无论我尝试什么,它都会给我未排序的数据。如何使用 plotly 绘制排序的条形图。注意: https ://community.plot.ly/t/sort-bars-in-bar-chart-by-value-and-have-each-bar-with-a-different-color/14562没有为我工作。数据import numpy as npimport pandas as pdimport plotlyimport plotly.offline as pyimport plotly.graph_objs as gofrom plotly.offline import plot, iplot, init_notebook_modeinit_notebook_mode(connected=False)print([(x.__name__,x.__version__) for x in [np, pd,plotly]])url = "https://github.com/bhishanpdl/Datasets/blob/master/store_item_demand/train_store_item_demand.csv?raw=true"df = pd.read_csv(url, parse_dates=['date'],index_col=['date'])使用熊猫(给出排序的条形图)df1 = df.groupby('store')['sales'].sum().sort_values()df1.plot.bar()使用 plotly3.10(给出未排序的条形图)(如何解决这个问题?)def barplot(x,y): data = [go.Bar( x=x, y=y, marker={ 'color': y, 'colorscale': 'Reds' } )] layout = { 'xaxis': { 'tickvals': x, 'ticktext': ['store ' + str(i) for i in x], 'tickangle': 40 } } fig = go.FigureWidget(data=data, layout=layout) return iplot(fig)# plotdf1 = df.groupby('store')['sales'].sum().sort_values()x = df1.index.valuesy = df1.valuesbarplot(x,y)
1 回答
繁华开满天机
TA贡献1816条经验 获得超4个赞
用于此的正确键是layout.xaxis.categoryorder, 带有值"total ascending",但它仅适用于layout.xaxis.typeis "category"。如果您的x数组包含字符串,这会自动发生,但如果您x只包含数字,则必须手动设置它。
这是barplot推荐的函数版本:
def barplot(x,y):
data = [go.Bar(
x=x,
y=y,
marker={
'color': y,
'colorscale': 'Reds'
}
)]
layout = {
'xaxis': {
'tickvals': x,
'ticktext': ['store ' + str(i) for i in x],
'tickangle': 40,
'type': "category",
'categoryorder': 'total ascending'
}
}
fig = go.FigureWidget(data=data, layout=layout)
return iplot(fig)
添加回答
举报
0/150
提交
取消