mindquantum.io.BlochScene
- class mindquantum.io.BlochScene(config=None)[源代码]
- 在布洛赫球中展示单量子比特的量子态。 - 参数:
- config (Union[dict, str]) - 布洛赫球风格配置文件。如果为 - None,系统将会使用内置的风格配置文件。除了内置格式,当前还支持 dark 风格。默认值:- None。
 
 - 样例: - >>> import matplotlib.pyplot as plt >>> import numpy as np >>> from mindquantum.core.gates import RX, RZ >>> from mindquantum.io.display import BlochScene >>> state = np.array([1, 1 + 1j])/np.sqrt(3) >>> scene = BlochScene() >>> fig, ax = scene.create_scene() >>> scene.add_state(ax, state) >>> plt.show() >>> n_step = 100 >>> amps = np.zeros((n_step, 2), dtype=np.complex128) >>> for i, angle in enumerate(np.linspace(0, np.pi * 2, n_step)): ... state = RZ(angle).matrix() @ RX(np.pi / 4).matrix() @ np.array([[1], [0]]) ... state = state.T[0] ... amps[i] = state >>> scene = BlochScene('dark') >>> fig, ax = scene.create_scene() >>> scene.add_state(ax, np.array([1, 1 - 1j])/np.sqrt(3), with_proj=False) >>> objs = scene.add_state(ax, amps[0], linecolor='r') >>> anim = scene.animation(fig, ax, objs, amps,history_len=10) >>> plt.show() - add_3d_arrow(ax, data, *args, **kwargs)[源代码]
- 在给定Axes中添加一个三维方向箭头。 - 参数:
- ax (mpl_toolkits.mplot3d.axes3d.Axes3D) - 想要添加三维箭头的三维Axes。 
- data (list) - 具有六个元素的列表,其中前三个表示箭头的起始坐标,后三个表示箭头相对与起始位置的偏移量。 
- args (tuple) - FancyArrowPatch 所需要的其他位置参数。 
- kwargs (dict) - FancyArrowPatch 所需要的其他关键字参数。 
 
 
 - add_ket_label(ax, *args, fontsize=None, **kwargs)[源代码]
- 在给定的Axes中设置布洛赫球坐标轴的右矢标签。 - 参数:
- ax (mpl_toolkits.mplot3d.axes3d.Axes3D) - 想要添加右矢标签的三维Axes。 
- args (tuple) - 右矢标签中 matplotlib 的 text 对象的其他位置参数。 
- kwargs (dict) - 右矢标签中 matplotlib 的 text 对象的其他关键字参数。 
- fontsize (int) - 标签字体大小。如果为 - None,字体大小将取 BlochScene 的配置文件中键 ket_label_fs 对应的值。默认值:- None。
 
 
 - add_state(ax, amp, linecolor=None, linewidth=None, pointcolor=None, pointsize=None, marker=None, projcolor=None, mode=None, with_proj=None, stick_args=None, stick_kwargs=None, point_args=None, point_kwargs=None, proj_args=None, proj_kwargs=None)[源代码]
- 在布洛赫球中添加一个单比特量子态。 - 参数:
- ax (mpl_toolkits.mplot3d.axes3d.Axes3D) - 想要添加量子态的三维Axes。 
- amp (numpy.ndarray) - 量子态。 
- linecolor (str) - 线的颜色。如果为 - None,系统将会从 BlochScene 的 config 中取键 stick_c 对应的值。默认值:- None。
- linewidth (numbers.Number) - 线宽度。如果为 - None,系统将会从 BlochScene 的 config 中取键 stick_w 对应的值。默认值:- None。
- pointcolor (str) - 顶点的颜色。如果为 - None,系统将会从 BlochScene 的 config 中取键 point_c 对应的值。默认值:- None。
- pointsize (numbers.Number) - 顶点的大小。如果为 - None,系统将会从 BlochScene 的 config 中取键 point_s 对应的值。默认值:- None。
- marker (str) - 顶点的标记。如果为 - None,系统将会从 BlochScene 的 config 中取键 point_m 对应的值。默认值:- None。
- projcolor (str) - 投影线的颜色。如果为 - None, 系统将会从 BlochScene 的 config 中取键 proj_c 对应的值。默认值:- None。
- mode (str) - 怎样展示量子态。可以是 - 'stick'、- 'point'或- 'both'。如果为- None,系统将会从 BlochScene 的 config 中取键 state_mode 对应的值。默认值:- None。
- with_proj (bool) - 是否展示量子态在x、y和z轴上的投影。如果为 - None,系统将会从 BlochScene 的 config 中取键 with_proj 对应的值。默认值:- None。
- stick_args (tuple) - 绘制量子态的轴线的位置参数。这些参数会被传入到 Axes3D.plot 中。默认值: - None。
- stick_kwargs (dict) - 绘制量子态的轴线的关键字参数。这些参数会被传入到 Axes3D.plot 中。默认值: - None。
- point_args (tuple) - 量子态端点的其他位置参数。这些参数会被传入到 Axes3D.scatter 中。默认值: - None。
- point_kwargs (dict) - 量子态端点的其他关键字参数。这些参数会被传入到 Axes3D.scatter 中。默认值: - None。
- proj_args (tuple) - 投影线的其他位置参数。这些参数会被传入到 Axes3D.plot 中。默认值: - None。
- proj_kwargs (dict) - 投影线的其他关键字参数。这些参数会被传入到 Axes3D.plot 中。默认值: - None。
 
