qiskit 图没有出现在 spyder 控制台中

qiskit plots not showing up in spyder console

系统信息

Qiskit version: 0.17.0
Python version: 3.7.7
Operating system: Windows 10 home x64

当前的行为是什么?

我在 Anaconda 上使用 spyder 4.1.1,但每次我尝试绘制数据时,它都没有显示出来。代码运行没有错误,但它自己的情节没有出现在任何地方。

重现问题的步骤

运行 下面列出的代码来自 IBMQ 网站:

import numpy 
import qiskit as qc 
from qiskit import QuantumCircuit, execute, Aer
import matplotlib
from qiskit.visualization import plot_state_city

circ = qc.QuantumCircuit(3)

circ.h(0)
circ.cx(0,1)
circ.cx(0,2)
print(circ.draw())
backend = Aer.get_backend('statevector_simulator')
job = execute(circ, backend)
result = job.result()
outputstate = result.get_statevector(circ, decimals=3)
print(outputstate)
plot_state_city(outputstate)

预期的行为是什么?

为了在控制台或其他地方显示 plot state city plot

建议的解决方案

我尝试同时使用 matplotlib.pylot.show() 和 matplotlib.pyplot.draw()

这可能是因为默认情况下 spyder 中不显示绘图。如果您 运行 在 Jupyter Notebook 中使用此代码,绘图应该会显示得很好!

尝试按照 "Spyder plots in separate windows" here 下的说明进行操作。那么你也可以调用circ.draw(output='mpl')在window中绘制电路。希望这有帮助。

要打印电路,您必须输入 print(电路名称),因此在您的情况下,请输入 print(circ)。

我一般用pycharmide来运行qiskit代码。我认为,spyder 也应该同样工作。 请修改您的代码如下。希望对你有用。

import numpy 
import qiskit as qc 
from qiskit import QuantumCircuit, execute, Aer
import matplotlib
from qiskit.visualization import plot_state_city
import matplotlib.pyplot as plt

circ = qc.QuantumCircuit(3)

circ.h(0)
circ.cx(0,1)
circ.cx(0,2)
circ.draw(output='mpl')

backend = Aer.get_backend('statevector_simulator')
job = execute(circ, backend)
result = job.result()
outputstate = result.get_statevector(circ, decimals=3)
print(outputstate)
plot_state_city(outputstate)

plt.show() 

1st:我更改了spyder的首选项:工具==>首选项==> ipython控制台==>图形==>图形后端==>自动。

2nd:然后我尝试了上面答案中提到的选项,稍作修改是通过仅在“draw”一词后的括号之间写入 'mpl' 使代码为 circ.draw('mpl'),一切正常。