什么是散点图
散点图显示两组数据的值,每个点的坐标位置由变量的值决定。
由一组不连续的点完成,用于观察两种变量的相关性。
例如身高-体重、温度-维度等等。
举例我们来实现身高和体重的散点图:
# coding:utf-8
import matplotlib.pyplot as plt
height = [161, 170, 182, 175, 173, 165]
weight = [50, 58, 80, 70, 69, 55]
plt.scatter(height, weight)
plt.show()
可以看出身高和体重有明显的正相关关系。
相关性一般来说有三种情况:正相关、负相关、不相关。
一个不相关的例子:
# coding:utf-8
import matplotlib.pyplot as plt
import numpy as np
N = 1000
x = np.random.randn(N)
y1 = np.random.randn(N)
plt.scatter(x, y1)
plt.show()
因为 x 和 y1 都是随机生成的,所以我们可以期望这两者是不相关的。
一个正相关的例子:
# coding:utf-8
import matplotlib.pyplot as plt
import numpy as np
N = 1000
x = np.random.randn(N)
y1 = x + np.random.randn(N)*0.5
plt.scatter(x, y1)
plt.show()
实例:股票价格的涨幅
# coding:utf-8
import matplotlib.pyplot as plt
import numpy as np
open_data, close_date = np.loadtxt('000001.csv', delimiter=',',
skiprows=1, usecols=(1, 4), unpack=True)
change_data = open_data - close_date
print change_data
# 数据的大小 (242,)
print change_data.shape
# 计算涨幅的时候我们需要取其前 241 个以及后 241 个
# 用这两批数据形成散点图 即为前一天和后一天的涨幅
yesterday_data = change_data[:-1]
today_data = change_data[1:]
plt.scatter(yesterday_data, today_data)
plt.show()
图形如图:
由图可知,前一天的涨幅和后一天的涨幅没有太大的关系。
散点图的外观调整
用的比较多的几个是:
(1)颜色,c
(2)点大小,s
(3)透明度,alpha
(4)点形状,marker
以股票上一小节的股票绘图为例,
调整点的大小
plt.scatter(yesterday_data, today_data, s=100)
s 默认是 10 ,s = 10 和 s = 100 是面积相差为 10 倍的关系。
调整点的颜色
plt.scatter(yesterday_data, today_data, c='r')
调节点的形状
plt.scatter(yesterday_data, today_data, marker='<')
调节透明度
plt.scatter(yesterday_data, today_data, s=500, alpha=0.5)
使用透明度我们可以比较清楚地看到哪些点是集中的,哪些点是不集中的。