我有一个看起来像这样的数据:
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维空间中的线,而不是表面(或在您的数据,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线更好,因为没有一个表面足够的数据。
最好的3D表示Excel将让你上面的数据是非常令人迷惑:
表示此有限的数据集的二维数据可能是一个更好的选择:
至于将来参考笔记,这些类型的问题通常做的更好一点superuser.com 。
均可以使用库3 d绘制。
步骤如下:
首先使用data.frame()命令的数据帧。
创建使用scatterplot3D库3D绘图。
或者您也可以通过PLOT3D格式()命令使用RGL库旋转图表。
或者您可以使用从rcmdr库PLOT3D格式()命令。
在MATLAB中,你可以使用冲浪(),网()或surfl()命令按您的要求。
[ http://in.mathworks.com/help/matlab/examples/creating-3-d-plots.html]
您还可以使用Gnuplot
这也可以从gretl
。 把你的XYZ数据的文本文件中插入以下
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