设置导航工具栏的顶层轴并选择事件

时间:2015-07-27 15:20:01

标签: python python-2.7 matplotlib plot

如果我有一个共享的y轴和两个x轴,我该如何指定我想要使用哪个轴?在我的情况下,我希望工具栏中显示默认轴,例如创建的子图,并且不显示通过twiny()生成的第二个轴。这是一个可以运行以查看我的问题的最小示例:

import matplotlib
matplotlib.use('TkAgg')

from numpy import arange, sin, pi
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
from matplotlib.backend_bases import key_press_handler
from matplotlib.figure import Figure
import Tkinter as Tk

root = Tk.Tk()
root.wm_title("Embedding in TK")


f = Figure(figsize=(5,4), dpi=100)
a = f.add_subplot(111)
t = arange(0.0,3.0,0.01)
s = sin(2*pi*t)

a.plot(t,s)

y = a.twiny()

# a tk.DrawingArea
canvas = FigureCanvasTkAgg(f, master=root)
canvas.show()
canvas.get_tk_widget().pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)

toolbar = NavigationToolbar2TkAgg( canvas, root )
toolbar.update()
canvas._tkcanvas.pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)

Tk.mainloop()

正如您所看到的那样:enter image description here

当我希望程序使用其他时,右下方的坐标系使用twiny()轴。如何才能做到这一点?

检查docs的twiny给出了注释

  

对于那些在使用twiny时挑选艺术家的人,挑选活动是   只是呼吁最顶层的艺术家

我意识到我需要让这些轴成为最顶端的轴,我该怎么做?

1 个答案:

答案 0 :(得分:1)

这有点棘手。我认为你只需要设置活动轴,使用f.sca(a),但这似乎没有帮助,即,哪个轴是活动的并不重要。你要做的是设置两个子图的zorder,并给'a'一个比'y'更高的zorder。因此,如果在创建两个轴对象后在任何地方添加这两行代码,我认为它应该可以工作:

a.set_zorder(1)
y.set_zorder(0)