无法对 y 轴值进行排序

问题描述

我想对我的 y 轴进行排序,但我不能。我正在与 Plotly 合作,但我不明白。我使用 Pandas 融化函数将它全部放在 3 列中,它可以工作,但是当我做分组条形图时,y 轴很奇怪!我试图对其进行排序,但没有结果!您可以看到带有奇怪 y 轴的分组条形图:

enter image description here

这是我的代码

import pandas as pd
import plotly.express as px
from plotly.offline import plot

histo_prof=pd.melt(df,id_vars=['sequence'],var_name='indiceall',value_name='valeur')
 

Output:
          sequence      indiceall  valeur
0         (0,50]          indice  14525
1       (50,100]          indice   1552
2      (100,200]          indice   1475
3      (200,500]          indice    413
4     (500,1000]          indice    115
5    (1000,5000]          indice    274
6   (5000,10000]          indice     21
7         (0,50]  indicebssverif    458
8       (50,100]  indicebssverif    548
9      (100,200]  indicebssverif    275
10     (200,500]  indicebssverif    163
11    (500,1000]  indicebssverif    139
12   (1000,5000]  indicebssverif    269
13  (5000,10000]  indicebssverif     53
14        (0,50]    indicelogiso   5153
15      (50,100]    indicelogiso   1850
16     (100,200]    indicelogiso   1030
17     (200,500]    indicelogiso    549
18    (500,1000]    indicelogiso    255
19   (1000,5000]    indicelogiso    482
20  (5000,10000]    indicelogiso     23

#Grouped bar plot
fig_histoprof = px.bar(histo_prof,x="sequence",color="indiceall",y='valeur',title="Comparatif de la profondeur des forages/sondages ",barmode='group'
            )
plot(fig_histoprof) 

请帮助我,我知道这对你来说很容易,谢谢!

解决方法

问题是 melt 导致值是 objects,而不是 floatint。您无法使用以下方法解决此问题:

histo_prof.value.astype(np.float64)

我刚刚重新创建了您的数据框(下面称为 forage)并将其作为 csv 文件导入:

forage = pd.read_csv(r"C:\users\k_sego\forage.csv",sep=";")

这是

        sequence       indiceall  valeur
0         (0,50]          indice   14525
1       (50,100]          indice    1552
2      (100,200]          indice    1475
3      (200,500]          indice     413
4     (500,1000]          indice     115
5    (1000,5000]          indice     274
6   (5000,10000]          indice      21
7         (0,50]  indicebssverif     458
8       (50,100]  indicebssverif     548
9      (100,200]  indicebssverif     275
10     (200,500]  indicebssverif     163
11    (500,1000]  indicebssverif     139
12   (1000,5000]  indicebssverif     269
13  (5000,10000]  indicebssverif      53
14        (0,50]    indicelogiso    5153
15      (50,100]    indicelogiso    1850
16     (100,200]    indicelogiso    1030
17     (200,500]    indicelogiso     549
18    (500,1000]    indicelogiso     255
19   (1000,5000]    indicelogiso     482
20  (5000,10000]    indicelogiso      23

我做了你所做的:

import plotly.express as px
from plotly.offline import plot
fig_histoprof = px.bar(forage,x="sequence",color="indiceall",y='valeur',title="Comparatif de la profondeur des forages/sondages ",barmode='group'
            )
plot(fig_histoprof) 

返回了我认为您正在寻找的内容:

enter image description here

尝试使用 groupby 而不是melt。问题是 melt 导致值是 objects,而不是 floatint