无法对 y 轴值进行排序

Can't Sort y axis values plotly

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

这是我的代码

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) 

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

尝试使用 groupby 而不是 melt。问题是 melt 结果是 objects,而不是 floatint.