首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Seaborn 的五彩气泡图(上:先讲重点)

Seaborn 的五彩气泡图(上:先讲重点)

作者头像
数据山谷
发布2020-12-22 11:27:52
发布2020-12-22 11:27:52
4.7K0
举报
文章被收录于专栏:数据山谷数据山谷
先看我们的目标作品

看着这图确实很普通,也没有隔壁 PyEcharts 浮夸 好看的动态效果。但是其实想要画出来这个图,你需要掌握以下几个代码编辑方法:

1. 绘制散点图

2. 根据某个字段的类别填充不同的颜色

3. 绘制分类标签的图例

4. 善于利用 plt.cm 接口中的颜色光谱

5. 根据某个度量字段控制散点大小,进而做成气泡图

如果以上一条有任意一条你还不会的,就给我耐心看完(凶巴巴)

如果你都会了,那就分享给你的朋友好吗(可可爱爱)

环境说明

熊猫本次用的是 Anaconda 的 jupyter notebook 编写的本文代码。今天用到的库都是已经集成好的,无须另行安装。每个库的版本号我列在下方了。

Python :3.7.4

pandas : 1.1.4

numpy : 1.19.4

matplotlib : 3.3.2

seaborn:0.9.0

# seaborn 要求必须是 0.9.0 以上版本

可以在终端(win 系统在cmd)中运行如下代码查询自己环境中各个库的版本,如果你的版本比较低,可以运行升级代码对相应的库进行升级。

代码语言:javascript
复制
pip list #查看各个库的版本号
pip install --upgrade 库名 #升级对应库版本

常规操作 import

代码语言:javascript
复制
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

#让图像可以正常显示中文
plt.rcParams['font.family']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False

先学习如何绘制一个散点图

代码语言:javascript
复制
#先随机生成一组数据
x1 = np.random.randn(10)
x2 = x1 + x1**2 + 5

#生成一个画布
plt.figure(figsize=(8,4))

#绘制散点图
#本条代码传参含义
#plt.scatter(横坐标,纵坐标,散点尺寸,数据点颜色,图例)
plt.scatter(x1,x2 ,s=50,c="red",label = "Red")

#添加标题
plt.title("散点图")

#显示图例
plt.legend()

#显示绘制图形(如下图)
plt.show()

#由于数据是随机生成,每个人画出来是不一样的哦!

根据标签区别散点颜色

代码语言:javascript
复制
#随机10行,2列的数据集
X = np.random.randn(10,2)
#生成标签
y = np.array([0,0,1,1,0,1,0,1,0,0])

#添加画布
plt.figure(figsize=(8,4))

#绘制散点图
#c为颜色参数,传入 y 标签,根据 y 标签的数量自动分发不同颜色
plt.scatter(X[:,0],X[:,1],s=5,c=y,label = ["Zero","One"])

#显示图例,显示图像
plt.legend()
plt.show()

成果图如下,我们很好的根据 y 标签区分了散点颜色

但是要注意到,图例并不理想。

【核心】分类标签图例

代码语言:javascript
复制
#生成控制气泡大小的特征
z = np.array([10,7,2,5,15,6,3,7,19,11])

#添加画布
plt.figure(figsize=(8,4))

#确定颜色列表
colors = ["green","black"]
#确定标签名称列表
labels = ["Zero","One"] 

#代码思路:
#在上一份代码的基础上加上控制气泡大小的 s 参数。并且将 z 传入。
for i in range(X.shape[1]):
    plt.scatter(X[y==i,0],X[y==i,1],c=colors[i],s=z[y==i],label = labels[i])

#设计标题
plt.title("区分标签图例")

#显示图例和图表
plt.legend()
plt.show()

DADA~!

【核心】散点图>气泡图

散点图可以清晰的呈现总体样本的分布情况。

如果进阶成气泡图,便可以在此基础上增加一个维度特征。

代码语言:javascript
复制
#随机生成控制气泡大小的特征
z = np.array([10,7,2,5,15,6,3,7,19,11])

#添加画布
plt.figure(figsize=(8,4),dpi=120)

#确定颜色列表
colors = ["green","black"]
#确定标签名称列表
labels = ["Zero","One"] 

#代码思路:
#在上份代码基础上加上控制气泡大小的 s 参数,并将 z 传入。
for i in range(X.shape[1]):
    plt.scatter(X[y==i,0],X[y==i,1],c=colors[i],s=z[y==i]*20,label = labels[i])

#设计标题
plt.title("气泡图")

#显示图例和图表
#markerscale 参数调整图例大小
plt.legend(markerscale=0.5)
plt.show()

卖个关子 亲我 别打我

今天我们把所有技术点都讲到位了,下篇文章我们用我们今天的方法去做我们的目标图(也就是下图)。我们即将用 gitub 上一份公开数据集。是美国中西部地区城市指标,你可以后台回复 midwest 获得这份数据集。提前试试能不能利用 area 、population、popasian 自己做出来。

熊猫寄语:祝大家也能写出如诗般的代码。下课!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据山谷 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档