16

我的数据如下所示:

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 中执行此操作?

谢谢

4

5 回答 5

16

我最终使用了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()
于 2013-04-10T00:22:35.597 回答
10

您真的不能将 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 线,因为没有足够的数据用于表面。

Excel 为您提供的上述数据的最佳 3D 表示非常令人困惑:

在此处输入图像描述

将这个有限的数据集表示为 2D 数据可能是更好的选择:

在此处输入图像描述

作为将来参考的说明,这些类型的问题通常在superuser.com上做得更好。

于 2013-04-08T15:25:25.380 回答
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]

于 2016-08-08T07:00:07.773 回答
0

您也可以使用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
于 2017-08-21T17:44:38.040 回答
-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可以很好地使用它..

于 2014-09-19T14:26:54.993 回答