问题描述
我想对我的 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
。