Matplotlib 绘制直方图、散点图

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Matplotlib 绘制直方图、散点图相关的知识,希望对你有一定的参考价值。

参考技术A

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

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

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

绘制结果:

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

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

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

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

绘制结果:

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

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

绘制结果:

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

markdown matplotlib绘制三维曲面和散点图

更多例子https://matplotlib.org/gallery.html


曲面图
```
# -*- coding: utf-8 -*-

from matplotlib import pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
ax = Axes3D(fig)
X = np.arange(-4, 4, 0.25)
Y = np.arange(-4, 4, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)

# 具体函数方法可用 help(function) 查看,如:help(ax.plot_surface)
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='rainbow')

plt.show()
```


散点图

```
# -*- coding: utf-8 -*-

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

data = np.random.randint(0, 255, size=[40, 40, 40])

x, y, z = data[0], data[1], data[2]
ax = plt.subplot(111, projection='3d')  # 创建一个三维的绘图工程
#  将数据点分成三部分画,在颜色上有区分度
ax.scatter(x[:10], y[:10], z[:10], c='y')  # 绘制数据点
ax.scatter(x[10:20], y[10:20], z[10:20], c='r')
ax.scatter(x[30:40], y[30:40], z[30:40], c='g')

ax.set_zlabel('Z')  # 坐标轴
ax.set_ylabel('Y')
ax.set_xlabel('X')
plt.show()
```



```
# -*- coding: utf-8 -*-

from matplotlib import pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
ax = Axes3D(fig)
X = np.arange(-100, 100, 1)
Y = np.arange(-100, 100, 1)
X, Y = np.meshgrid(X, Y)
Z = 50

ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='rainbow')

data = np.random.randint(-100, 100, size=[20, 20, 20])
data1 = np.random.randint(-100, 0, size=[20, 20, 20])
data2 = np.random.randint(0, 100, size=[20, 20, 20])

x1, y1 = data[0], data[1]
z1 = data1[2]
x2, y2 = data[0], data[1]
z2 = data2[2]

ax.scatter(x1[:10], y1[:10], z1[:10], c='y')
ax.scatter(x2[10:20], y2[10:20], z2[10:20], c='r')

plt.show()
```

以上是关于Matplotlib 绘制直方图、散点图的主要内容,如果未能解决你的问题,请参考以下文章

matplotlib-直方图、箱体图、散点图

Matplotlib绘制基本图表

Matplotlib绘制散点图与条形图

实验4 Matplotlib数据可视化

Matplotlib库

python数据可视化(matplotlib,seaborn,plotly)