# How can I reflect a StreamPlot object?

I want to reflect a StreamPlot object across the x = 0 line. For example, let's say I have this code:

Bdcart[x_, y_, z_, m_] =
π/2
{(3 m x z)/(x^2 + y^2 + z^2)^(5/2), (3 m y z)/(x^2 + y^2 + z^2)^(5/2),
(m (3 z^2 - (x^2 + y^2 + z^2)))/(x^2 + y^2 + z^2)^(5/2)};
m = 1;
y = 0;
Bdsp =
StreamPlot[
{Bdcart[x, y, z, m].{1, 0, 0},
Bdcart[x, y, z, m].{0, 0, 1}},
{x, 0, 2}, {z, -2, 2},
StreamStyle -> Orange , PlotRange -> {{-2, 2}, {-2, 2}}]


This produces the following image: I want to reflect it such that it will appear from -2 to 0.

Yes, I know that in this case I can just plot it from -2 to 0, but for my real case, it will not work. I also cannot plot StreamPlot[BDcart[-x,...],{x,0,-2}] in my real case. I really need to reflect the StreamPlot object and not do mathematical manipulations on it.

I've looked at this question, but I wasn't able to reproduce the behavior for a StreamPlot object.

• Welcome to Mathematica.SE! I suggest the following: 1) As you receive help, try to give it too, by answering questions in your area of expertise. 2) Take the tour! 3) When you see good questions and answers, vote them up by clicking the gray triangles, because the credibility of the system is based on the reputation gained by users sharing their knowledge. Also, please remember to accept the answer, if any, that solves your problem, by clicking the checkmark sign! – Michael E2 Nov 19 '19 at 13:41

Bdsp /. Arrow[p_] :> {Arrow[p], Arrow[p.DiagonalMatrix[{-1, 1}]]} • @Yomach, if you just want the reflected part, then drop the Arrow[p]: Bdsp /. Arrow[p_] :> {Arrow[p.DiagonalMatrix[{-1, 1}]]}. – Michael E2 Nov 19 '19 at 13:46
• I'd do it slightly differently: cplot /. a_?(MatrixQ[#, DeveloperMachineRealQ] &) :> a.DiagonalMatrix[{-1, 1}]. A similar approach to the above answer would be Normal[cplot] /. (h : Polygon | Line)[p_] :> h[p.DiagonalMatrix[{-1, 1}]] but the edges of the mesh show up with Normal[cplot] when I do it. To see the original and the reflection together, use something like Show[cplot, cplot /. a_?(MatrixQ[#, DeveloperMachineRealQ] &) :> a.DiagonalMatrix[{-1, 1}], PlotRange -> All ] – Michael E2 Nov 20 '19 at 13:11
• The Normal[cplot] can be fixed with the trick from this answer: Normal[cplot] /. {EdgeForm[], r_?(MemberQ[{RGBColor, Hue, CMYKColor, GrayLevel}, Head[#]] &), i___} :> {EdgeForm[r], r, i} – Michael E2 Nov 20 '19 at 13:13