bloch sph现场绘图

2024-06-28 18:48:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用Qutip的函数bloch()在bloch球体上绘制实时数据。在

到目前为止,当我有一个b.show()时,代码总是中断。在

我在网上找到了很多类似问题的解决方案,但大多数都使用了直接matplotlib命令,比如matplotlib.draw.绘图()这对bloch类似乎不起作用。 然后,还有其他解决方案,它们利用例如Tk或GTKagg(例如https://stackoverflow.com/a/15742183/3276735real-time plotting in while loop with matplotlib

有人能帮我解决这个问题吗?在

编辑: 下面是一个最小的例子:

基本上,我想一次更新一个点,最好是在一个循环中。我的目标是在绘图中显示必须从文件读取的实时数据。在

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()

Tags: 数据函数inimport绘图matplotlibasshow
1条回答
网友
1楼 · 发布于 2024-06-28 18:48:41

我认为你破坏了你的计划,因为你把每一点都说出来了。尝试在循环外调用show(最后)。在

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

编辑:动画情节

show视为调用绘图视图的绝对命令。这不是绘图命令(或重绘)。{如果你想每隔一秒显示一次图像的话。你可以试试这个:

^{pr2}$

,我在当前的发行版中没有QuTip,所以我不能真正测试它,但我打赌它主要基于matplotlib。不过,我的最佳建议是您在QuTiP文档中使用动画的公式。按照以下方法:

from pylab import *
import matplotlib.animation as animation
from mpl_toolkits.mplot3d import Axes3D

fig = figure()
ax = Axes3D(fig,azim=-40,elev=30)
sphere=Bloch(axes=ax)

def animate(i):
    sphere.clear()
    sphere.add_vectors([sin(theta),0,cos(theta)])
    sphere.add_points([sx[:i+1],sy[:i+1],sz[:i+1]])
    sphere.make_sphere()
    return ax

def init():
    sphere.vector_color = ['r']
    return ax

ani = animation.FuncAnimation(fig, animate, np.arange(len(sx)),
                            init_func=init, blit=True, repeat=False)
ani.save('bloch_sphere.mp4', fps=20, clear_temp=True)

,您应该能够修改animate函数来执行所需的所有操作。在

相关问题 更多 >