当我运行此示例并创建矩形选区时,如果我缩放或移动选区周围的绘图窗口消失,直到我取消选择移动或缩放工具并再次单击绘图窗口.
我%matplotlib tkinter在IPython笔记本中使用.
我试图挂钩窗口缩放时发生的极限变化并将矩形选择设置为可见:
def persist_rect(newlims):
rs = toggle_selector.RS
print(rs.visible)
rs.set_visible(True)
rs.update()
current_ax.callbacks.connect('xlim_changed', persist_rect)
current_ax.callbacks.connect('ylim_changed', persist_rect)
Run Code Online (Sandbox Code Playgroud)
但这似乎没有做任何事情.它甚至没有toggle_selector.RS.visible被设置为假.
我也一直在寻找RectangleSelector的源代码,但我还没有看到任何有启发性的东西.
我还发现,当我使用修改所选区域的范围时,我遇到了这个问题RectangleSelector.extents = new_extents.当.extents被修改,例如采用了滑盖的小部件,选定区域中消失,直到我再次对剧情点击.
如果RectangleSelector用useblit=False@ImportanceOfBeingErnest建议初始化所有这些问题就会消失,但正如他们所说,这不是一个非常高效的解决方案.
我安装了最新版本的 PyCharm(2020.2.2 Pro)。我已将 PyCharm 配置为绘制到 SciView 中。
当我运行以下代码 5 次时,它仅生成两次新图。所有其他时间它都会覆盖前一个数字。
import matplotlib.pyplot as plt
import numpy as np
plt.figure()
plt.plot(np.sin(np.linspace(0,5,100)))
plt.show()
Run Code Online (Sandbox Code Playgroud)
当人们想要比较多个图的结果时,这种行为非常令人讨厌。
我的 PyCharm 还配置为在每次运行文件时启动一个新的 python 实例。如果我省略该行,我也会看到相同的行为plt.figure()。
此外,新的绘图不会以任何可重复的方式出现。就像我运行此代码 3 次一样,第一次运行时我只得到一个图,但在第四次运行时我得到第二个图。
如果我通过Settings>Python Scientific>Show plots in tool window. 每次运行代码时我都会生成一个新的绘图。
当我重新运行代码时被替换的图也是随机选择的。如果我有 4 个图,其中一个被替换,它通常是带有底部缩略图的图,但有时列表中的另一个随机图会被替换。
如果我设置,Settings>Build, Execution, Deployment>Console>Use existing console for "Run with Python Console"我每次都会得到一个新的数字。这很好,但每次运行都需要一个新的控制台,因为我经常修改由生成绘图的代码导入的库。如果我没有获得新的控制台,则导入将被忽略,并且库的现有版本保留在解释器内存中。我想我可以通过%autoreload在 iPython 中设置来解决这个问题,但这有点麻烦......
如果您遇到此问题,请尝试设置Use existing console for "Run with Python Console"并将以下内容放入您正在运行的 python 文件中
from IPython import get_ipython
ipython = get_ipython()
if …Run Code Online (Sandbox Code Playgroud) 有没有办法获取当前加载的 IPython 扩展的列表?
例如,如果我使用%load_ext autoreload或运行以下命令将扩展 autoreload 加载到 IPython 中:
from IPython import get_ipython
ipython = get_ipython()
ipython.magic("%load_ext autoreload")
Run Code Online (Sandbox Code Playgroud)
有什么办法可以证明我已经加载了这个扩展?
我已经通过使用类似的东西直接访问输入历史来尝试这个
from IPython import get_ipython
ipython = get_ipython()
hist = ipython.extract_input_lines("0:100")
Run Code Online (Sandbox Code Playgroud)
但事实证明,IPython 不会在此处或在可通过In和访问的历史列表中存储带有魔法函数的输入_ih。似乎只保存了执行普通 Python 的行。
无论如何,这个方案一般都行不通。如果脚本调用runfile跑load_ext,都将在历史上被视为会是这样的runfile('script_name.py', wdir='path/to/wdir')。