Я пытаюсь найти способ построить свои 4D-данные с помощьюplotly, и мне кажется сумасшедшим, что в Интернете нет ссылок для этого.
Чего я пытаюсь достичь представляет собой простой интерфейс с тремя раскрывающимися меню для выбора значения по трем осям и, возможно, четвертым для выбора отображаемого фрагмента четвертой оси.
Однако я не могу найти никакой ссылки для этого это и единственный код, который я смог, код не работает, и отладка на графике может быть болезненной.
Вот мой код:
import pandas as pd
import numpy as np
import plotly.express as px
import plotly.graph_objects as go
# Load data
data = pd.read_csv("tempTable.csv")
data["lambda"] = 1. / data["phi"]
# Define variables and ranges
axis = ["p", "Tu", "phi", "egr"]
ranges = {a: np.unique(data[a].to_numpy()) for a in axis}
xaxis, yaxis, zaxis = 3, 1, 2 # Default axis selections
waxis = [x for x in range(len(axis)) if x not in [xaxis, yaxis, zaxis]][0]
isoID = 0
subData = data.loc[data[axis[waxis]] == ranges[axis[waxis]][isoID]] # Get the slice along waxis
var = "Su"
# Initial figure
fig = px.scatter_3d(subData.loc[subData["completed"]],
x=axis[xaxis],
y=axis[yaxis],
z=axis[zaxis],
color=var,
color_continuous_scale="turbo",
range_color=[0.0, subData.loc[subData["completed"], var].to_numpy().max()])
# Function to update axis in the plot
def create_3d_trace(xaxis, yaxis, zaxis):
waxis = [x for x in range(len(axis)) if x not in [xaxis, yaxis, zaxis]][0]
subData = data.loc[data[axis[waxis]] == ranges[axis[waxis]][isoID]]
return go.Scatter3d(
x=subData.loc[subData["completed"], axis[xaxis]],
y=subData.loc[subData["completed"], axis[yaxis]],
z=subData.loc[subData["completed"], axis[zaxis]],
mode="markers",
marker=dict(
size=3,
color=subData.loc[subData["completed"], var],
colorscale="turbo",
colorbar=dict(title=var),
cmin=0.0,
cmax=subData.loc[subData["completed"], var].to_numpy().max(),
)
)
# Add initial trace
fig = go.Figure(data=[create_3d_trace(xaxis, yaxis, zaxis)])
# Create dropdown menus
dropdown_x = [
dict(label=f"X: {ax}", method="update", args=[{"x": [subData.loc[subData["completed"], ax]]}, {"title": f"X-axis: {ax}"}])
for ax in axis
]
dropdown_y = [
dict(label=f"Y: {ax}", method="update", args=[{"y": [subData.loc[subData["completed"], ax]]}, {"title": f"Y-axis: {ax}"}])
for ax in axis
]
dropdown_z = [
dict(label=f"Z: {ax}", method="update", args=[{"z": [subData.loc[subData["completed"], ax]]}, {"title": f"Z-axis: {ax}"}])
for ax in axis
]
# Add menus to layout
fig.update_layout(
updatemenus=[
dict(
buttons=dropdown_x,
direction="down",
showactive=True,
x=0.1,
xanchor="left",
y=1.15,
yanchor="top",
),
dict(
buttons=dropdown_y,
direction="down",
showactive=True,
x=0.3,
xanchor="left",
y=1.15,
yanchor="top",
),
dict(
buttons=dropdown_z,
direction="down",
showactive=True,
x=0.5,
xanchor="left",
y=1.15,
yanchor="top",
),
],
scene=dict(
xaxis=dict(title=axis[xaxis]),
yaxis=dict(title=axis[yaxis]),
zaxis=dict(title=axis[zaxis]),
)
)
# Show the figure
fig.show() ```
However, the values shown are a single slice of "p", so setting one axis on p won't show a 3D graph but only a 2D plane on a 3D figure
Подробнее здесь: https://stackoverflow.com/questions/792 ... ing-plotly
Как построить 4D-графики с помощьюplotly? ⇐ Python
Программы на Python
1732360444
Anonymous
Я пытаюсь найти способ построить свои 4D-данные с помощьюplotly, и мне кажется сумасшедшим, что в Интернете нет ссылок для этого.
Чего я пытаюсь достичь представляет собой простой интерфейс с тремя раскрывающимися меню для выбора значения по трем осям и, возможно, четвертым для выбора отображаемого фрагмента четвертой оси.
Однако я не могу найти никакой ссылки для этого это и единственный код, который я смог, код не работает, и отладка на графике может быть болезненной.
Вот мой код:
import pandas as pd
import numpy as np
import plotly.express as px
import plotly.graph_objects as go
# Load data
data = pd.read_csv("tempTable.csv")
data["lambda"] = 1. / data["phi"]
# Define variables and ranges
axis = ["p", "Tu", "phi", "egr"]
ranges = {a: np.unique(data[a].to_numpy()) for a in axis}
xaxis, yaxis, zaxis = 3, 1, 2 # Default axis selections
waxis = [x for x in range(len(axis)) if x not in [xaxis, yaxis, zaxis]][0]
isoID = 0
subData = data.loc[data[axis[waxis]] == ranges[axis[waxis]][isoID]] # Get the slice along waxis
var = "Su"
# Initial figure
fig = px.scatter_3d(subData.loc[subData["completed"]],
x=axis[xaxis],
y=axis[yaxis],
z=axis[zaxis],
color=var,
color_continuous_scale="turbo",
range_color=[0.0, subData.loc[subData["completed"], var].to_numpy().max()])
# Function to update axis in the plot
def create_3d_trace(xaxis, yaxis, zaxis):
waxis = [x for x in range(len(axis)) if x not in [xaxis, yaxis, zaxis]][0]
subData = data.loc[data[axis[waxis]] == ranges[axis[waxis]][isoID]]
return go.Scatter3d(
x=subData.loc[subData["completed"], axis[xaxis]],
y=subData.loc[subData["completed"], axis[yaxis]],
z=subData.loc[subData["completed"], axis[zaxis]],
mode="markers",
marker=dict(
size=3,
color=subData.loc[subData["completed"], var],
colorscale="turbo",
colorbar=dict(title=var),
cmin=0.0,
cmax=subData.loc[subData["completed"], var].to_numpy().max(),
)
)
# Add initial trace
fig = go.Figure(data=[create_3d_trace(xaxis, yaxis, zaxis)])
# Create dropdown menus
dropdown_x = [
dict(label=f"X: {ax}", method="update", args=[{"x": [subData.loc[subData["completed"], ax]]}, {"title": f"X-axis: {ax}"}])
for ax in axis
]
dropdown_y = [
dict(label=f"Y: {ax}", method="update", args=[{"y": [subData.loc[subData["completed"], ax]]}, {"title": f"Y-axis: {ax}"}])
for ax in axis
]
dropdown_z = [
dict(label=f"Z: {ax}", method="update", args=[{"z": [subData.loc[subData["completed"], ax]]}, {"title": f"Z-axis: {ax}"}])
for ax in axis
]
# Add menus to layout
fig.update_layout(
updatemenus=[
dict(
buttons=dropdown_x,
direction="down",
showactive=True,
x=0.1,
xanchor="left",
y=1.15,
yanchor="top",
),
dict(
buttons=dropdown_y,
direction="down",
showactive=True,
x=0.3,
xanchor="left",
y=1.15,
yanchor="top",
),
dict(
buttons=dropdown_z,
direction="down",
showactive=True,
x=0.5,
xanchor="left",
y=1.15,
yanchor="top",
),
],
scene=dict(
xaxis=dict(title=axis[xaxis]),
yaxis=dict(title=axis[yaxis]),
zaxis=dict(title=axis[zaxis]),
)
)
# Show the figure
fig.show() ```
However, the values shown are a single slice of "p", so setting one axis on p won't show a 3D graph but only a 2D plane on a 3D figure
Подробнее здесь: [url]https://stackoverflow.com/questions/79211695/how-to-plot-4d-graphs-using-plotly[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия