希望在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的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中实现相同功能,看来我们需要动手。