Steuern Sie die Länge der Anzeigeeinheit von `PlotRange`

Dec 30 2020

Wenn ich ein Beispiel habe, zeichnete ich Daten wie:

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

Welche Darstellung ergibt:

Wie kann ich PlotRangedie x-Achse alle 10 Einheiten anstatt standardmäßig alle 20 Einheiten anzeigen?

Antworten

3 MarcoB Dec 30 2020 at 04:18

Hier benutze ich die undokumentierte Charting`ScaledTicks Funktion:

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

Was ich über diese Funktion weiß, habe ich hauptsächlich in den Kommentaren zu dieser Antwort gelernt . Zusamenfassend:

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

wo divisionskann eine Zahl sein, oder {maximum number of major ticks, number of divisions between each pair of major ticks}, so fragt die Spezifikation, die ich oben verwendet habe, alle 10 Einheiten nach markierten Hauptstrichen, wobei zwischen jedem Hauptstrich ein Nebenstrich liegt (dh zwei Unterteilungen zwischen jedem Hauptstrich). Beachten Sie, dass das Verhalten von Abteilungen manchmal eigenartig ist. Ich gehe davon aus, dass es FindDivisionshinter den Kulissen oder ähnliches verwendet , was immer versucht, "hübsche" / "gute" Unterteilungen gemäß einer Heuristik zu finden.