笛卡尔域中不同深度处函数的3-D平面/轮廓图

问题描述 投票:2回答:1

我对情节比较陌生,它对我来说真是个了不起的工具!但是,作为新用户,我也遇到了一系列问题,希望您能为我提供帮助。

简而言之,我正在使用plotly对我的3d模拟的涡度场进行后处理分析。这意味着我拥有XYZ坐标和一个函数W,该值存在于3-D空间中的每个网格点,但它们与Z不相同。假设X从-2000到2000,Y从-1500到1500 ,Z从0到-660,W从-10到+10。

我想在等深度(例如0km,-110km和-660km)的不同XY平面上可视化W的值。如果Z * =恒定深度值,我做(W-Z *),这会将曲面图移到正确的深度。但是,函数W的值也变为(W-Z *),并且由于没有物理意义而具有。

下面有一个复制的例子。

import plotly.graph_objects as go
import numpy as np

# Create 3D grid
X      =        np.linspace(-2000, 2000, 15)
Y      =        np.linspace(-1500, 1500, 6)
Z      =        np.linspace(-660, 0., 6)

x, y, z = np.meshgrid(X, Y, Z, indexing='ij')

assert np.all(x[:,0,0] == X)
assert np.all(y[0,:,0] == Y)
assert np.all(z[0,0,:] == Z)


w1 = np.array([
    [8.83,8.89,8.81,8.87,8.9,8.87],
    [8.89,8.94,8.85,8.94,8.96,8.92],
    [8.84,8.9,8.82,8.92,8.93,8.91],
    [8.79,8.85,8.79,8.9,8.94,8.92],
    [8.79,8.88,8.81,8.9,8.95,8.92],
    [8.8,8.82,8.78,8.91,8.94,8.92],
    [8.75,8.78,8.77,8.91,8.95,8.92],
    [8.8,8.8,8.77,8.91,8.95,8.94],
    [8.74,8.81,8.76,8.93,8.98,8.99],
    [8.89,8.99,8.92,9.1,9.13,9.11],
    [8.97,8.97,8.91,9.09,9.11,9.11],
    [9.04,9.08,9.05,9.25,9.28,9.27],
    [9,9.01,9,9.2,9.23,9.2],
    [8.99,8.99,8.98,9.18,9.2,9.19],
    [8.93,8.97,8.97,9.18,9.2,9.18]
])
w2 = np.array([
    [8.83,8.89,8.81,8.87,8.9,8.87],
    [8.89,8.94,8.85,8.94,8.96,8.92],
    [8.84,8.9,8.82,8.92,8.93,8.91],
    [8.79,8.85,8.79,8.9,8.94,8.92],
    [8.79,8.88,8.81,8.9,8.95,8.92],
    [8.8,8.82,8.78,8.91,8.94,8.92],
    [8.75,8.78,8.77,8.91,8.95,8.92],
    [8.8,8.5,8.77,8.91,8.95,8.94],
    [8.74,8.81,8.76,8.93,4.98,8.99],
    [8.89,8.99,8.92,9.1,9.13,9.11],
    [8.97,8.97,8.91,9.09,9.11,9.11],
    [9.04,9.08,9.05,9.25,9.28,9.27],
    [9,9.01,16,9.2,9.23,9.2],
    [8.99,8.99,8.98,9.18,9.2,9.19],
    [8.93,8.97,8.97,9.18,9.2,9.18]
])
w3 = np.array([
    [8.83,8.89,8.81,8.87,8.9,8.87],
    [8.89,8.94,8.85,8.94,8.96,8.92],
    [8.84,8.9,8.82,8.92,8.93,8.91],
    [8.79,8.85,8.79,8.9,4.94,8.92],
    [8.79,8.88,8.81,8.9,8.95,8.92],
    [8.8,8.82,8.78,8.91,8.94,8.92],
    [8.75,8.78,8.77,8.91,8.95,8.92],
    [8.8,8.8,8.77,8.91,8.95,8.94],
    [8.74,8.81,8.76,8.93,8.98,8.99],
    [8.89,8.99,8.92,9.1,9.13,9.11],
    [8.97,8.97,8.91,9.09,9.11,9.11],
    [9.04,9.08,20.05,9.25,9.28,9.27],
    [9,9.01,9,9.2,9.23,9.2],
    [8.99,8.99,8.98,9.18,9.2,9.19],
    [8.93,8.97,8.97,9.18,9.2,9.18]
])

w2 = w2 -110 
w3 = w3 - 660


mycolorscale = [[0, 'magenta'],[0.3, 'violet'], [0.35, 'blue'], [0.5, 'green'],[0.6, 'yellow'],[0.8, 'orange'], [1, 'red']]


fig1 = go.Figure(data=[
        go.Surface (


            z=w1, showscale=False,opacity=0.9,),

        go.Surface(

                   z=w2,showscale=False, opacity=0.9,),
        go.Surface(

                   z=w3,  opacity=0.9,),  ])

fig1.update_layout(coloraxis = dict(colorscale=mycolorscale, cmin =-320, cmax=320, colorbar_thickness=25))




fig1.update_layout(scene = dict(
                    xaxis_title='X [km]',
                    yaxis_title='Y [km]',
                    zaxis_title='Z [km]'),
                    )




fig1.show()

这是输出,如何看到平面的颜色比w的最小值小很多:“

在这里,您可以找到此查询的扩展版本:https://community.plot.ly/t/plot-different-3d-surface-contour-plot-planes-of-the-same-function-at-different-depths-in-the-cartesian-domain/32933/5

plotly surface
1个回答
0
投票

更新:

© www.soinside.com 2019 - 2024. All rights reserved.