Contrôlez la longueur de l'unité d'affichage de `PlotRange`

Dec 30 2020

Si j'ai un exemple de données tracées telles que:

ListPlot[{{-20, 2}, {-10, 1}, {10, 0.001}, {20, 0.0000001}, {80, 0.000000001}}, PlotRange -> {{-20, 80}, All}] 

Ce qui donne:

Comment puis-je utiliser PlotRangepour afficher l'axe des x toutes les 10 unités plutôt que toutes les 20 unités comme c'est le cas par défaut?

Réponses

3 MarcoB Dec 30 2020 at 04:18

Ici, j'utilise la Charting`ScaledTicks fonction non documentée :

ListPlot[
 {{-20, 2}, {-10, 1}, {10, 0.001}, {20, 0.0000001}, {80, 0.000000001}},
 PlotRange -> {{-20, 80}, All},
 Ticks -> {
    Charting`ScaledTicks[{Identity, Identity}][-20, 80, {10, 2}], 
    Automatic}
]

Ce que je sais de cette fonction, je l'ai surtout appris dans les commentaires de cette réponse . En bref:

Charting`ScaledTicks[{scalingFunction, inverseScalingFunction}][min, max, divisions]

divisionspeut être un nombre, ou {maximum number of major ticks, number of divisions between each pair of major ticks}donc la spécification que j'ai utilisée ci-dessus demande des graduations majeures étiquetées toutes les 10 unités, avec une graduation mineure entre chaque graduation majeure (c'est-à-dire deux divisions entre chaque graduation majeure). Notez que parfois le comportement des divisions est décalé; Je suppose qu'il utilise FindDivisionsou similaire dans les coulisses, qui tente toujours de trouver des divisions «jolies» / «bonnes» selon une heuristique.