python 中散点图和饼图的组合

问题描述 投票:0回答:1

假设我有这样的样本数据:

#Sample Data
df=pd.DataFrame ({'x':[1,1,2,2],'y':[2,3,2,3],'Share':[0.834437,0.165562,0.966749,0.033250]})

'x' 代表客户数量,'y' 代表商店 id,'Share' 显示客户从一家商店购买的商品与所有商店相比的百分比。这意味着每个客户的份额总和必须接近 1.

另一方面,每个商店有两种产品:A 和 B,顾客可以购买,并且每种产品也有顾客购买的百分比。

df2=pd.DataFrame({'x':[1,1,1,1,2,2,2,2],'y':[2,2,3,3,2,2,3,3],'product'=[A,B,A,B,A,B,A,B],'ProdShare':[0.863095,0.136904,0.940000,0.060000,0.842494,0.157505,0.925233,0.074766]}

例如顾客1号,在2号店购买,是他购买次数的0.834437次。他购买产品 A 0.863095 次,购买 B 0.136904 次 (0.863095+0.136904~1)

现在我想在剧情中表现出来

如您所见,这是

scatter_pie
图表,每个圆圈表示商店的份额百分比,每个圆圈内,红色表示A的份额百分比,黄色表示B的份额百分比。 我怎样才能在 python 中得到这个图表?

python scatter-plot pie-chart
1个回答
0
投票

我认为使用子图会更容易。

这是我得到的:

labels = ["A", "B"]

fig = make_subplots(
    rows=2, cols=2, 
    specs=[[{'type':'domain'}, {'type':'domain'}], [{'type':'domain'}, {'type':'domain'}]],
    subplot_titles=['Subtitle 1', 'Subtitle 2', 'Subtitle 3', 'Subtitle 4']
)

A_percents = [0.863095, 0.94, 0.842494, 0.925233]
B_percents = [0.136904, 0.06, 0.157505, 0.074766]
sizes = [0.834437,0.165562,0.966749,0.033250]
rows = [1, 1, 2, 2]
columns = [1, 2, 1, 2]

for i in range(4):
    
    fig.add_trace(
        go.Pie(
            labels=labels, 
            values=[A_percents[i]*sizes[i], B_percents[i]*sizes[i]], 
            scalegroup='one',
            name="Name"
        ), 
        row=rows[i], col=columns[i]
    )

fig.update_layout(title_text='Title', height=950, width=950)
fig.show()

工作原理:同一尺度组中的地块用与其总大小成比例的面积表示。

© www.soinside.com 2019 - 2024. All rights reserved.