首页 > 解决方案 > 如何在 matplotlib 配置文件中定义次要刻度的数量

问题描述

使用一个Locator()可以控制 matplotlib 轴上的次要或主要刻度的数量。

例如 :

plt.gca().yaxis.set_minor_locator(plt.MultipleLocator(1))

但是上面的行取决于您正在绘制的数据。

我想知道是否有办法从 matplotlib 样式文件(例如matplotlibrchttps://matplotlib.org/users/customizing.html))更改次要刻度的数量。例如,您可以通过以下方式管理次要刻度样式:

xtick.minor.visible : True
xtick.minor.width   : 2
xtick.minor.size    : 5

但我不知道如何处理次要刻度的数量。

标签: pythonmatplotlib

解决方案


刻度数并不是真正的“样式”属性。因此,您目前别无选择为此使用 rc 文件。

至于默认设置的来源,这是由 决定的AutoMinorLocator,如果没有给出其他自定义定位器并且打开了次要刻度,则使用它。

matplotlib.ticker.AutoMinorLocator(n=None)

根据主要刻度的位置动态查找次要刻度位置。刻度必须是线性的,主要刻度线间隔均匀。

n是主要刻度之间间隔的细分数;例如,n=2 将在主要刻度之间放置一个次要刻度。

如果n省略或无,它将被设置为 5 或 4。

这为以下解决方法留下了空间。您可以使用猴子补丁AutoMinorLocator来使用与平时不同的默认值。例如,有 23 个次要垃圾箱,

# use these lines on top of your matplotlib script
import matplotlib.ticker
class MyLocator(matplotlib.ticker.AutoMinorLocator):
    def __init__(self, n=23):
        super().__init__(n=n)
matplotlib.ticker.AutoMinorLocator = MyLocator        
 

# Now use matplotlib as usual.       
import matplotlib.pyplot as plt
plt.rcParams["xtick.minor.visible"] =  True

plt.plot([1,2])
plt.show()

推荐阅读