能否交互式地编辑matplotlib绘图?

4

我不确定这是否是可以在SE中提出的合适问题。 我想知道是否可以交互式地编辑matplotlib图。即,

#  plot
plt.plot(x, y[1])
plt.plot(x, -1.0*y[2])
plt.show()

将会打开一个带有绘图的tk屏幕。现在,假设我想要修改linewidth或输入x/y label,是否可以交互式地进行操作(可以在屏幕上使用鼠标,例如xmgrace,或者从类似于gnuplot的命令提示符中进行)?

4个回答

6

你可以使用pylustrator进行简单的交互式编辑

pip install pylustrator

欢迎来到 Stack Overflow。这是一个4年前的问题,并已解决(不是由贡献者解决的,因此没有加分)。 - BaRud
我也在寻找一种交互式的方式来编辑 matplot 图表,即使这个答案已经是三年前的了,它实际上解决了我的问题。 - toto

1
不,通常情况下无法实现您想要的(使用鼠标动态交互 matplotlib)。您看到的是在“画布”上呈现的图形,但它不包括像 xmgrace、Origin 等软件中那样的图形用户界面(GUI)。
话虽如此,如果您希望继续追求,有许多可能的选择,包括:
- 修改 matplotlib 源代码以包含 GUI。 - 像 YuppieNetworking 在这里提供的答案一样,使用按钮进行操作: Change dynamically the contents of a matplotlib plot
但更快捷和方便的方法可能是使用其他绘图软件,其中某些人已经为您设计了一个体面的用户界面。
或者,使用 iPython 笔记本快速修改您的绘图脚本也足够好。

1

我认为您想要做的一种方法是使用ipython。ipython是一个交互式的Python环境,它随许多Python发行版一起提供。

以下是一个快速示例:

在cmd中键入>>> ipython,这将加载ipython终端。在ipython中键入:

import matplotlib.pyplot as plt
fig, ax = plt.subplots(1, 1)
ax.plot([1, 2, 3, 4, 5], [1, 2, 3, 4, 5], 'r-')
fig.show()

现在您有一个图形,同时ipython终端是“空闲”的。这意味着您可以对图形执行命令,例如ax.set_xlabel('XLABEL')ax.set_yticks([0, 5])。要在屏幕上显示它,您需要重新绘制画布,方法是调用fig.canvas.draw()
请注意,在ipython中,您可以使用所有对象的所有函数进行完整的标签补全!键入fig.get_然后按tab键,即可获得以fig.get_开头的所有函数的完整列表,这非常有帮助!
还要注意,您可以在ipython中运行Python脚本,使用ipython-cmd中的run SCRIPT.py,同时可以访问在脚本中定义的所有变量。然后可以像上面那样使用它们。
希望这有所帮助!

0

在qt4agg matplotlib后端中有一个导航工具栏,您可以轻松地添加它。虽然不多,但至少具有很好的可扩展性...

![enter image description here

这不是一个可工作的代码,只是一些片段:

from matplotlib.backends.backend_qt4agg import FigureCanvas
from matplotlib.backends.backend_qt4agg import NavigationToolbar2QT as NavigationToolbar
from matplotlib.figure import Figure
from matplotlib.backends.qt_compat import QtCore, QtWidgets, is_pyqt5

self.figure = Figure(figsize=(5, 3))
self.canvas = FigureCanvas(self.figure)
self.addToolBar(QtCore.Qt.BottomToolBarArea,
                NavigationToolbar(self.canvas, self))

Self是从QtGui.QMainWindow派生出来的窗口对象。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接