满足matplotlib中不等式的3D绘图区域

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

希望在3D空间中为满足不等式集的区域着色:

x^2 < -2*x*y*z

y^2 < -2*x*y*z

z在[0,1]之间运行。

这可以在Mathematica中使用代码完成

RegionPlot3D[
x^2 < -2*x*y*z && y^2 <- 2*x*y*z,  {x, -1, 1}, {y, -1, 1}, {z, 0, 1}, 
PlotPoints -> 100] 

我想知道如何在matplotlib中执行此操作。

3D plot

python matplotlib plot 3d
1个回答
1
投票

我发现这个问题是在寻找相同问题的答案!

[由于尚无人回答,我可以建议您使用3D的Plotly或2D的MatPlotLib,并做我所谓的“积分技巧”:只需越过轴并在满足以下条件的坐标上放置一个散点图即可不平等。

我建议为3D绘制Plotly,因为如果在MatPlotLib中绘制许多点,则在旋转绘图时它的工作速度非常慢。

对于您的情节,我们可以编写以下内容:

import plotly.express as px
import numpy

data_x = []
data_y = []
data_z = []
for z in numpy.arange(0, 1, 0.01):
    for x in numpy.arange(-1, 1, 0.01):
        for y in numpy.arange(-1, 1, 0.01):
            if x**2 < -2*x*y*z and y**2 <- 2*x*y*z:
                data_x.append(x)
                data_y.append(y)
                data_z.append(z)


fig = px.scatter_3d(x=data_x, y=data_y, z=data_z, opacity=0.3)
fig.show()

尽管它只是一个近似的实体,但仍然有帮助。

尽管从技术上讲,这并不是一件容易的事,因为您需要根据区域来描述网格。事实证明,您至少需要找到实体的角。.因此,Mathematica为此具有出色的功能,但要在Python中实现相同功能,看来我们需要动手。

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