如果我有一个共享的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()
当我希望程序使用其他时,右下方的坐标系使用twiny()
轴。如何才能做到这一点?
检查docs的twiny给出了注释
对于那些在使用twiny时挑选艺术家的人,挑选活动是 只是呼吁最顶层的艺术家
我意识到我需要让这些轴成为最顶端的轴,我该怎么做?
答案 0 :(得分:1)
这有点棘手。我认为你只需要设置活动轴,使用f.sca(a),但这似乎没有帮助,即,哪个轴是活动的并不重要。你要做的是设置两个子图的zorder,并给'a'一个比'y'更高的zorder。因此,如果在创建两个轴对象后在任何地方添加这两行代码,我认为它应该可以工作:
a.set_zorder(1)
y.set_zorder(0)