我想交互式地可视化一些情节。现在有基于 Python 的可视化工具,可与 Jupyter notebook 或 .ipynb 文件一起使用。 当我在 pycharm IDE 中运行相同的程序时,它什么也没做:
import matplotlib.pyplot as plt
import numpy as np
from ipywidgets import interact, fixed
# from IPython.core.display import display
def display_center_effect(x, y, tx, point_list, xlim, ylim):
tx.SetCenter((x, y))
transformed_point_list = [tx.TransformPoint(p) for p in point_list]
plt.scatter(
list(np.array(transformed_point_list).T)[0],
list(np.array(transformed_point_list).T)[1],
marker="^",
color="red",
label="transformed points",
)
plt.scatter(
list(np.array(point_list).T)[0],
list(np.array(point_list).T)[1],
marker="o",
color="blue",
label="original points",
)
plt.xlim(xlim)
plt.ylim(ylim)
plt.legend(loc=(0.25, 1.01))
# plt.show()
# 2D square centered on (0,0)
points = [
np.array((-1.0, -1.0)),
np.array((-1.0, 1.0)),
np.array((1.0, 1.0)),
np.array((1.0, -1.0)),
]
# Scale by 2
similarity = sitk.Similarity2DTransform()
similarity.SetScale(2)
interact(
display_center_effect,
x=(-10, 10),
y=(-10, 10),
tx=fixed(similarity),
point_list=fixed(points),
xlim=fixed((-10, 10)),
ylim=fixed((-10, 10)),
)
此 MWE 运行但不显示任何绘图/图形。生成以下内容:
interactive(children=(IntSlider(value=0, description='x', max=10, min=-10), IntSlider(value=0, description='y', max=10, min=-10), Output()), _dom_classes=('widget-interact',))
我已经尝试实施
TKinter
IPython.core.display
等,但似乎没有任何效果。
不幸的是这是 JetBrains 产品中的一个错误。一种可能的解决方法是使用非“内联”的 backend,即为绘图打开一个新窗口。根据您的操作系统,其中之一可能能够渲染绘图,同时允许您从 PyCharm 中操作小部件。