为 python 中的 plotly 散点图自定义气泡大小
Customise bubble sizes for plotly scatterplot in python
我怀疑这是一个简单的编码问题,但我不知道哪里出错了:
我在 Jupyter notebook 中 运行 plotly,希望散点图的气泡与其中一个特征相对应。
我包括 5 个特征:
- 维度 A (x),
- 维度 B (y),
- 直辖市(气泡),
- 省份(颜色),
- 市政规模。
每个省有几个直辖市;下面的代码很好地为同一省份的城市分配了相同的颜色。
figure={'data': [
go.Scatter(
x=df[df['Province'] == i]['Dimension A'],
y=df[df['Province'] == i]['Dimension B'],
text=df[df['Province'] == i]['Municipalities'],
mode='markers',
opacity=0.7,
marker={
'size': df['Size'],
'line': {'width': 0.5, 'color': 'white'}
},
name=i
) for i in df.Province.unique()
],
'layout': go.Layout(
xaxis={'title': 'Dimension A'},
yaxis={'title': 'Dimension B'},
height=700,
width= 1200,
margin={'l': 40, 'b': 40, 't': 10, 'r': 10},
legend={'x': 0, 'y': 1},
hovermode='closest',
autosize = False,
)
}
iplot(figure)
但是,当我尝试将气泡的大小分配给 "Size" 特征时,它变得很奇怪。它确实 改变了第一个自治市泡泡的大小。但输出也看到第一个城市的价值应用于其他每个省的第一个城市(按照它在 df 中出现的顺序)。令人抓狂。智慧大受赞赏。
这是数据的片段:
Municipalities,Province,Dimension B,Dimension A,Size //
!Kheis,NC,0.79,1.39,4.22 //
//Khara Hais,NC,0.61,4.75,4.97 //
Abaqulusi,KZN,0.44,4.43,5.32 //
Aganang,LP,0.55,2.56,5.12 //
Albert Luthuli,MP,0.66,3.56,5.27 //
Amahlathi,EC,0.20,3.33,5.09 //
Ba-Phalaborwa,LP,0.22,4.33,5.18 //
Baviaans,EC,0.10,1.95,4.25 //
Beaufort West,WC,0.68,3.04,4.70 //
Bela-Bela,LP,0.60,3.87,4.82 //
Bergrivier,WC,0.53,2.77,4.79 //
Bitou,WC,0.68,5.00,4.69 //
Blouberg,LP,0.37,4.34,5.21 //
Blue Crane Route,EC,0.70,2.20,4.56 //
Breede Valley,WC,0.88,4.67,5.22 //
Buffalo City,EC,0.67,6.57,5.88 //
Bushbuckridge,MP,0.87,5.14,5.73 //
Camdeboo,EC,0.10,1.61,4.71 //
Cape Agulhas,WC,0.42,3.00,4.52 //
Cederberg,WC,0.73,2.94,4.70 //
City of Cape Town,WC,0.73,7.74,6.57 //
City of Johannes,GA,0.65,7.81,6.65 //
您应该修改 marker
字典中的 size
关键字:
'size': df['Size'],
至:
'size': df[df['Province'] == i]['Size']
你得到:
我怀疑这是一个简单的编码问题,但我不知道哪里出错了:
我在 Jupyter notebook 中 运行 plotly,希望散点图的气泡与其中一个特征相对应。
我包括 5 个特征:
- 维度 A (x),
- 维度 B (y),
- 直辖市(气泡),
- 省份(颜色),
- 市政规模。
每个省有几个直辖市;下面的代码很好地为同一省份的城市分配了相同的颜色。
figure={'data': [
go.Scatter(
x=df[df['Province'] == i]['Dimension A'],
y=df[df['Province'] == i]['Dimension B'],
text=df[df['Province'] == i]['Municipalities'],
mode='markers',
opacity=0.7,
marker={
'size': df['Size'],
'line': {'width': 0.5, 'color': 'white'}
},
name=i
) for i in df.Province.unique()
],
'layout': go.Layout(
xaxis={'title': 'Dimension A'},
yaxis={'title': 'Dimension B'},
height=700,
width= 1200,
margin={'l': 40, 'b': 40, 't': 10, 'r': 10},
legend={'x': 0, 'y': 1},
hovermode='closest',
autosize = False,
)
}
iplot(figure)
但是,当我尝试将气泡的大小分配给 "Size" 特征时,它变得很奇怪。它确实 改变了第一个自治市泡泡的大小。但输出也看到第一个城市的价值应用于其他每个省的第一个城市(按照它在 df 中出现的顺序)。令人抓狂。智慧大受赞赏。
这是数据的片段:
Municipalities,Province,Dimension B,Dimension A,Size //
!Kheis,NC,0.79,1.39,4.22 //
//Khara Hais,NC,0.61,4.75,4.97 //
Abaqulusi,KZN,0.44,4.43,5.32 //
Aganang,LP,0.55,2.56,5.12 //
Albert Luthuli,MP,0.66,3.56,5.27 //
Amahlathi,EC,0.20,3.33,5.09 //
Ba-Phalaborwa,LP,0.22,4.33,5.18 //
Baviaans,EC,0.10,1.95,4.25 //
Beaufort West,WC,0.68,3.04,4.70 //
Bela-Bela,LP,0.60,3.87,4.82 //
Bergrivier,WC,0.53,2.77,4.79 //
Bitou,WC,0.68,5.00,4.69 //
Blouberg,LP,0.37,4.34,5.21 //
Blue Crane Route,EC,0.70,2.20,4.56 //
Breede Valley,WC,0.88,4.67,5.22 //
Buffalo City,EC,0.67,6.57,5.88 //
Bushbuckridge,MP,0.87,5.14,5.73 //
Camdeboo,EC,0.10,1.61,4.71 //
Cape Agulhas,WC,0.42,3.00,4.52 //
Cederberg,WC,0.73,2.94,4.70 //
City of Cape Town,WC,0.73,7.74,6.57 //
City of Johannes,GA,0.65,7.81,6.65 //
您应该修改 marker
字典中的 size
关键字:
'size': df['Size'],
至:
'size': df[df['Province'] == i]['Size']
你得到: