Python数据可视化之气泡图(图文并茂详细版!!!)
·
数据获取
•绘制气泡所需的数据与之前散点图的数据是一样的,都是美国中西部地区人口分布详情数据集,需要数据的可通过下面博客获取:Python数据可视化之散点图(进阶篇—图文并茂详细版!!!)
•上述数据集中包含很多常用的数据集,可供我们平时数据分析使用,非常实用!!!
数据分析
与散点图对比
•用上述数据绘制的散点图如下:
•散点图仅仅反映了横,纵坐标之间的关系,没有真实的反映出点与点不同性质之间的差异,不方便我们对比点与点之间的对应关系
•此时我们就需要气泡图:气泡图允许在图表中额外加入一个表示大小的变量进行点与点对比
绘制气泡图
确定需要对比的属性
•绘制流程和散点图相似,导入数据,确定横纵坐标,不同点:需要确定一个特征性质,进行点与点之间的属性对比
•我们选择所有特征中的’‘亚洲人口’'作为我们需要对比的属性进行绘图
代码测试:
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns
# 导入数据
midwest = pd.read_csv(r'D:\9\midwest_filter.csv')
# 预设图像各种信息
large = 22
med = 16
small = 12
params = {'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 # 需要对比的属性
选取亚洲人口作为对比属性,使用循环,切片取出属性的值
•上述图片中的点的大小代表该城市亚洲人口的多少,并与我们的散点图进行联系
更多推荐
已为社区贡献11条内容
所有评论(0)