我一直试图在plotly中为一些商店的销售数据绘制已排序的barplot,但是无论我尝试什么,它都会给我未排序的数据如何使用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 np
import pandas as pd
import plotly
import plotly.offline as py
import plotly.graph_objs as go
from plotly.offline import plot, iplot, init_notebook_mode
init_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'])
使用pandas(给出排序的条形图)
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)
# plot
df1 = df.groupby('store')['sales'].sum().sort_values()
x = df1.index.values
y = df1.values
barplot(x,y)
输出
问题
如何使用Plotly3.10获得分类条形图?
相关链接
https://community.plot.ly/t/sort-bars-in-bar-chart-by-value-and-have-each-bar-with-a-different-color/14562
不适合我。
最佳答案
用于此操作的正确键是layout.xaxis.categoryorder
,值为"total ascending"
,但仅当layout.xaxis.type
为"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)
关于python - 如何在plolty3.10中绘制排序的barplot,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57642439/