Matplotlib 绘制直方图、散点图

直方图

直方图可以帮助我们直观地发现数据在不同区间的分布和集中情况。下面,我们就先来学习一下 Matplotlib 直方图的绘制~

首先,导入工具包并执行魔法指令:

import numpy as np
import matplotlib.pyplot as plt

%matplotlib inline

绘制直方图,除了需要传递数据之外,还需要我们设置一个 bins ,即区间的划分:

data = np.random.normal(0,10,1000)
bins = np.arange(np.min(data),np.max(data)+1,5)

plt.hist(data,bins=bins)

绘制结果:

此外,我们还可以在一张图中绘制两组数据的直方图,可以进行对比分析:

import random

data1 = np.random.normal(0,10,1000)
data2 = np.random.normal(10,20,1000)

bins1 = np.arange(np.min(data1),np.max(data1)+1,5)
bins2 = np.arange(np.min(data2),np.max(data2)+1,5)

plt.hist(data1,bins=bins1,label='bins 1',alpha=0.6)
plt.hist(data2,bins=bins2,label='bins 2',alpha=0.6)

plt.legend(loc='best')

这里除了使用 plt.legend(loc='best') 添加了图注之外,在 plt.hist 绘制直方图时,我们设置了透明度 alpha=0.6 ,这样重叠的区间也可区分出两组数据了~

散点图

使用 plt.scatter 即可绘制散点图:

x1 = np.random.randint(10,size=(2,50))
x2 = np.random.randint(5,15,size=(2,50))
x3 = np.random.randint(10,15,size=(2,50))

plt.scatter(x1[0],x1[1],marker ='x',alpha=0.5,label='x1')
plt.scatter(x2[0],x2[1],marker ='o',alpha=0.5,label='x2')
plt.scatter(x3[0],x3[1],marker ='^',alpha=0.5,label='x3')

plt.legend(loc='best')

其中数据集 x1 x2 x3 都是二维的矩阵,在绘制散点图时我们将第一个维度的值作为横坐标,第二个维度的值作为纵坐标。

绘制结果:

上述,无论是散点图还是直方图,在一个坐标系绘制多组数据时,Matplotlib 都会自动为我们指定颜色,还是很方便的。我们只需要添加图注即可~

下面,我们来给散点图标注点的坐标~首先,绘制一个简单的散点图:

X = np.around(np.random.random_sample(size=(2,5)), decimals=1)

plt.figure(figsize=(8,6))
plt.scatter(X[0], X[1], marker='s', s=50)

绘制结果:

使用 annotate 在坐标系中添加注释:

plt.figure(figsize=(10,8))
plt.scatter(X[0], X[1], marker='s', s=50)

for x,y in zip(X[0],X[1]):
    plt.annotate(f'({x},{y})', xytext=(0,-15), xy=(x,y), textcoords='offset points', ha='center')

你可能感兴趣的:(Matplotlib 绘制直方图、散点图)