Repository: Qiskit/qiskit

Issue:
plot_bloch_multivector should have most significant qubit on the left
<!-- ⚠️ If you do not respect this template, your issue will be closed -->
<!-- ⚠️ Make sure to browse the opened and closed issues to confirm this idea does not exist. -->

### What is the expected enhancement?
Since the standard ordering of qubits for a multiqubit state is most significant (left) to least significant (right), the multivector Bloch sphere output should respect the same order.  

For example, in the sample shown by the API documentation, qubit 1 should be on the left and qubit 0 on the right.
https://qiskit.org/documentation/stubs/qiskit.visualization.plot_bloch_multivector.html




Discussion:
This issue made it really confusing when I was learning about the QFT in the Qiskit Textbook.
I came up with an easy solution, by simply reversing the array containing the coordinates of the Bloch vectors. This is one of my first contributions, so I don't really know if I should also modify docs/tests for this, but I'll be glad to submit the PR soon!

Resolving patch:
diff --git a/qiskit/visualization/state_visualization.py b/qiskit/visualization/state_visualization.py
--- a/qiskit/visualization/state_visualization.py
+++ b/qiskit/visualization/state_visualization.py
@@ -218,7 +218,7 @@ def plot_bloch_vector(bloch, title="", ax=None, figsize=None, coord_type="cartes
 
 
 @deprecate_arguments({'rho': 'state'})
-def plot_bloch_multivector(state, title='', figsize=None, *, rho=None):
+def plot_bloch_multivector(state, title='', figsize=None, *, rho=None, reverse_bits=False):
     """Plot the Bloch sphere.
 
     Plot a sphere, axes, the Bloch vector, and its projections onto each axis.
@@ -227,6 +227,7 @@ def plot_bloch_multivector(state, title='', figsize=None, *, rho=None):
         state (Statevector or DensityMatrix or ndarray): an N-qubit quantum state.
         title (str): a string that represents the plot title
         figsize (tuple): Has no effect, here for compatibility only.
+        reverse_bits (bool): If True, plots qubits following Qiskit's convention [Default:False].
 
     Returns:
         matplotlib.Figure:
@@ -249,7 +250,7 @@ def plot_bloch_multivector(state, title='', figsize=None, *, rho=None):
             qc.cx(0, 1)
 
             state = Statevector.from_instruction(qc)
-            plot_bloch_multivector(state, title="New Bloch Multivector")
+            plot_bloch_multivector(state, title="New Bloch Multivector", reverse_bits=False)
     """
     if not HAS_MATPLOTLIB:
         raise ImportError('Must have Matplotlib installed. To install, run '
@@ -258,13 +259,16 @@ def plot_bloch_multivector(state, title='', figsize=None, *, rho=None):
     from matplotlib import pyplot as plt
 
     # Data
-    bloch_data = _bloch_multivector_data(state)
+    bloch_data = (_bloch_multivector_data(state)[::-1]
+                  if reverse_bits
+                  else _bloch_multivector_data(state))
     num = len(bloch_data)
     width, height = plt.figaspect(1/num)
     fig = plt.figure(figsize=(width, height))
     for i in range(num):
+        pos = num - 1 - i if reverse_bits else i
         ax = fig.add_subplot(1, num, i + 1, projection='3d')
-        plot_bloch_vector(bloch_data[i], "qubit " + str(i), ax=ax,
+        plot_bloch_vector(bloch_data[i], "qubit " + str(pos), ax=ax,
                           figsize=figsize)
     fig.suptitle(title, fontsize=16)
     if get_backend() in ['module://ipykernel.pylab.backend_inline',


Test patch: