matplotlib 设置 y 轴刻度

1 投票
1 回答
1320 浏览
提问于 2025-04-19 17:59

我想设置y轴的刻度,左边的刻度朝外,右边的刻度朝内。

这里有一段代码,可能能帮助你理解我想做的事情。

import wx
from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg
from matplotlib.figure import Figure
from matplotlib.axes import Axes

class Frame(wx.Frame):
    def __init__(self):
        # initialize
        wx.Frame.__init__(self, None)
        # create main sizer
        mainSizer = wx.BoxSizer(wx.VERTICAL)
        # create figure, canvas and matplotlib toolbar
        self.figure = Figure(figsize=(4.5,4), dpi=None)
        self.canvas = FigureCanvasWxAgg( self, -1, self.figure )
        # add canvas to sizer
        mainSizer.Add(self.canvas, proportion=1, flag=wx.ALL|wx.EXPAND)
        self.SetSizer(mainSizer)
        mainSizer.Fit(self)
        self.Show(True)  

app = wx.App(0)        
frame = Frame()
axes = frame.figure.add_axes((0.1,0.1,0.8,0.8))

axes.tick_params(reset=True)
axes.tick_params(axis='y',which="major", direction="in", 
                 left=True,reset=False, labelleft=True)
axes.tick_params(axis='y',which="major", direction="out", 
                 right=True,reset=False, labelright=True)

frame.canvas.draw()

app.MainLoop()

在这里输入图片描述

通常我希望左边的刻度在轴内,而右边的刻度在轴外。

1 个回答

0

这可能有点复杂,其他更专业的人可能能深入界面找到一些东西。与此同时,一个选择是使用双轴,这样你就可以设置右侧刻度的属性,而不用担心会影响左侧的刻度。例如,下面这个(我提取了你代码中相关的部分):

import matplotlib.pyplot as plt

fig = plt.figure()
axes = fig.add_axes((0.1,0.1,0.8,0.8))

axes.tick_params(axis='y',which="major", direction="in", 
                 left=True,reset=False, labelleft=True)

axes2 = axes.twinx()
axes2.tick_params(axis='y', which='major', direction='out')

plt.show()

不过,如果你总是这样做,感觉就像是个小技巧,所以可能不是最好的选择……

撰写回答