小编ale*_*dro的帖子

RectangleSelector在缩放时消失

当我运行示例并创建矩形选区时,如果我缩放或移动选区周围的绘图窗口消失,直到我取消选择移动或缩放工具并再次单击绘图窗口.

%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被修改,例如采用了滑盖的小部件,选定区域中消失,直到我再次对剧情点击.

如果RectangleSelectoruseblit=False@ImportanceOfBeingErnest建议初始化所有这些问题就会消失,但正如他们所说,这不是一个非常高效的解决方案.

python matplotlib python-2.7 matplotlib-widget

10
推荐指数
2
解决办法
858
查看次数

PyCharm 并不总是绘制新的图形

我安装了最新版本的 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)

python matplotlib pycharm

5
推荐指数
1
解决办法
1219
查看次数

列出加载的 IPython 扩展

有没有办法获取当前加载的 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 的行。

无论如何,这个方案一般都行不通。如果脚本调用runfileload_ext,都将在历史上被视为会是这样的runfile('script_name.py', wdir='path/to/wdir')

python ipython

5
推荐指数
1
解决办法
87
查看次数