Controlar la longitud de la unidad de visualización de "PlotRange"

Dec 30 2020

Si tengo un ejemplo de datos graficados como:

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

Lo que trazó da:

¿Cómo puedo usar PlotRangepara mostrar el eje x cada 10 unidades en lugar de cada 20 unidades como es por defecto?

Respuestas

3 MarcoB Dec 30 2020 at 04:18

Aquí uso la Charting`ScaledTicks función indocumentada :

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

Lo que sé sobre esta función lo he aprendido principalmente en los comentarios a esta respuesta . En breve:

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

donde divisionspuede haber un número, o {maximum number of major ticks, number of divisions between each pair of major ticks}, por lo que la especificación que utilicé anteriormente pide ticks principales etiquetados cada 10 unidades, con un tick menor entre cada uno de los principales (es decir, dos divisiones entre cada tick principal). Tenga en cuenta que a veces el comportamiento de las divisiones es peculiar; Supongo que utiliza FindDivisionso similar detrás de escena, que siempre intenta encontrar divisiones "bonitas" / "buenas" de acuerdo con una heurística.