Измеренные данные 3D-графика из Excel XLSX в 3D-график
Я пытаюсь преобразовать значения XYZ в сетку или построить их напрямую с помощью функции.
У меня есть таблица с измеренными значениями. Расход компонента измерялся при различных давлениях. Итак, есть следующие измеренные значения:
Давление 1: Ось X: Значения положения Ось Y: Значения расхода
Давление 2: Ось X: Значения положения Ось Y: Значения расхода
....
С 8 различными давлениями у меня всего 16 столбцов со значениями XY.
На самом деле, я не думаю, что это так сложно. Если вы разрежете ось Z (глубину) на 8 слоев, у вас будут координаты XY для каждого слоя. Таким образом, программе достаточно было бы соединить их линейно или со сплайном на графике.
Есть ли функция, которой я назначаю столбец XY для каждого значения Z, и это можно вывести как график поверхности?
Чтобы было понятнее, я создал небольшой пример фиктивной таблицы со значениями:
2 ответа
Это не совсем ответ, потому что я хочу импортировать DataFrame из таблицы Excel. В таблице Excel значения вводятся как на картинке из моего последнего письма. Я хотел бы изобразить их в 3D.
Я импортировал данные следующим образом
from mpl_toolkits.mplot3d import Axes3D
import pandas as pd
fig = plt.figure()
ax = Axes3D(fig)
df=pd.read_excel('raw.xlsx')
Это то, что вы хотите?
import matplotlib.pyplot as plt
import numpy as np
# generate x, y
x = np.linspace(0, 10, 51)
w = np.linspace(0.5, 0.20, 10)
y = np.array([np.sin(wi*x)/wi for wi in w]) # 10 rows, 51 cols
# and a very generic z
z = np.linspace(1, 10, 10)
# note that in a surface plot the indipendent variable is Z,
# so IF our indipendent variable is y…
X, Y = np.meshgrid(x, z) ; Z = y # X, Y have 10 rows, 51 cols too
# this stuff is pretty standard, you can find info everywhere
fig = plt.figure() ; ax = fig.gca(projection='3d')
surf = ax.plot_surface(X, Y, Z, cmap='viridis')
ax.set(xlabel='x', ylabel='z', zlabel='y')
ax.view_init(elev=15, azim=-100)
fig.colorbar(surf, shrink=0.67) # the 1st arg is the output of plot_surface
https://i.stack.imgur.com/qvS5i.png
Цветовая карта используется по умолчанию, вы можете выбрать другую по названию. Вы можете увидеть полный список названий цветовых карт, используяplt.colormaps()
.