2
$\begingroup$

Consider the following code:

\[Psi][{n_, l_, m_}, {r_, \[Theta]_, \[Phi]_}] :=
 With[{\[Rho] = 2 r/(n a)}, 
Sqrt[(2/(n a))^3 (n - l - 1)!/(2 n (n + l)!)] Exp[-\[Rho]/
  2] \[Rho]^
l LaguerreL[n - l - 1, 2 l + 1, \[Rho]] SphericalHarmonicY[l, 
 m, \[Theta], \[Phi]]];
factor[n_] := 15 n;
n = 3; l = 1; m = 0; a = 1;
For[n = 1, n < 3, n++,
For[l = 0, l < n, l++,
For[m = 0, m <= l, m++,
g = DensityPlot[
 4 \[Pi] (x^2 + y^2 + 
     z^2) (Abs@\[Psi][{n, l, m}, {Sqrt[x^2 + y^2 + z^2], 
        ArcTan[z, Sqrt[x^2 + y^2]],
        ArcTan[x, y]}])^2 /. {y -> 0}, {x, -factor[n] a, 
  factor[n] a},
  {z, -factor[n] a, factor[n] a}, Mesh -> False, Frame -> False,
  PlotPoints -> 200, ColorFunctionScaling -> True, 
  ColorFunction -> "SunsetColors",
  PlotRange -> All, PlotLabel ->
  Style[
   "(" <> ToString[n] <> "," <> ToString[l] <> "," <> 
    ToString[m] <> ")",
   FontSize -> 24]];
 Print[g];
]
]
]

If I change PlotRange->All to PlotRange->Automatic, I'll get my favorite size, but the quality of output is not as well as that with "All". But the size of plot is too small with the first one. Is there any way to take an output with the size of "Automatic" but with the quality of "All"?

$\endgroup$
7
  • 1
    $\begingroup$ do you get what you need if you use PlotRange -> {## & @@ ({#, #} &@{-#, #} &@factor[n] a/2), All}? $\endgroup$
    – kglr
    Nov 19, 2018 at 2:53
  • $\begingroup$ Yes, it worked. @kglr $\endgroup$
    – Saeid
    Nov 19, 2018 at 2:57
  • $\begingroup$ Can you explain it? I'd like to know how your command worked. @kglr $\endgroup$
    – Saeid
    Nov 19, 2018 at 3:08
  • $\begingroup$ Saeid, I just used explicit ranges for horizontal and vertical coordinates. See PlotRange >> Details on how Automatic, All, Full etc work. $\endgroup$
    – kglr
    Nov 19, 2018 at 4:12
  • $\begingroup$ @kglr I mean those symbols like ## and @ $\endgroup$
    – Saeid
    Nov 19, 2018 at 5:00

1 Answer 1

2
$\begingroup$
indices = Flatten[Table[{n, l, m}, {n, 1, 2}, {l, 0, n - 1}, {m, 0, l}], 2]; 
Row @ Table[DensityPlot[4 π (x^2 + y^2 + z^2) (Abs@ψ[i, 
 {Sqrt[x^2 + y^2 + z^2], ArcTan[z, Sqrt[x^2 + y^2]], ArcTan[x, y]}])^2 /. {y -> 0}, 
   {x, -factor[i[[1]]] a, factor[i[[1]]] a}, {z, -factor[i[[1]]] a, factor[i[[1]]] a}, 
   Mesh -> False, Frame -> False, PlotPoints -> 200, 
   ColorFunctionScaling -> True, ColorFunction -> "SunsetColors", 
   PlotRange -> {{-#, #} &@(factor[i[[1]]] a/2), {-#, #} &@(factor[i[[1]]] a/2), All}, 
   ImageSize -> 250, 
   PlotLabel -> Style["(" <> ToString[i[[1]]] <> "," <> ToString[i[[2]]] <> "," <>
       ToString[i[[3]]] <> ")", FontSize -> 24]], {i, indices}]

enter image description here

Alternatively, you can use PlotRange -> All and use a/2 instead of a in setting x and z ranges:

Row@Table[DensityPlot[4 π (x^2 + y^2 + z^2) (Abs@ψ[i, 
  {Sqrt[x^2 + y^2 + z^2], ArcTan[z, Sqrt[x^2 + y^2]], ArcTan[x, y]}])^2 /. {y -> 0}, 
    {x, -factor[i[[1]]] a/2, factor[i[[1]]] a/2},
    {z, -factor[i[[1]]] a/2, factor[i[[1]]] a/2},
    Mesh -> False, Frame -> False, PlotPoints -> 200, 
    ColorFunctionScaling -> True, ColorFunction -> "SunsetColors", 
    PlotRange -> All, ImageSize -> 250, 
    PlotLabel -> Style["(" <> ToString[i[[1]]] <> "," <> ToString[i[[2]]] <> "," <>
       ToString[i[[3]]] <> ")", FontSize -> 24]], {i, indices}]

same picture

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.