本文共 2080 字,大约阅读时间需要 6 分钟。
•绘制气泡所需的数据与之前散点图的数据是一样的,都是美国中西部地区人口分布详情数据集,需要数据的可通过下面博客获取:
•上述数据集中包含很多常用的数据集,可供我们平时数据分析使用,非常实用!!!•用上述数据绘制的散点图如下:
•散点图仅仅反映了横,纵坐标之间的关系,没有真实的反映出点与点不同性质之间的差异,不方便我们对比点与点之间的对应关系 •此时我们就需要气泡图:气泡图允许在图表中额外加入一个表示大小的变量进行点与点对比
•绘制流程和散点图相似,导入数据,确定横纵坐标,不同点:需要确定一个特征性质,进行点与点之间的属性对比
•我们选择所有特征中的’‘亚洲人口’'作为我们需要对比的属性进行绘图
代码测试:import matplotlib.pyplot as pltimport numpy as npimport pandas as pdimport seaborn as sns# 导入数据midwest = pd.read_csv(r'D:\9\midwest_filter.csv')# 预设图像各种信息large = 22med = 16small = 12params = { 'axes.titlesize': large, # 子图上的标题字体大小 'legend.fontsize': med, # 图例的字体大小 'figure.figsize': (med, small), # 画布大小 'axes.labelsize': med, # 标签的字体大小 'xtick.labelsize': med, # x轴标尺的字体大小 'ytick.labelsize': med, # y轴标尺的字体大小 'figure.titlesize': large} # 整个画布的标题字体大小plt.rcParams.update(params) # 设定各种默认属性plt.style.use('seaborn-whitegrid') # 设置整体风格sns.set_style('white') # 设置整体背景风格# 准备标签列表与颜色列表categories = np.unique(midwest['category'])colors = [plt.cm.tab10(i / float(len(categories) - 1)) for i in range(len(categories))]# 布置画布fig = plt.figure(figsize=(14, 8), dpi=120, facecolor='w', edgecolor='k')for i, category in enumerate(categories): plt.scatter('area', 'poptotal', data=midwest.loc[midwest.category == category, :] , s=midwest.loc[midwest.category == category, 'percasian'] * 500 # 需要对比的属性 , c=np.array(colors[i]).reshape(1, -1) # 点的颜色 , edgecolors=np.array(colors[i]).reshape(1, -1) # 点的边缘颜色 , label=str(category) # 标签 , alpha=0.7 # 透明度 , linewidths=.5) # 点的边缘线的宽度# 装饰图像plt.gca().set(xlim=(0.0, 0.12), ylim=(0, 90000), xlabel='Area', ylabel='Population')plt.xticks(fontsize=12)plt.yticks(fontsize=12)plt.title('Bubble Plot Encircling', fontsize=22)lgnd = plt.legend(fontsize=12)plt.show() # 显示图像
•上述代码与散点图不同的只有一行: s=midwest.loc[midwest.category == category, ‘percasian’] * 500 # 需要对比的属性
转载地址:http://lyrzi.baihongyu.com/