python画气泡图(4个象限)

用python画气泡图,气泡分布在4个象限(也可以作为象限图,只是更多一个气泡大小的维度)

看一下气泡图的示例:
在这里插入图片描述
图里有三个维度的数据:基础业务同比(横轴)、创新业务同比(纵轴),收入规模值(气泡大小)

直接附代码,重要步骤的注释都标在代码中了

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import xlrd

dataFile=xlrd.open_workbook('E:\python\city-bubble.xlsx')
cityBubble=pd.read_excel(dataFile)
print(cityBubble)

city=cityBubble['市州'].tolist()
yearCom=cityBubble['创新业务同比'].tolist()
monthCom=cityBubble['基础业务同比'].tolist()
income=cityBubble['整体收入'].tolist()

'''dataframe需要转化成list
city=pd.DataFrame(cityBubble,columns=['市州'])
yearCom=pd.DataFrame(cityBubble,columns=['同比'])
monthCom=pd.DataFrame(cityBubble,columns=['环比'])
income=pd.DataFrame(cityBubble,columns=['整体收入同比']
'''

# 这两行代码解决 plt 中文显示的问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False



colors = np.random.rand(len(income))  # 颜色数组

plt.scatter(yearCom, monthCom, c=colors,s=3*np.sqrt(income), alpha=0.6)  # 画散点图, alpha=0.6 表示不透明度为 0.6 这里我的income值有点大,导致气泡重叠较多,我取了一个平方根np.sqrt(income),为了缩小气泡


plt.text(np.max(yearCom)+0.05,np.mean(monthCom),'基础业务同比',fontsize=14)
plt.text(np.mean(yearCom),np.max(monthCom)+0.05,'创新业务同比',fontsize=14)
ax=plt.gca()
ax.spines['right'].set_color('none') #只保留一条纵坐标轴,形成象限图
ax.spines['top'].set_color('none')
#ax.xaxis.set_ticks_position('bottom')
#ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',np.mean(yearCom)))
ax.spines['bottom'].set_position(('data',np.mean(monthCom)))
for i in range(len(city)):#为每个气泡做标注
    plt.annotate(city[i],xy=(yearCom[i],monthCom[i]),xytext=(yearCom[i]+0.005,monthCom[i]+0.005))
plt.show()
  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值