我正在寻找一种方法将一些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
答案 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()