猿问

如何在plolty3.10中绘制排序条形图

我一直在尝试为某些商店的销售数据绘制排序的条形图,但无论我尝试什么,它都会给我未排序的数据。如何使用 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'])

使用熊猫(给出排序的条形图)

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)



尚方宝剑之说
浏览 132回答 1
1回答

繁华开满天机

用于此的正确键是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)
随时随地看视频慕课网APP

相关分类

Python
我要回答