python - matplotlib 中矩形数组的曲面图

标签 python python-3.x numpy matplotlib mplot3d

我正在尝试使用 matplotlib 生成矩形阵列的曲面图(在我的例子中,它是 47x70)。该数组的组织方式是:

47 - 这个维度表示特征的数量

70 - 该维度表示样本数量

该数组包含每个样本中这些特征的值。

如果我要在 MATLAB 或 Octave 中生成曲面图,那真的很简单。

vals = csvread("vals.csv"); 冲浪(瓦尔斯)

输出看起来像这样 -

Surface plot of a 47x70 array generated using numpy.random.randint

vals.csv 中的数组生成如下 -

tempvals = np.random.randint(0, 10000, size = (47, 70))
np.savetxt("vals.csv", tempvals, delimiter=',')

如何在 python/matplotlib 中执行此操作?

There is a pretty nice answer here 。但是,这个答案使用了一些我无法使用的插值。我想直接绘制我的值。

我尝试写一些非常基本的东西。像这样 -

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

vals = np.genfromtxt('vals.csv', delimiter=',')

fig1 = plt.figure(1, figsize = (9, 6))
ax1 = fig1.add_subplot(111, projection = '3d')
xax = np.arange(0, 46)
yax = np.arange(0, 70)
xax, yax = np.meshgrid(yax, xax)

Axes3D.plot3D(xax, yax, vals)

当然,这会失败并出现错误 -

AttributeError:'numpy.ndarray'对象没有属性'has_data'

我已经浏览过this entire page但我缺少一些东西。如何生成矩形阵列的曲面图?

最佳答案

我认为这会产生类似于您链接到的 surf(vals) matlab 图的结果:matplotlib - 3d surface from a rectangular array of heights .

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

# gen random 2d array and write to csv file
tempvals = np.random.randint(0, 10000, size = (47, 70))
np.savetxt("vals.csv", tempvals, delimiter=',')

# read from csv
vals = np.genfromtxt('vals.csv', delimiter=',')
val_xdim, val_ydim = vals.shape

# generate meshgrid for plot
xax = np.arange(0, val_xdim)
yax = np.arange(0, val_ydim)
xax, yax = np.meshgrid(yax, xax)

# plot and save
fig = plt.figure()
ax = fig.gca(projection='3d')
surf = ax.plot_surface(xax, yax, vals, rstride=1, cstride=1, cmap='viridis', linewidth=0, antialiased=False)
ax.plot_wireframe(xax, yax, vals, color='k', lw=0.05, alpha=0.3)
fig.colorbar(surf, shrink=0.5, aspect=5)
plt.savefig("rand_3d_surf.png", dpi=160)

它产生: Example 3d surface plot

关于python - matplotlib 中矩形数组的曲面图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52462435/

相关文章:

python - 将 subprocess.run 与包含引号的参数一起使用

python - 使用 openpyxl Tokenizer 解析 Excel IF 语句

python - 在行和列中切片 scipy.sparse.lil_matrix

python - Python 中存储在数组中的矩阵相乘

python - 在循环中使用 numpy load 时内存溢出

python - 如何在编辑后让 vscode 检测/自动重新加载模块?

python - Job Scheduler - 用于编写作业定义的 YAML?

python - 如何通过 :Django 中的 URL 传递带空格的变量

python - Scipy.integrate浮点错误

python-3.x - 如何使用 BeautifulSoup 解析嵌套标签