Controlla la lunghezza dell'unità di visualizzazione di "PlotRange"

Dec 30 2020

Se ho un esempio di dati tracciati come:

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

Quale tracciato dà:

Come posso utilizzare PlotRangeper visualizzare l'asse x ogni 10 unità anziché ogni 20 unità come è di default?

Risposte

3 MarcoB Dec 30 2020 at 04:18

Qui uso la Charting`ScaledTicks funzione non documentata :

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

Quello che so di questa funzione l'ho appreso principalmente nei commenti a questa risposta . In breve:

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

dove divisionspuò essere un numero, o {maximum number of major ticks, number of divisions between each pair of major ticks}, quindi la specifica che ho usato sopra richiede tacche maggiori etichettate ogni 10 unità, con una tacca minore tra ciascuna tacca maggiore (cioè, due divisioni tra ciascuna tacca maggiore). Notare che a volte il comportamento delle divisioni è bizzarro; Presumo che usi FindDivisionso simili dietro le quinte, che cerca sempre di trovare divisioni "belle" / "buone" secondo un'euristica.