mirror of
https://github.com/Estom/notes.git
synced 2026-02-07 04:23:55 +08:00
48 lines
1.3 KiB
Markdown
48 lines
1.3 KiB
Markdown
# 3D散点图
|
|
|
|
演示3D中的基本散点图。
|
|
|
|

|
|
|
|
```python
|
|
# This import registers the 3D projection, but is otherwise unused.
|
|
from mpl_toolkits.mplot3d import Axes3D # noqa: F401 unused import
|
|
|
|
import matplotlib.pyplot as plt
|
|
import numpy as np
|
|
|
|
# Fixing random state for reproducibility
|
|
np.random.seed(19680801)
|
|
|
|
|
|
def randrange(n, vmin, vmax):
|
|
'''
|
|
Helper function to make an array of random numbers having shape (n, )
|
|
with each number distributed Uniform(vmin, vmax).
|
|
'''
|
|
return (vmax - vmin)*np.random.rand(n) + vmin
|
|
|
|
fig = plt.figure()
|
|
ax = fig.add_subplot(111, projection='3d')
|
|
|
|
n = 100
|
|
|
|
# For each set of style and range settings, plot n random points in the box
|
|
# defined by x in [23, 32], y in [0, 100], z in [zlow, zhigh].
|
|
for c, m, zlow, zhigh in [('r', 'o', -50, -25), ('b', '^', -30, -5)]:
|
|
xs = randrange(n, 23, 32)
|
|
ys = randrange(n, 0, 100)
|
|
zs = randrange(n, zlow, zhigh)
|
|
ax.scatter(xs, ys, zs, c=c, marker=m)
|
|
|
|
ax.set_xlabel('X Label')
|
|
ax.set_ylabel('Y Label')
|
|
ax.set_zlabel('Z Label')
|
|
|
|
plt.show()
|
|
```
|
|
|
|
## 下载这个示例
|
|
|
|
- [下载python源码: scatter3d.py](https://matplotlib.org/_downloads/scatter3d.py)
|
|
- [下载Jupyter notebook: scatter3d.ipynb](https://matplotlib.org/_downloads/scatter3d.ipynb) |