From 0d15506d44485ab5a95aa63f6cfc8e56b717578b Mon Sep 17 00:00:00 2001 From: sg495 Date: Thu, 16 Mar 2023 18:40:33 +0000 Subject: [PATCH] new parameters in `plot_bloch_multivector`: `figsize`, `font_size`, and `title_font_size` (#7264) * Update state_visualization.py Closes #7263 * Introduced font size, title font size and title padding to plot_bloch_multivector * Update state_visualization.py Documented new kwargs. * Fixed code formatting issues in previous commits of #7264. * Update qiskit/visualization/bloch.py Co-authored-by: Luciano Bello * Update qiskit/visualization/bloch.py Co-authored-by: Luciano Bello * Update qiskit/visualization/state_visualization.py Co-authored-by: Luciano Bello * Update qiskit/visualization/state_visualization.py Co-authored-by: Luciano Bello * Create update-state-visualization-6836bd53e3a24891.yaml Added release notes. * Update test_graph_matplotlib_drawer.py Included a test for the new features. * fix test * blacking --------- Co-authored-by: Luciano Bello --- qiskit/visualization/bloch.py | 6 ++- qiskit/visualization/state_visualization.py | 37 ++++++++++++++---- ...-state-visualization-6836bd53e3a24891.yaml | 23 +++++++++++ ...bloch_multivector_figsize_improvements.png | Bin 0 -> 42033 bytes .../mpl/graph/test_graph_matplotlib_drawer.py | 25 ++++++++++++ 5 files changed, 82 insertions(+), 9 deletions(-) create mode 100644 releasenotes/notes/update-state-visualization-6836bd53e3a24891.yaml create mode 100644 test/ipynb/mpl/graph/references/bloch_multivector_figsize_improvements.png diff --git a/qiskit/visualization/bloch.py b/qiskit/visualization/bloch.py index ac5dd8c3e720..e7b4cb96817f 100644 --- a/qiskit/visualization/bloch.py +++ b/qiskit/visualization/bloch.py @@ -149,7 +149,9 @@ class Bloch: Positions of +z and -z labels respectively. """ - def __init__(self, fig=None, axes=None, view=None, figsize=None, background=False): + def __init__( + self, fig=None, axes=None, view=None, figsize=None, background=False, font_size=20 + ): # Figure and axes self._ext_fig = False @@ -194,7 +196,7 @@ def __init__(self, fig=None, axes=None, view=None, figsize=None, background=Fals # Color of fonts, default = 'black' self.font_color = plt.rcParams["axes.labelcolor"] # Size of fonts, default = 20 - self.font_size = 20 + self.font_size = font_size # ---vector options--- # List of colors for Bloch vectors, default = ['b','g','r','y'] diff --git a/qiskit/visualization/state_visualization.py b/qiskit/visualization/state_visualization.py index 98122585b14d..7dae6433ee9c 100644 --- a/qiskit/visualization/state_visualization.py +++ b/qiskit/visualization/state_visualization.py @@ -187,7 +187,9 @@ def plot_state_hinton( @_optionals.HAS_MATPLOTLIB.require_in_call -def plot_bloch_vector(bloch, title="", ax=None, figsize=None, coord_type="cartesian"): +def plot_bloch_vector( + bloch, title="", ax=None, figsize=None, coord_type="cartesian", font_size=None +): """Plot the Bloch sphere. Plot a Bloch sphere with the specified coordinates, that can be given in both @@ -204,6 +206,7 @@ def plot_bloch_vector(bloch, title="", ax=None, figsize=None, coord_type="cartes figsize (tuple): Figure size in inches. Has no effect is passing ``ax``. coord_type (str): a string that specifies coordinate type for bloch (Cartesian or spherical), default is Cartesian + font_size (float): Font size. Returns: Figure: A matplotlib figure instance if ``ax = None``. @@ -234,7 +237,7 @@ def plot_bloch_vector(bloch, title="", ax=None, figsize=None, coord_type="cartes if figsize is None: figsize = (5, 5) - B = Bloch(axes=ax) + B = Bloch(axes=ax, font_size=font_size) if coord_type == "spherical": r, theta, phi = bloch[0], bloch[1], bloch[2] bloch[0] = r * np.sin(theta) * np.cos(phi) @@ -253,7 +256,16 @@ def plot_bloch_vector(bloch, title="", ax=None, figsize=None, coord_type="cartes @deprecate_arguments({"rho": "state"}, since="0.15.1") @_optionals.HAS_MATPLOTLIB.require_in_call def plot_bloch_multivector( - state, title="", figsize=None, *, rho=None, reverse_bits=False, filename=None + state, + title="", + figsize=None, + *, + rho=None, + reverse_bits=False, + filename=None, + font_size=None, + title_font_size=None, + title_pad=1, ): r"""Plot a Bloch sphere for each qubit. @@ -266,8 +278,11 @@ def plot_bloch_multivector( Args: 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. + figsize (tuple): size of each individual Bloch sphere figure, in inches. reverse_bits (bool): If True, plots qubits following Qiskit's convention [Default:False]. + font_size (float): Font size for the Bloch ball figures. + title_font_size (float): Font size for the title. + title_pad (float): Padding for the title (suptitle `y` position is `y=1+title_pad/100`). Returns: matplotlib.Figure: @@ -324,13 +339,21 @@ def plot_bloch_multivector( _bloch_multivector_data(state)[::-1] if reverse_bits else _bloch_multivector_data(state) ) num = len(bloch_data) - width, height = plt.figaspect(1 / num) + if figsize is not None: + width, height = figsize + width *= num + else: + width, height = plt.figaspect(1 / num) + default_title_font_size = font_size if font_size is not None else 16 + title_font_size = title_font_size if title_font_size is not None else default_title_font_size 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(pos), ax=ax, figsize=figsize) - fig.suptitle(title, fontsize=16, y=1.01) + plot_bloch_vector( + bloch_data[i], "qubit " + str(pos), ax=ax, figsize=figsize, font_size=font_size + ) + fig.suptitle(title, fontsize=title_font_size, y=1.0 + title_pad / 100) matplotlib_close_if_inline(fig) if filename is None: return fig diff --git a/releasenotes/notes/update-state-visualization-6836bd53e3a24891.yaml b/releasenotes/notes/update-state-visualization-6836bd53e3a24891.yaml new file mode 100644 index 000000000000..a348d96dccdb --- /dev/null +++ b/releasenotes/notes/update-state-visualization-6836bd53e3a24891.yaml @@ -0,0 +1,23 @@ +--- +features: + - | + The ``figsize`` argument of + :obj:`~qiskit.visualization.plot_bloch_multivector` can now be used to + set a size for individual Bloch ball sub-plots: if there are ``num`` + qubits and ``(w, h)`` is passed to ``figsize``, then the overall figure + width is set to ``num*w``, while the overall height is set to ``h``. + - | + A new ``font_size`` keyword argument for + :obj:`~qiskit.visualization.plot_bloch_multivector` can be used to + control the font size in Bloch ball sub-plots. + - | + New ``title_font_size`` and ``title_pad`` keyword arguments + for :obj:`~qiskit.visualization.plot_bloch_multivector` can be used to + control the font size of the overall title and its padding. +fixes: + - | + Previous to this release, the ``figsize`` argument of + :obj:`~qiskit.visualization.plot_bloch_multivector` was not used by the + visualization, making it impossible to change its size (e.g. to shrink + it for single-qubit states). This release fixes it by introducing a use + for the ``figsize`` argument. \ No newline at end of file diff --git a/test/ipynb/mpl/graph/references/bloch_multivector_figsize_improvements.png b/test/ipynb/mpl/graph/references/bloch_multivector_figsize_improvements.png new file mode 100644 index 0000000000000000000000000000000000000000..c7e8b102ea0be96da1a2ab0d4c936fcfbbd52747 GIT binary patch literal 42033 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