我的数据如下:
1000 13 75.2
1000 21 79.21
1000 29 80.02
5000 29 87.9
5000 37 88.54
5000 45 88.56
10000 29 90.11
10000 37 90.79
10000 45 90.87
我想将第一列用作x轴标签,第二列用作y轴标签,第三列用作z值。我希望以这种方式显示表面。做这个的最好方式是什么?我试过Excel,但实际上并没有得到任何结果。有没有人对工具有什么建议呢?有谁知道如何在Excel中执行此操作?
由于
答案 0 :(得分:13)
我最终使用matplotlib:)
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
import matplotlib.pyplot as plt
import numpy as np
x = [1000,1000,1000,1000,1000,5000,5000,5000,5000,5000,10000,10000,10000,10000,10000]
y = [13,21,29,37,45,13,21,29,37,45,13,21,29,37,45]
z = [75.2,79.21,80.02,81.2,81.62,84.79,87.38,87.9,88.54,88.56,88.34,89.66,90.11,90.79,90.87]
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot_trisurf(x, y, z, cmap=cm.jet, linewidth=0.2)
plt.show()
答案 1 :(得分:10)
您实际上无法将3列数据显示为“曲面”。只有一列“Z”数据会在三维空间中给出一条线,而不是一个曲面(或者在数据的情况下,3条单独的线)。要使Excel能够处理此数据,需要按如下所示进行格式化:
13 21 29 37 45
1000 75.2
1000 79.21
1000 80.02
5000 87.9
5000 88.54
5000 88.56
10000 90.11
10000 90.79
10000 90.87
然后,要获得实际表面,您需要使用适当的Z值填充所有缺失的单元格。如果你没有那些,那么最好将它显示为3条独立的2D线,因为表面没有足够的数据。
Excel将为您提供上述数据的最佳3D表示非常令人困惑:
将此有限数据集表示为2D数据可能是更好的选择:
作为未来参考的注释,这些类型的问题通常会在superuser.com上做得更好。
答案 2 :(得分:0)
您可以使用r库进行3D绘图。
步骤是:
首先使用data.frame()命令创建数据框。
使用scatterplot3D库创建3D绘图。
或者您也可以使用plot3d()命令使用rgl库旋转图表。
或者,您可以使用rcmdr库中的plot3d()命令。
在MATLAB中,您可以根据需要使用surf(),mesh()或surfl()命令。
[http://in.mathworks.com/help/matlab/examples/creating-3-d-plots.html]
答案 3 :(得分:0)
您还可以使用Gnuplot
提供的gretl
。将x y z数据放在文本文件上,插入以下内容
splot 'test.txt' using 1:2:3 with points palette pointsize 3 pointtype 7
然后您可以使用
设置标签等set xlabel "xxx" rotate parallel
set ylabel "yyy" rotate parallel
set zlabel "zzz" rotate parallel
set grid
show grid
unset key
答案 4 :(得分:-1)
为什么不合并包含相同值的行? -
13 21 29 37 45
1000] -75.2 - 79.21 - 80.02
5000] --------------------- 87.9 --- 88.54 ---- 88.56
10000] ------------------- 90.11--90.97 ---- 90.87
Excel可以很好地使用它..