I want to add an icon to a custom button in a matplotlib figure toolbar. How can I do that? So far, I have the following code:
import matplotlib matplotlib.rcParams["toolbar"] = "toolmanager" import matplotlib.pyplot as plt from matplotlib.backend_tools import ToolToggleBase class NewTool(ToolToggleBase): ...[tool code] fig = plt.figure() ax = fig.add_subplot(111) ax.plot([1, 2, 3], label="legend") ax.legend() fig.canvas.manager.toolmanager.add_tool("newtool", NewTool) fig.canvas.manager.toolbar.add_tool(toolmanager.get_tool("newtool"), "toolgroup") fig.show()
For now, the only thing that it does is adding a new button (which do what I want) but the icon is only the tool’s name i.e.: “newtool”. How can I change this for a custom icon like a png image?
Advertisement
Answer
The tool can have an attribute image
, which denotes the path to a png image.
import matplotlib matplotlib.rcParams["toolbar"] = "toolmanager" import matplotlib.pyplot as plt from matplotlib.backend_tools import ToolBase class NewTool(ToolBase): image = r"C:pathtohiker.png" fig = plt.figure() ax = fig.add_subplot(111) ax.plot([1, 2, 3], label="legend") ax.legend() tm = fig.canvas.manager.toolmanager tm.add_tool("newtool", NewTool) fig.canvas.manager.toolbar.add_tool(tm.get_tool("newtool"), "toolgroup") plt.show()