Plotlegend ile ilgili sorunlar

Dec 04 2020

En1 fonksiyonunun 3 boyutlu grafiğini yapıyorum ve rengini -1 ile 1 arasında değişen değerler içeren aşağıdaki sz1 fonksiyonuna atfediyorum.

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}
]

Gördüğümüz gibi, renk işleve yanıt veriyor sz1. Ancak, renk gradyanı doğrusal görünmediği için efsanemde bir sorun var. Açıklama renginin -1'den 1'e doğrusal olarak değişmesini sağlamanın bir yolu var mı?

Eğer komplo kurarsak sz1, bunun tuhaf olduğunu görürüz.$\delta$ sabit bir k için, yani,

Plot3D[{sz1[δ, g1, g2, k]}, {δ, -2, 2}, {k, 0, 2}, AxesLabel -> {"δ", "k"}]

Bununla birlikte, 3B grafiğin rengi, renge göre Re[En1]tuhaf değildir. Bunun için herhangi bir sebep görüyor musunuz?

Yanıtlar

3 tad Dec 04 2020 at 11:45

Açıklamada renk işlevini açıkça yeniden ölçeklendirebilirsiniz:

BarLegend[{ColorData["TemperatureMap"][Rescale[#, {-1, 1}]] &, {-1, 1}}]

Bu olmadan, efsanenin renk işlevi için varsayılan 0 ila 1 aralığını kullandığı görülür. Böylece sıfırın altındaki değerler, sıfıra karşılık gelen renge kırpılır.

Gözden geçirilmiş sorunuzu ele almak için, grafikteki renk işlevini de yeniden ölçeklendirebilirsiniz:

ColorFunction -> Function[{\[Delta], k, z},
   ColorData["TemperatureMap"][Rescale[sz1[\[Delta], g1, g2, k], {-1, 1}]]
] 

ViewPoint -> Top'u renk çeşitlemesini daha net gösterecek şekilde ayarlamak:

ps, En1 tanımınızda bir yazım hatası var: son faktörde I ve delta arasında bir boşluk olmasını düşündüğünüzü düşünüyorum.