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)