0
我正在学习如何使用matplotlib,现在我有一个问题。当我在“tkinter项目”中创建一个图并给它一个子图时,我使用NavigationToolbar2TkAgg创建一个工具栏。在出现的当前工具栏中,我想删除配置子图选项,但找不到这样做的方法。从NavigationToolbar2TkAgg中删除选项?
有没有办法做到这一点?
我正在学习如何使用matplotlib,现在我有一个问题。当我在“tkinter项目”中创建一个图并给它一个子图时,我使用NavigationToolbar2TkAgg创建一个工具栏。在出现的当前工具栏中,我想删除配置子图选项,但找不到这样做的方法。从NavigationToolbar2TkAgg中删除选项?
有没有办法做到这一点?
的解决方案是,在这个问题已作出原则:How to modify the navigation toolbar easily in a matplotlib figure window?
但它可能不是很明显如何使用它。所以我们可以使用CustomToolbar来调整here的代码。该工具栏toolitems
属性可以改变,以除去不需要的"Subplots"
按钮。
import numpy as np
import Tkinter as tk
import matplotlib as mpl
from matplotlib.patches import Rectangle
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
# custom toolbar with lorem ipsum text
class CustomToolbar(NavigationToolbar2TkAgg):
toolitems = filter(lambda x: x[0] != "Subplots", NavigationToolbar2TkAgg.toolitems)
class MyApp(object):
def __init__(self,root):
self.root = root
self._init_app()
# here we embed the a figure in the Tk GUI
def _init_app(self):
self.figure = mpl.figure.Figure()
self.ax = self.figure.add_subplot(111)
self.canvas = FigureCanvasTkAgg(self.figure,self.root)
self.toolbar = CustomToolbar(self.canvas,self.root)
self.toolbar.update()
self.plot_widget = self.canvas.get_tk_widget()
self.plot_widget.pack(side=tk.TOP, fill=tk.BOTH, expand=1)
self.toolbar.pack(side=tk.TOP, fill=tk.BOTH, expand=1)
self.canvas.show()
# plot something random
def plot(self):
self.ax.plot([1,3,2])
self.figure.canvas.draw()
def main():
root = tk.Tk()
app = MyApp(root)
app.plot()
root.mainloop()
if __name__ == "__main__":
main()
谢谢,它很好地工作 –