统计图表之散点图

1. 散点图

  散点图用于查看两个变量之间的关系,

import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

data = pd.read_excel('data.xlsx')
change = data.Open - data.Close
x = change[:-1]
y = change[1:]

plt.scatter(x, y)
plt.show()

在这里插入图片描述

1.1 常用参数

  • c: 颜色
  • s:大小
  • marker:点的形状
  • alpha:点的透明度
plt.scatter(x, y, c='r', s=30, marker='^', alpha=0.4)
plt.show()

在这里插入图片描述

2. 进阶图

2.1 气泡图

  气泡图常用于展示3个变量间的关系。在上一节中介绍了scatter中的s参数可以控制点的大小,由于它可以传入一个数组,这样就能让不同的点有不同的大小,利用s的这个特点就能实现气泡图:

import numpy as np

x = np.arange(1,10) 
y = np.random.randint(1, 10, size=9)
size = np.exp(x)

plt.scatter(x, y, c='r', s=size, marker='o', alpha=0.3)

在这里插入图片描述
  如上图所示,各点的大小随着横轴的增加增加,在处理实际问题时,传入s的数组的值尽量要大一点,不然点大小的差距不明显。

2.2 边缘直方图

  本文的一开始就介绍散点图可以用来探索变量间的关系,那么我们在使用散点图的同时能不能页观察单个变量的特征呢?答案是可以的,我们可以使用边缘直方图在散点图的边缘实现单个变量的直方图:

import numpy as np
import matplotlib.pyplot as plt

%matplotlib inline

# 为了美观我们使用ggplot的绘图风格
plt.style.use('ggplot')

# 随机生成数据
x = np.random.randn(200)
y = x + np.random.randn(200) * 0.5

# 创建一个大小为16*12画板,并把画板分解成16块
fig = plt.figure(figsize=(16, 12))
grid = plt.GridSpec(4, 5, hspace=0.3, wspace=0.2)

# 左上九个格子为主图(散点图)的区域
axScatter = fig.add_subplot(grid[:-1, :-1])
# 最右一行的前3个格子为横轴变量的直方图的区域
axHistX = fig.add_subplot(grid[-1, 0:-1], xticklabels=[], yticklabels=[])
# 最右一列的前3个格子为纵轴变量的直方图的区域
axHistY = fig.add_subplot(grid[:-1, -1], xticklabels=[], yticklabels=[])


# 散点图绘制
axScatter.scatter(x, y)

# 横轴直方图
axHistX.hist(x, 40, orientation='vertical')
axHistX.invert_yaxis()

# 纵轴直方图
axHistY.hist(y, 40, orientation='horizontal')

# 标题
axScatter.set(title='Scatter', xlabel='X', ylabel='Y')

# 标题字体大小
axScatter.title.set_fontsize(20)

plt.show()

在这里插入图片描述
  画这个边缘直方图使用了matplotlib中的GridSpec方法,该方法主要是可以将画布进行裁剪。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值