我有以下运行到图表的代码,我想要的是将 X、Y 和 Z 提取到列表中(这样我可以稍后在 Excel 中复制它们,并使用数字),基本上是另一种方式围绕拥有一组数据并将其绘制成图表:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import numpy as np
fig = plt.figure()
ax = fig.gca(projection='3d')
N = np.arange(0, 10, 1)
M = np.arange(0, 15, 1)
N, M = np.meshgrid(N, M)
DNM = 3992.88*N - 2585.96*M
surf = ax.plot_surface(N, M, DNM, rstride=1, cstride=1, cmap=cm.jet,
linewidth=0, antialiased=False)
ax.set_zlim(-25000, 20000)
ax.zaxis.set_major_locator(LinearLocator(10))
ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))
fig.colorbar(surf, shrink=0.5, aspect=10)
plt.show()
最佳答案
首先,您需要将二维数组 dnm
转换为 x-y-z 格式:
n, m = dnm.shape
rows, cols = np.mgrid[:n,:m]
xyz = np.column_stack((rows.ravel(), cols.ravel(), dnm.ravel()))
然后您可以使用 pandas
将生成的数组 xyz
写入 Excel 文件:
import pandas as pd
df = pd.DataFrame(xyz)
xyz_path = "xyz.xlsx"
df.to_excel(xyz_path, index=False)
关于python - 从 matplotlib 和方程中提取数据点(统计数据),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72523990/