Masalah dengan Plotlegend
Saya membuat plot 3D dari fungsi En1 dan saya mengaitkan warnanya dengan fungsi sz1 di bawah ini, yang berisi nilai mulai dari -1 hingga 1.
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}
]

Seperti yang bisa kita lihat, warna merespons fungsinya sz1
. Namun, ada masalah dengan legenda saya karena gradien warna tampaknya tidak linier. Adakah cara untuk menerapkan warna legenda agar bervariasi secara linier dari -1 hingga 1?
Jika kita memplot sz1
kita melihat bahwa itu aneh sehubungan dengan$\delta$ untuk k tetap, yaitu
Plot3D[{sz1[δ, g1, g2, k]}, {δ, -2, 2}, {k, 0, 2}, AxesLabel -> {"δ", "k"}]

Namun, warna plot 3D Re[En1]
tidak aneh jika dibandingkan dengan warnanya. Apakah Anda melihat alasan untuk ini?
Jawaban
Anda dapat secara eksplisit mengubah skala fungsi warna dalam legenda:
BarLegend[{ColorData["TemperatureMap"][Rescale[#, {-1, 1}]] &, {-1, 1}}]
Tanpa itu, tampaknya legenda menggunakan rentang default 0 hingga 1 untuk fungsi warna. Jadi nilai di bawah nol akan dipotong ke warna yang sesuai dengan nol.
Untuk menjawab pertanyaan Anda yang telah direvisi, Anda juga dapat mengubah skala fungsi warna di plot:
ColorFunction -> Function[{\[Delta], k, z},
ColorData["TemperatureMap"][Rescale[sz1[\[Delta], g1, g2, k], {-1, 1}]]
]
Pengaturan ViewPoint -> Top untuk lebih jelas menunjukkan variasi warna yang diberikan:

ps, ada kesalahan ketik dalam definisi Anda tentang En1: pada faktor terakhir saya pikir Anda bermaksud untuk memberi spasi antara I dan delta.