`PlotRange`の表示単位の長さを制御します

Dec 30 2020

次のようなプロットされたデータの例がある場合:

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

プロットされたものは次のとおりです。

PlotRangeデフォルトの20単位ごとではなく、10単位ごとにx軸を表示するにはどうすればよいですか?

回答

3 MarcoB Dec 30 2020 at 04:18

ここでは、文書化されていないCharting`ScaledTicks 関数を使用します。

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

この関数について私が知っていることは、この回答へのコメントで主に学びました。要するに:

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

ここdivisionsで、は数値、またはである可能性がある{maximum number of major ticks, number of divisions between each pair of major ticks}ため、上記で使用した仕様では、10単位ごとにラベル付きのメジャーティックが必要であり、各メジャーティックの間に1つのマイナーティックがあります(つまり、各メジャーティックの間に2つの分割があります)。分割の動作が風変わりな場合があることに注意してください。FindDivisionsヒューリスティックに従って常に「きれいな」/「良い」区分を見つけようとする舞台裏で、または同様のものを使用していると思います。