Your region of interest is delimited by three planes, passing all through the origin. Hence you should plot the three planes as parameterized surfaces. I donât know how this could be plotted with Plots, but I explain with a PlotlyJS example.
Suppose that the three planes are defined by the linear functions:
f(x,y,z) =2x-y+3z
g(x,y,z)=-x+y+z
h(x,y,z) =x-3y-5z
using LinearAlgebra, PlotlyJS
import StaticArrays: SMatrix
function planeparam(normal::SMatrix{1, 3, T}; p=[0,0,0]) where T<:AbstractFloat
~iszero(normal) || error("normal vector is null vect")
M = nullspace(normal)
a, b = eachcol(M)
#parameterization of the plane Ï(p; normal=no) defined by the point p and the given normal
(u,v)->[a[k]*u+b[k]*v+p[k] for k in 1:3] # theoretically: (u, v)->[X(u, v), Y(u,v), Z(u,v)]
end
#Get the parameterization of each plane
F = planeparam(SMatrix{1,3}([2.0 -1.0 3]); )
G = planeparam(SMatrix{1,3}([-1.0 1 1.]); )
H = planeparam(SMatrix{1,3}([1.0 -3 -5.]); )
#define a meshgrid over a rectangular region in the parametric plane (u,v):
n=200
ul = vl= range(-3, 3, n)
u = ones(n) * ul'
v = vl *ones(n)'
fig= Plot(Layout(width=450, height=450, font_size=11,
coloraxis = attr(colorscale=colors.algae, reversescale=true,
showscale=false ),
scene_camera_eye=attr(x=1.5, y=1.5, z=1)))
#add the planes as parameterized surfaces to the figure fig
for K in [F, G, H]
X, Y, Z = eachrow(hcat(K.(u,v)...))
addtraces!(fig, surface( x=reshape(X, n, n), y=reshape(Y, n, n),
z=reshape(Z, n, n), opacity=0.75, coloraxis="coloraxis",
))
end
display(fig)
I selected three random planar surfaces, hence the plot is not quite convincing, but it can suggest an idea on how to proceed. Here is missing the condition <=0. For linear functions it is very simple to get the region whree both three are negative, but it is complicated to shade that volume, because it is covered by the surfaces.
Note that depending on your linear functions, the volume where all three are negative can be bounded or unbounded.