matplotlib数据可视化分析(3)-- matplotlib 散点图的绘制

什么是散点图

散点图显示两组数据的值,每个点的坐标位置由变量的值决定。
由一组不连续的点完成,用于观察两种变量的相关性。
例如身高-体重、温度-维度等等。

举例我们来实现身高和体重的散点图:
# 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()

matplotlib数据可视化分析(3)-- matplotlib 散点图的绘制

可以看出身高和体重有明显的正相关关系。

相关性一般来说有三种情况:正相关、负相关、不相关。

一个不相关的例子:

# 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 都是随机生成的,所以我们可以期望这两者是不相关的。
matplotlib数据可视化分析(3)-- matplotlib 散点图的绘制

一个正相关的例子:

# 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()

matplotlib数据可视化分析(3)-- matplotlib 散点图的绘制

实例:股票价格的涨幅

# 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()

图形如图:
matplotlib数据可视化分析(3)-- matplotlib 散点图的绘制

由图可知,前一天的涨幅和后一天的涨幅没有太大的关系。

散点图的外观调整

用的比较多的几个是:
(1)颜色,c
(2)点大小,s
(3)透明度,alpha
(4)点形状,marker

以股票上一小节的股票绘图为例,

调整点的大小

plt.scatter(yesterday_data, today_data, s=100)

matplotlib数据可视化分析(3)-- matplotlib 散点图的绘制

s 默认是 10 ,s = 10 和 s = 100 是面积相差为 10 倍的关系。

调整点的颜色

 plt.scatter(yesterday_data, today_data, c='r')

matplotlib数据可视化分析(3)-- matplotlib 散点图的绘制

调节点的形状

plt.scatter(yesterday_data, today_data, marker='<')

matplotlib数据可视化分析(3)-- matplotlib 散点图的绘制

调节透明度

plt.scatter(yesterday_data, today_data, s=500, alpha=0.5)

matplotlib数据可视化分析(3)-- matplotlib 散点图的绘制

使用透明度我们可以比较清楚地看到哪些点是集中的,哪些点是不集中的。