我正在尝试使用Qutip函数bloch()在bloch球体上绘制实时数据。
到目前为止,当我在那里有一个b.show()时,代码总是中断。
我在网上找到了很多针对类似问题的解决方案,但是大多数都使用matplotlib.draw()这样的直接matplotlib命令,这些命令似乎不适用于bloch类。 然后,还有其他解决方案可以使用例如Tk或GTKagg(例如https://stackoverflow.com/a/15742183/3276735或real-time plotting in while loop with matplotlib)
请问有人可以帮我解决bloch课程中同样的问题吗?
编辑: 这是一个最小的例子:
基本上,我想一次一个点更新我的情节,最好是循环。我的目标是在必须从文件中读取的图中显示实时数据。
import qutip as qt
import numpy as np
b = qt.Bloch()
theta = np.arange(0,np.pi,0.1)
for ii in range(len(theta)):
b.add_points([np.sin(theta[ii]),0,np.cos(theta[ii])])
b.show()
答案 0 :(得分:1)
我认为你打破了你的阴谋,因为你正在为每一点呼唤节目。尝试在循环外调用show(最后)。
java.nio.file.OpenOption[]
编辑: 动画情节
将import qutip as qt
import numpy as np
b = qt.Bloch()
theta = np.arange(0,np.pi,0.1)
for ii in range(len(theta)):
b.add_points([np.sin(theta[ii]),0,np.cos(theta[ii])])
b.show() # Changed here
视为将绘图调用到视图的绝对命令。它不是绘图命令(或重绘)。如果你确实想要每隔一段时间显示一个图像,那就是#34;几秒钟左右,你需要show
之前再次调用它。你可以试试这个:
clear
,我目前的发行版中没有QuTip,所以我无法对其进行测试,但我认为它基于matplotlib。 我最好的建议但是您可以在QuTiP文档中使用动画制作。遵循这个食谱:
import qutip as qt
import numpy as np
b = qt.Bloch()
theta = np.arange(0,np.pi,0.1)
for ii in range(len(theta)):
b.clear()
b.add_points([np.sin(theta[ii]),0,np.cos(theta[ii])])
b.show()
# wait time step and load new value from file.
,您应该能够修改animate函数以执行所需的所有操作。