我一直试图在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)

输出
python - 如何在plolty3.10中绘制排序的barplot-LMLPHP
python - 如何在plolty3.10中绘制排序的barplot-LMLPHP
问题
如何使用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/

10-10 19:21