欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

用Python绘制四象限的气泡图

最编程 2024-02-13 15:35:00
...
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()