表面绘图原始数据

时间:2017-05-16 08:12:31

标签: python numpy matplotlib

我正在寻找一种方法将一些3D数据放到函数中并使用Python绘制它。

This tutorial描述了如何绘制3D表面,但它假设我们知道描述表面的函数。

如何导入下面的数据并使用plot_surface函数绘制它(在这种情况下不知道z = x * y)?

    x   1   2   3   4
y                   
1       1   2   3   4
2       2   4   6   8
3       3   6   9   12
4       4   8   12  16
5       5   10  15  20

1 个答案:

答案 0 :(得分:1)

使用数据格式不是很方便,但这里有一种读取数据的方法,忽略坐标并在之后重新生成它们。

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

d = u"""    x   1   2   3   4
y                   
1       1   2   3   4
2       2   4   6   8
3       3   6   9   12
4       4   8   12  16
5       5   10  15  20"""

s = io.StringIO(d)
a = np.loadtxt(s, skiprows=2)
Z = a[:,1:] # ignore first column

x = np.arange(1,Z.shape[1]+1)
y = np.arange(1,Z.shape[0]+1)
X,Y = np.meshgrid(x,y)

fig = plt.figure()
ax = fig.gca(projection='3d')

surf = ax.plot_surface(X, Y, Z, cmap=plt.cm.coolwarm,
                       linewidth=0, antialiased=False)

plt.show()

enter image description here