ContourPlot - ColorFunctionScaling non aiuta a ottenere ColorFunction correttamente

Aug 30 2020

Ho un ContourPlot in cui ogni contorno dovrebbe essere visualizzato con un colore diverso

ContourPlot[
 -((2500*Sqrt[13]*(x - 10000)*x^2*y)/(15625*x^4 - 13*(x - 10000)^2*y^2)),
 {x, 35, 100},
 {y, 1.4, 5.6},
 PlotLegends -> Automatic,
 Contours -> 20,
 ColorFunction -> "DarkRainbow"
]

ma ottengo questo output

sembra ColorFunctionche non funzioni. Quindi ho provato ad aggiungereColorFunctionScaling->False

che mi dà questa uscita

Come puoi vedere c'è una differenza ma non quella che mi aspettavo. Ho provato a usare ColorFunctionScaling->Trueanche il che mi dà lo stesso output che avevo all'inizio.

Risposte

6 tad Aug 30 2020 at 18:07

Penso che il problema derivi dai valori grandi vicino alla singolarità nella tua funzione in alto a sinistra. La scelta predefinita dei colori dei contorni sembra utilizzare molto di più dell'intervallo di quanto mostrato nel grafico per impostazione predefinita.

Una soluzione consiste nello specificare l'intervallo nella funzione colore.

With[{min = 0, max = 20},
   ContourPlot[-((2500*Sqrt[13]*(x - 10000)*x^2*y)/(15625*x^4 - 
   13*(x - 10000)^2*y^2)), {x, 35, 100}, {y, 1.4, 5.6}, 
   PlotLegends -> Automatic, Contours -> 20, 
   PlotRange -> {min, max}, 
   ColorFunctionScaling -> False, 
   ColorFunction -> (ColorData[{"DarkRainbow", {min, max}}])
  ]
]