ควบคุมความยาวหน่วยแสดงผลของ "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หรือคล้ายกันเบื้องหลังซึ่งมักจะพยายามหาหน่วยงานที่ "สวย" / "ดี" ตามฮิวริสติก