为 python 中的 plotly 散点图自定义气泡大小

Customise bubble sizes for plotly scatterplot in python

我怀疑这是一个简单的编码问题,但我不知道哪里出错了:

我在 Jupyter notebook 中 运行 plotly,希望散点图的气泡与其中一个特征相对应。

我包括 5 个特征:

  1. 维度 A (x),
  2. 维度 B (y),
  3. 直辖市(气泡),
  4. 省份(颜色),
  5. 市政规模。

每个省有几个直辖市;下面的代码很好地为同一省份的城市分配了相同的颜色。

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']

你得到: