Подтвердить что ты не робот

3D-графика из X, Y, Z данных, Excel или других инструментов

У меня есть данные, которые выглядят так:

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?

Спасибо

4b9b3361

Ответ 1

В итоге я использовал 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()

Ответ 2

Вы действительно не можете отобразить 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 отдельные двумерные строки, потому что данных для поверхности недостаточно.

Лучшее трехмерное представление, которое Excel предоставит вам из приведенных выше данных, довольно запутанно:

enter image description here

Представление этого ограниченного набора данных в качестве 2D-данных может быть лучшим выбором:

enter image description here

В качестве примечания для дальнейшего использования эти типы вопросов обычно немного улучшаются на superuser.com.

Ответ 3

Вы можете использовать r-библиотеки для трехмерного построения.

Шаги:

Сначала создайте кадр данных, используя команду data.frame().

Создайте трехмерный график, используя библиотеку scatterplot3D.

Или Вы также можете повернуть диаграмму с помощью библиотеки rgl командой plot3d().

В качестве альтернативы вы можете использовать команду plot3d() из библиотеки rcmdr.

В MATLAB вы можете использовать команду surf(), mesh() или surfl() в соответствии с вашим требованием.

[http://in.mathworks.com/help/matlab/examples/creating-3-d-plots.html]

Ответ 4

Вы также можете использовать 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

Ответ 5

Почему бы не объединить строки, содержащие одни и те же значения?  -

         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 может использовать это довольно хорошо.