qiskit.visualization.circuit_drawer
qiskit.visualization.circuit_drawer(circuit, scale=None, filename=None, style=None, output=None, interactive=False, plot_barriers=True, reverse_bits=None, justify=None, vertical_compression='medium', idle_wires=None, with_layout=True, fold=None, ax=None, initial_state=False, cregbundle=None, wire_order=None, expr_len=30, measure_arrows=None, barrier_label_len=16)
Desenhe o circuito quântico. Use o parâmetro de saída para escolher o formato de desenho:
text
Arte ASCII TextDrawing que pode ser exibida no console.
mpl
Imagens com cores geradas inteiramente em Python usando o matplotlib.
latex
Imagens de alta qualidade compiladas a partir do site LaTeX.
Por padrão, isso chamará uma versão do sistema instalada pdflatex com base em qualquer entrada do usuário (por exemplo, para executar código Instruction.label personalizado), portanto, só deve ser usado com dados confiáveis.
latex_source
Saída bruta e não compilada do LaTeX. Esta é a fonte do que seria renderizado pelo latex desenhador.
O suporte para Expr nós em condições e campos SwitchCaseOp.target é preliminar e incompleto. As gavetas text e mpl farão o melhor esforço possível para mostrar as dependências de dados, mas as gavetas LaTeX-based as ignorarão completamente.
Parâmetros
-
circuit (QuantumCircuit) – O circuito a ser visualizado.
-
scale (float | None) – Escala da imagem a ser desenhada (reduzir se
< 1.0). Usado somente pelas saídasmpl,latexelatex_source. O padrão é1.0. -
filename (str | None) – Caminho do arquivo para salvar a imagem. O padrão é
None(o resultado não é salvo em um arquivo). -
Nome do estilo, nome do arquivo JSON do estilo ou um dicionário que especifique o estilo.
-
Os nomes de estilo compatíveis são
"iqp"(padrão),"iqp-dark","clifford","textbook"e"bw". -
Se for fornecido um arquivo JSON, por exemplo
my_style.jsonoumy_style(o.jsonpode ser omitida), essa função tenta carregar o dicionário de estilos a partir desse local. Observe que o arquivo JSON deve especificar completamente as especificações de visualização. O arquivo é pesquisado em
qiskit/visualization/circuit/styles, no diretório de trabalho atual e no local especificado em~/.qiskit/settings.conf. -
Se for um dicionário, cada entrada substitui a configuração padrão. Caso o comando
"name"Se a chave for fornecida, a configuração padrão é determinada por esse estilo. Por exemplo,{"name": "textbook", "subfontsize": 5}carrega o"textbook"estilo e define o tamanho da subfonte (por exemplo, os ângulos das portas) para5. -
Se
None, o estilo padrão"iqp"é usado ou, se fornecido, o estilo padrãoespecificado em
~/.qiskit/settings.conf.
-
-
output (str | None) – Selecione o método de saída a ser usado para desenhar o circuito. As opções válidas são
text,mpl,latex,latex_source. Por padrão, a gavetatexté usada, a menos que o arquivo de configuração do usuário (geralmente~/.qiskit/settings.conf) tenha um backend alternativo definido como padrão. Por exemplo,circuit_drawer = latex. Se o kwarg de saída for definido, esse backend sempre será usado em vez do padrão no arquivo de configuração do usuário. -
interactive (bool) – Quando definido como
True, mostre o circuito em uma nova janela (parampl, isso depende do suporte do backend do matplotlib que está sendo usado). Observe que, quando usado com o tipo de saída texto oulatex_source, isso não tem efeito e será silenciosamente ignorado. O padrão éFalse. -
reverse_bits (bool | None) – Quando definido como
True, inverta a ordem dos bits dentro dos registros para a visualização da saída. O padrão éFalse, a menos que o arquivo de configuração do usuário (geralmente~/.qiskit/settings.conf) tenha um valor alternativo definido. Por exemplo,circuit_reverse_bits = True. -
plot_barriers (bool) – Ativar/desativar barreiras de desenho no circuito de saída. Padroniza para
True. -
justify (str | None) – As opções são
"left","right"ou"none"(str). Se qualquer outra coisa for fornecida, será usado o justificado à esquerda. Refere-se ao local onde as portas devem ser colocadas no circuito de saída, se houver uma opção.nonefaz com que cada porta seja colocada em sua própria coluna. O padrão éleft. -
vertical_compression (str | None) –
high,mediumoulow. Ele mescla as linhas geradas pela saída de texto para que o desenho ocupe menos espaço vertical. O padrão émedium. Usado somente pela saídatext; caso contrário, será silenciosamente ignorado. -
idle_wires (bool |str | None) – Incluir (ou não) fios ociosos (fios sem elementos de circuito) na visualização da saída. A string
"auto"também é possível e, nesse caso, os fios ociosos são exibidos, exceto pelo fato de o circuito ter um layout anexado. O padrão é"auto", a menos que o arquivo de configuração do usuário (geralmente~/.qiskit/settings.conf) tenha um valor alternativo definido. Por exemplo,circuit_idle_wires = False. -
with_layout (bool) – Inclua informações de layout, com rótulos no layout físico. O padrão é
True. -
fold (int | None) – Define a paginação. Ele pode ser desativado usando -1. Em
text, define o comprimento das linhas. Isso é útil quando o desenho não cabe no console. Se for None (padrão), ele tentará adivinhar a largura do console usandoshutil.get_terminal_size(). No entanto, se estiver sendo executado no jupyter, o comprimento de linha padrão é definido como 80 caracteres. Emmpl, é o número de camadas (visuais) antes da dobragem. O padrão é 25. -
ax (Any | None) – Usado apenas pelo backend do mpl. Um objeto
matplotlib.axes.Axesopcional a ser usado para a saída da visualização. Se nenhum for especificado, um novo matplotlib Figure será criado e usado. Além disso, se especificado, não haverá nenhuma figura retornada, pois ela é redundante. -
initial_state (bool) – Adiciona no início dos fios do qubit e aos fios clássicos. O padrão é
False. -
cregbundle (bool | None) – Se definido como
True, agrupa os registros clássicos. O padrão éTrue, exceto quandooutputé definido como"text". -
wire_order (list[int] | None) – Uma lista de números inteiros usados para reordenar a exibição dos bits. A lista deve ter uma entrada para cada bit com os bits no intervalo de 0 a (
num_qubits+num_clbits). -
expr_len (int) – O número de caracteres a serem exibidos se um
Exprfor usado para a condição em umControlFlowOp. Se esse número for excedido, a cadeia de caracteres será truncada nesse número e '...' será adicionado ao final. -
measure_arrows (bool | None) – Se for verdadeiro, desenhe uma seta a partir de cada caixa de medida até o bit ou registro clássico onde o valor da medida está localizado. Se for False, não desenhe a seta, mas coloque o nome do bit ou do registro na caixa de medida. O valor padrão é, a menos
Trueque o arquivo de configuração do usuário (geralmente~/.qiskit/settings.conf) tenha um valor alternativo definido. Por exemplo,circuit_measure_arrows = False. -
barrier_label_len (int) – O número de caracteres a serem exibidos para
Barrieros rótulos no circuito de saída. Se esse número for excedido, a sequência de caracteres será truncada nesse ponto e “...” será adicionado ao final.
Retorna
TextDrawing ou matplotlib.figure ou PIL.Image ou str:
-
TextDrawing(seoutput='text')Um desenho que pode ser impresso como arte ascii.
-
matplotlib.figure.Figure(seoutput='mpl')Um objeto de figura matplotlib para o diagrama de circuito.
-
PIL.Image(ifoutput='latex')Uma representação na memória da imagem do diagrama do circuito.
-
str(seoutput='latex_source')O código-fonte LaTeX para visualizar o diagrama do circuito.
Aumentos
- VisualizationError - quando um método de saída inválido é selecionado
- ImportError - quando os métodos de saída exigirem bibliotecas não instaladas.
Exemplo
from qiskit import QuantumCircuit
from qiskit.visualization import circuit_drawer
qc = QuantumCircuit(1, 1)
qc.h(0)
qc.measure(0, 0)
circuit_drawer(qc, output="mpl", style={"backgroundcolor": "#EEEEEE"})