- 返回:
- dict,由折线、端点和投影线构成的字典。 
 
 - animation(fig, ax, objs, new_amps, interval=15, with_trace=True, history_len=None, **kwargs)[源代码]
- 在布洛赫球上动画展示给定量子态。 - 参数:
- fig (matplotlib.figure.Figure) - 布洛赫球场景所在的figure。 
- ax (mpl_toolkits.mplot3d.axes3d.Axes3D) - 布洛赫球场景所在的Axes。 
- objs (dict) - 通过 BlochScene.add_state 产生的对象。 
- new_amps (numpy.ndarray) - 所有需要动画展示的量子态。 
- interval (int) - 帧之间的时间间隔,单位为毫秒。默认值: - 15。
- with_trace (bool) - 是否展示量子态动画的轨迹。默认值: - True。
- history_len (int) - 量子态动画的轨迹长度。如果为 - None,长度为所有需要动画展示的量子态的个数。默认自:- None。
- kwargs (dict) - 传入 animation.FuncAnimation 的其他关键字参数。 
 
- 返回:
- animation.FuncAnimation,matplotlib中的动画句柄对象。 
 
 - circle_xy(ax, *args, angle=np.pi / 2, **kwargs)[源代码]
- 在布洛赫球上绘制于xy平面平行的圆。 - 参数:
- ax (mpl_toolkits.mplot3d.axes3d.Axes3D) - 想要绘制平行于xy平面的圆的Axes。 
- args (tuple) - 传入给 Axes3D.plot 的位置参数。 
- angle (numbers.Number) - 圆相对于z轴的仰角。默认值:π / 2。 
- kwargs (dict) - 传入给 Axes3D.plot 的关键字参数。 
 
 
 - circle_yz(ax, *args, angle=0, **kwargs)[源代码]
- 在布洛赫球上绘制于yz平面平行的圆。 - 参数:
- ax (mpl_toolkits.mplot3d.axes3d.Axes3D) - 想要绘制平行于yz平面的圆的Axes。 
- args (tuple) - 传入给 Axes3D.plot 的位置参数。 
- angle (numbers.Number) - 相对与z轴的旋转角度。默认值: - 0。
- kwargs (dict) - 传入给 Axes3D.plot 的关键字参数。 
 
 
 - gen_fig_ax(boxes=None)[源代码]
- 创建一个三维的画布。 - 参数:
- boxes (list) - 四维的浮点数数组,分别为左边界,底边,宽度和高度。如果为 - None,左边界和底边将为0,宽度和高度将为1。默认值:- None。
 
 
 - plot_slice(ax, x, y, z, frame_color, frame_alpha, surface_color, surface_alpha, frame_args=None, frame_kwargs=None, surface_args=None, surface_kwargs=None)[源代码]
- 在xy、yz和zx平面上创建参考平面。 - 参数:
- ax (mpl_toolkits.mplot3d.axes3d.Axes3D) - 需要添加参考面的三维Axes。 
- x (numpy.ndarray) - 参考面的x轴坐标。 
- y (numpy.ndarray) - 参考面的y轴坐标。 
- z (numpy.ndarray) - 参考面的z轴坐标。 
- frame_color (str) - 边框的颜色。 
- frame_alpha (numbers.Number) - 边框的透明度。 
- surface_color (str) - 参考面的颜色。 
- surface_alpha (numbers.Number) - 参考面的透明度。 
- frame_args (tuple) - 传入给 Axes3D.plot_wireframe 的其他位置参数。 
- frame_kwargs (dict) - 传入给 Axes3D.plot_wireframe 的其他关键字参数。 
- surface_args (tuple) - 传入给 Axes3D.plot_surface 的其他位置参数。 
- surface_kwargs (dict) - 传入给 Axes3D.plot_surface 的其他关键字参数。 
 
 
 - set_view(ax, elev=0, azim=0)[源代码]
- 以合适的角度来展示布洛赫球。 - 参数:
- ax (mpl_toolkits.mplot3d.axes3d.Axes3D) - 需要设置视图的三维Axes。 
- elev (numbers.Number) - 以度为单位时,当前方位绕z轴转动的角度。 
- azim (numbers.Number) - 以度为单位时,当前方位相对与 (x, y) 平面的仰角。默认值: - 0。