Kontroluj długość jednostki wyświetlania „PlotRange”

Dec 30 2020

Jeśli mam przykładowe wykreślone dane takie jak:

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

Który wykreślony daje:

Jak mogę używać PlotRangedo wyświetlania osi X co 10 jednostek, a nie co 20 jednostek, jak jest to domyślnie?

Odpowiedzi

3 MarcoB Dec 30 2020 at 04:18

Tutaj używam nieudokumentowanej Charting`ScaledTicks funkcji:

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

To, co wiem o tej funkcji, najbardziej nauczyłem się w komentarzach do tej odpowiedzi . W skrócie:

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

gdzie divisionsmoże być liczba, lub {maximum number of major ticks, number of divisions between each pair of major ticks}, więc specyfikacja, której użyłem powyżej, wymaga oznaczonych dużych tików co 10 jednostek, z jednym małym tickiem pomiędzy każdą dużą (tj. dwoma działami między każdym dużym tickiem). Zauważ, że czasami zachowanie podziałów jest dziwaczne; Zakładam, że używa FindDivisionslub podobnych za kulisami, które zawsze starają się znaleźć „ładne” / „dobre” podziały zgodnie z heurystyką.