Repository: Qiskit/qiskit

Issue:
mpl drawer fails with multiple X target 
Consider the following situation:
```
from qiskit import QuantumCircuit
from qiskit.circuit.library import MCXVChain

circuit = QuantumCircuit(5)
circuit.append(MCXVChain(3, dirty_ancillas=True), range(5), [])
```
When drawn by mpl drawer:
```
circuit.draw('mpl')
```
![image](https://user-images.githubusercontent.com/766693/110031979-e561d780-7d37-11eb-93b7-409d0d44bec5.png)

Compare with the other drawers:
```
q_0: ──■───
       │   
q_1: ──■───
       │   
q_2: ──■───
     ┌─┴──┐
q_3: ┤0   ├
     │  X │
q_4: ┤1   ├
     └────┘
```
![image](https://user-images.githubusercontent.com/766693/110032074-075b5a00-7d38-11eb-92d2-2600eb1b47da.png)



Discussion:

Resolving patch:
diff --git a/qiskit/visualization/matplotlib.py b/qiskit/visualization/matplotlib.py
--- a/qiskit/visualization/matplotlib.py
+++ b/qiskit/visualization/matplotlib.py
@@ -972,16 +972,6 @@ def _draw_ops(self, verbose=False):
                 #
                 # draw controlled and special gates
                 #
-                # cx gates
-                elif isinstance(op.op, ControlledGate) and base_name == 'x':
-                    num_ctrl_qubits = op.op.num_ctrl_qubits
-                    self._set_ctrl_bits(op.op.ctrl_state, num_ctrl_qubits,
-                                        q_xy, ec=ec, tc=tc, text=ctrl_text, qargs=op.qargs)
-                    tgt_color = self._style['dispcol']['target']
-                    tgt = tgt_color if isinstance(tgt_color, str) else tgt_color[0]
-                    self._x_tgt_qubit(q_xy[num_ctrl_qubits], ec=ec, ac=tgt)
-                    self._line(qreg_b, qreg_t, lc=lc)
-
                 # cz gate
                 elif op.name == 'cz':
                     num_ctrl_qubits = op.op.num_ctrl_qubits
@@ -1031,7 +1021,11 @@ def _draw_ops(self, verbose=False):
                     self._set_ctrl_bits(op.op.ctrl_state, num_ctrl_qubits,
                                         q_xy, ec=ec, tc=tc, text=ctrl_text, qargs=op.qargs)
                     self._line(qreg_b, qreg_t, lc=lc)
-                    if num_qargs == 1:
+                    if num_qargs == 1 and base_name == 'x':
+                        tgt_color = self._style['dispcol']['target']
+                        tgt = tgt_color if isinstance(tgt_color, str) else tgt_color[0]
+                        self._x_tgt_qubit(q_xy[num_ctrl_qubits], ec=ec, ac=tgt)
+                    elif num_qargs == 1:
                         self._gate(q_xy[num_ctrl_qubits], fc=fc, ec=ec, gt=gt, sc=sc,
                                    text=gate_text, subtext='{}'.format(param))
                     else:


Test patch:
diff --git a/test/ipynb/mpl/references/cnot.png b/test/ipynb/mpl/references/cnot.png
Binary files a/test/ipynb/mpl/references/cnot.png and b/test/ipynb/mpl/references/cnot.png differ
diff --git a/test/ipynb/mpl/test_circuit_matplotlib_drawer.py b/test/ipynb/mpl/test_circuit_matplotlib_drawer.py
--- a/test/ipynb/mpl/test_circuit_matplotlib_drawer.py
+++ b/test/ipynb/mpl/test_circuit_matplotlib_drawer.py
@@ -26,6 +26,7 @@
 from qiskit.test.mock import FakeTenerife
 from qiskit.visualization.circuit_visualization import _matplotlib_circuit_drawer
 from qiskit.circuit.library import XGate, MCXGate, HGate, RZZGate, SwapGate, DCXGate
+from qiskit.circuit.library import MCXVChain
 from qiskit.extensions import HamiltonianGate
 from qiskit.circuit import Parameter
 from qiskit.circuit.library import IQP
@@ -222,13 +223,14 @@ def test_big_gates(self):
 
     def test_cnot(self):
         """Test different cnot gates (ccnot, mcx, etc)"""
-        qr = QuantumRegister(5, 'q')
+        qr = QuantumRegister(6, 'q')
         circuit = QuantumCircuit(qr)
         circuit.x(0)
         circuit.cx(0, 1)
         circuit.ccx(0, 1, 2)
         circuit.append(XGate().control(3, ctrl_state='010'), [qr[2], qr[3], qr[0], qr[1]])
         circuit.append(MCXGate(num_ctrl_qubits=3, ctrl_state='101'), [qr[0], qr[1], qr[2], qr[4]])
+        circuit.append(MCXVChain(3, dirty_ancillas=True), [qr[0], qr[1], qr[2], qr[3], qr[5]])
 
         self.circuit_drawer(circuit, filename='cnot.png')