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