无法对 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
,而不是 float
或 int
。您无法使用以下方法解决此问题:
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
,而不是 float
或 int
.
我想对我的 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
,而不是 float
或 int
。您无法使用以下方法解决此问题:
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
,而不是 float
或 int
.