ContourPlot - ColorFunctionScaling n'aide pas à obtenir ColorFunction correctement

Aug 30 2020

J'ai un ContourPlot où chaque contour doit être affiché avec une couleur différente

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

mais j'obtiens cette sortie

il semble que le ColorFunctionne fonctionne pas. Alors j'ai essayé d'ajouterColorFunctionScaling->False

ce qui me donne cette sortie

Comme vous pouvez le voir, il y a une différence mais pas ce à quoi je m'attendais. J'ai essayé de l'utiliser ColorFunctionScaling->Trueaussi ce qui me donne le même rendement que j'avais au début.

Réponses

6 tad Aug 30 2020 at 18:07

Je pense que le problème vient des grandes valeurs proches de la singularité de votre fonction en haut à gauche. Le choix par défaut des couleurs de contour semble utiliser beaucoup plus de la plage qu'il ne le montre par défaut dans le graphique.

Une solution consiste à spécifier la plage dans la fonction de couleur.

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