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

标签 python matplotlib plot 3d

希望在 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

最佳答案

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

由于还没有人回答,我可以建议您使用 Plotly 进行 3D 或仅使用 MatPlotLib 进行 2D 并制作我所说的“积分技巧”:只需遍历轴并在坐标处放置一个散点图点满足不等式。

我建议 Plotly 用于 3D,因为如果您在 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 中实现同样的功能,我们似乎需要亲自动手。

关于python - 3D 绘图区域满足 matplotlib 中的不等式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61732123/

相关文章:

在 Maxima 中绘制 ODE 的解 ("expression evalues to non-numeric value everywhere")

python - Q : 'UnboundLocalError' : local variable 'exitErr' referenced before assignment

python - Linux Only 'ascii' 编解码器无法对位置 3 : ordinal not in range(128) 中的字符 u'\u0161' 进行编码

python - 在 Mac 上使用 matplotlib for Python 2.7

python - 如何放大绘图内部

Python - 在标记和边框之间的图例左侧添加空格

python - pcolorfast 上的 matplotlib MemoryError

python - 对数据点拟合更好的高斯分布?

xml - XPath 和 Jenkins Plot 插件

python - 从无组织的典型扫描模式激光雷达的点云数据生成图像