Probleme mit Plotlegend
Ich mache ein 3D-Diagramm der Funktion En1 und schreibe ihre Farbe der folgenden sz1-Funktion zu, die Werte von -1 bis 1 enthält.
En1[δ_, g1_, g2_, k_] := 1/2(-I g1 + I g2 -Sqrt[-(g1 + g2 - 2 k + I δ) (g1 + g2 + 2 k + Iδ)] + δ)
vec1[δ_, g1_, g2_,k_] := {{-((I g1 + I g2 + Sqrt[-(g1 + g2 - 2 k + I δ) (g1 + g2 + 2 k + I δ)] - δ)/1), 2 k}}
vec1d[δ_, g1_, g2_,k_] := {{(I g1 + I g2 - Sqrt[-(g1 + g2 - 2 k - I δ) (g1 + g2 + 2 k - I δ)] + δ)/1, 2 k}}
σz = PauliMatrix[3];
σ0 = IdentityMatrix[2];
sz1[δ_, g1_, g2_, k_] := Flatten[vec1d[δ, g1, g2, k]. σz . Transpose[vec1[δ, g1, g2, k]]][[1]]/Flatten[vec1d[δ, g1, g2, k].Transpose[vec1[δ, g1, g2, k]]][[1]]
g1 = 1; g2 = 1;
Plot3D[
{Re[En1[δ, g1, g2, k]]},
{δ, -2, 2}, {k, 0, 2},
ColorFunction -> Function[{δ, k, z}, ColorData["TemperatureMap"][sz1[δ, g1, g2, k]]],
ColorFunctionScaling -> False,
PlotLegends -> BarLegend[{ColorData["TemperatureMap"], {-1, 1}}],
BoxRatios -> {1, 1, 1}
]

Wie wir sehen können, reagiert die Farbe auf die Funktion sz1
. Es gibt jedoch ein Problem mit meiner Legende, da der Farbverlauf nicht linear zu sein scheint. Gibt es eine Möglichkeit, die Legendenfarbe so festzulegen, dass sie linear von -1 bis 1 variiert?
Wenn wir planen sz1
, sehen wir, dass es in Bezug auf die seltsam ist$\delta$ für ein festes k, dh
Plot3D[{sz1[δ, g1, g2, k]}, {δ, -2, 2}, {k, 0, 2}, AxesLabel -> {"δ", "k"}]

Die Farbe des 3D-Diagramms von Re[En1]
ist jedoch in Bezug auf die Farbe nicht ungerade. Sehen Sie einen Grund dafür?
Antworten
Sie können die Farbfunktion in der Legende explizit neu skalieren:
BarLegend[{ColorData["TemperatureMap"][Rescale[#, {-1, 1}]] &, {-1, 1}}]
Ohne dies scheint die Legende den Standardbereich 0 bis 1 für die Farbfunktion zu verwenden. Werte unter Null werden also auf die Farbe abgeschnitten, die Null entspricht.
Um Ihre überarbeitete Frage zu beantworten, können Sie auch die Farbfunktion im Diagramm neu skalieren:
ColorFunction -> Function[{\[Delta], k, z},
ColorData["TemperatureMap"][Rescale[sz1[\[Delta], g1, g2, k], {-1, 1}]]
]
Einstellen von ViewPoint -> Oben, um die Farbabweichung deutlicher darzustellen:

ps, es gibt einen Tippfehler in Ihrer Definition von En1: Im letzten Faktor, denke ich, beabsichtigen Sie, ein Leerzeichen zwischen I und Delta zu haben.