我的数据看起来像这样:
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中执行此操作?
谢谢
我最终使用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()
您实际上无法将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上做得更好。
您可以使用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]
您也可以使用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
为什么不合并包含相同值的行? -
13 21 29 37 45
Excel可以很好地使用它..