Управление длиной единицы отображения `PlotRange`

Dec 30 2020

Если у меня есть пример нанесенных данных, таких как:

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

Что на графике дает:

Как я могу использовать PlotRangeдля отображения оси x каждые 10 единиц, а не каждые 20 единиц, как по умолчанию?

Ответы

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 единиц, с одной второстепенной отметкой между каждой крупной отметкой (т. е. двумя делениями между каждой основной отметкой). Обратите внимание, что иногда деления ведут себя необычно; Я предполагаю, что он использует FindDivisionsили что-то подобное за кулисами, который всегда пытается найти «хорошие» / «хорошие» подразделения согласно эвристике.