1{
2 "cells": [
3  {
4   "cell_type": "markdown",
5   "metadata": {
6    "id": "7bd5137ff0b2"
7   },
8   "source": [
9    "##### Copyright 2021 The Cirq Developers"
10   ]
11  },
12  {
13   "cell_type": "code",
14   "execution_count": 1,
15   "metadata": {
16    "id": "60d1a836f542"
17   },
18   "outputs": [],
19   "source": [
20    "# Licensed under the Apache License, Version 2.0 (the \"License\");\n",
21    "# you may not use this file except in compliance with the License.\n",
22    "# You may obtain a copy of the License at\n",
23    "#\n",
24    "# https://www.apache.org/licenses/LICENSE-2.0\n",
25    "#\n",
26    "# Unless required by applicable law or agreed to in writing, software\n",
27    "# distributed under the License is distributed on an \"AS IS\" BASIS,\n",
28    "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
29    "# See the License for the specific language governing permissions and\n",
30    "# limitations under the License."
31   ]
32  },
33  {
34   "cell_type": "markdown",
35   "metadata": {
36    "id": "058c886e7d6d"
37   },
38   "source": [
39    "# State Histograms\n",
40    "State Histograms are useful to visualize the output of running a quantum circuit. For details on how to create and run your own quantum circuits, please see [Cirq basics](./basics)"
41   ]
42  },
43  {
44   "cell_type": "markdown",
45   "metadata": {
46    "id": "78cd9ffef102"
47   },
48   "source": [
49    "<table class=\"tfo-notebook-buttons\" align=\"left\">\n",
50    "  <td>\n",
51    "    <a target=\"_blank\" href=\"https://quantumai.google/cirq/tutorials/state_histograms>\"><img src=\"https://quantumai.google/site-assets/images/buttons/quantumai_logo_1x.png\" />View on QuantumAI</a>\n",
52    "  </td>\n",
53    "  <td>\n",
54    "    <a target=\"_blank\" href=\"https://colab.research.google.com/github/quantumlib/Cirq/blob/master/docs/tutorials/state_histograms.ipynb\"><img src=\"https://quantumai.google/site-assets/images/buttons/colab_logo_1x.png\" />Run in Google Colab</a>\n",
55    "  </td>\n",
56    "  <td>\n",
57    "    <a target=\"_blank\" href=\"https://github.com/quantumlib/Cirq/blob/master/docs/tutorials/state_histograms.ipynb\"><img src=\"https://quantumai.google/site-assets/images/buttons/github_logo_1x.png\" />View source on GitHub</a>\n",
58    "  </td>\n",
59    "  <td>\n",
60    "    <a href=\"https://storage.googleapis.com/tensorflow_docs/Cirq/docs/tutorials/state_histograms.ipynb\"><img src=\"https://quantumai.google/site-assets/images/buttons/download_icon_1x.png\" />Download notebook</a>\n",
61    "  </td>\n",
62    "</table>"
63   ]
64  },
65  {
66   "cell_type": "code",
67   "execution_count": 2,
68   "metadata": {
69    "id": "614826b3777a"
70   },
71   "outputs": [],
72   "source": [
73    "try:\n",
74    "    import cirq\n",
75    "except ImportError:\n",
76    "    print(\"installing cirq...\")\n",
77    "    !pip install --quiet cirq\n",
78    "    print(\"installed cirq.\")\n",
79    "    import cirq\n",
80    "import matplotlib.pyplot as plt"
81   ]
82  },
83  {
84   "cell_type": "markdown",
85   "metadata": {
86    "id": "acebe6240f0b"
87   },
88   "source": [
89    "### Basic usage"
90   ]
91  },
92  {
93   "cell_type": "code",
94   "execution_count": 3,
95   "metadata": {
96    "id": "c1c6adeeb0e1"
97   },
98   "outputs": [
99    {
100     "data": {
101      "image/png": "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\n",
102      "text/plain": "<Figure size 432x288 with 1 Axes>"
103     },
104     "metadata": {
105      "needs_background": "light"
106     },
107     "output_type": "display_data"
108    }
109   ],
110   "source": [
111    "q = cirq.LineQubit.range(4)\n",
112    "circuit = cirq.Circuit([cirq.H.on_each(*q), cirq.measure(*q)])\n",
113    "result = cirq.Simulator().run(circuit, repetitions=100)\n",
114    "_ = cirq.vis.plot_state_histogram(result, plt.subplot())"
115   ]
116  },
117  {
118   "cell_type": "markdown",
119   "metadata": {
120    "id": "da358e505449"
121   },
122   "source": [
123    "### Plotting circuits with sparse output\n",
124    "If the results have sparse output, you can use the `result.histogram` to compute the histogram and plot only states that have non-zero sample count. For example:"
125   ]
126  },
127  {
128   "cell_type": "markdown",
129   "metadata": {
130    "id": "3bed4f1d4222"
131   },
132   "source": [
133    "#### Default plot\n",
134    "The default call to `cirq.vis.plot_state_histogram` would plot all possible output states (including 0's). This can get messy, especially if the output is sparse."
135   ]
136  },
137  {
138   "cell_type": "code",
139   "execution_count": 4,
140   "metadata": {
141    "id": "789958187e7d"
142   },
143   "outputs": [
144    {
145     "data": {
146      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAEWCAYAAABhffzLAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/d3fzzAAAACXBIWXMAAAsTAAALEwEAmpwYAAAk0ElEQVR4nO3debwddX3/8deHJGyBADEBA0GuFkSFn0WILEWURVpAZKkFtWKDgim1FhWpDdIqYpdgAamiKAoSFSn8RFkViJHIFpEEAySsIVzInpB9Ifunf3w+w50cbu49WebeJPN+Ph7ncc/M+c53PmfmO5/5nu+cO8fcHRERqY9tujsAERHpWkr8IiI1o8QvIlIzSvwiIjWjxC8iUjNK/CIiNaPEL5s9MxtlZud2dxxVMrPFZva27o5D6kGJX9aLmbWa2WuZqGaY2Q1mtlMXrv9sM3uokzIHmNl9ZjbPzOab2VgzOylfO9rMpqznOt3M9t2ImN+wvJldYmY/K6bdfSd3n9RJPesdu0h7lPhlQ3zY3XcCDgLeA1zUveG8wZ3ACGAPYHfgfGBht0a0BTCzHt0dg3QNJX7ZYO4+A7iXOAEAYGaHm9kj2dN+wsyOLr12tplNMrNFZvaSmX0i56/V+zWzluwl9yyvz8zeCXwfOCI/ccxvjMnM+gFvBX7o7ivy8bC7P2RmvYHfAHvm8ovNbE8zO9TMRmfM083sajPbNut7IKt+Ist/NOefbGbjcplHzOzdG7Mty58KzOwkM3s6t9NUM7uwg9i3M7OrzGxaPq4ys+1K9X4539M0Mzu3YT03mNk1ZvZrM1sCHGNmHzKzP5nZQjObbGaXtLNfPpWvzTOz88zsvWb2ZG6LqzdmO0gXcXc99Gj6AbQCH8znA4GngP/J6b2AOcBJRKfi+JzuD/Qmet37Z9kBwAH5/BLgZ6V1tAAO9MzpUcC5+fxs4KEO4jPgBeAu4DRgj4bXjwamNMw7BDgc6Jnrfgb4Qul1B/YtTR8MzAIOA3oAg3O7bLeOmNZafh3v+fUywHTgqHy+G3BwB7FfCvyB+GTTH3gE+Ea+dgIwAzgA2BH4acN6bgAWAEfm/to+1/H/cvrdwEzgtIb98v0s+5fAMuC2XP9euV0+0N3tVI+OH+rxy4a4zcwWAZOJA/1rOf8s4Nfu/mt3X+PuI4AxxIkAYA1woJnt4O7T3X3Cpg7MI0MdQyTiK4DpZvaAme3XwTJj3f0P7r7K3VuBHwAf6GA1nwF+4O6Puvtqdx8OLCdOHuvyePaI5+cnlaEdlF0JvMvM+rj7PHd/vIOynwAudfdZ7j4b+DrwyXztTODH7j7B3Zfma41u9/hEtMbdl7n7KHd/KqefBG7ijdviG1n2PmAJcFOufyrwIDH8J5sxJX7ZEKe5+85E7/AdQL+cvw9wRkOCex8wwN2XAB8FziOS8d1m9o4qgnP3Ke7+OXf/s4xpCfCTdZU3s7eb2V15sXoh8J+l99SefYAvNbzPvYE9O1jmYHfftXgAwzoo+xHiZPmymf3ezI7ooOyewMul6ZdLcexJnJwL5eftzjOzw8zsfjObbWYLiP3VuC1mlp6/1s50l13slw2jxC8bzN1/TwwXXJ6zJgM/LSc4d+/t7sOy/L3ufjwxzPMs8MNcbgkxFFF4c0erXc8YJwPfBQ7sYPlrMp793L0P8BViyGhdJgP/0fA+d3T3m9Yntg5ifszdTyWGT24Dbukg9mnEiajwlpwHMWQ0sPTa3u2trmH658AdwN7uvgsxrNPRtpAtkBK/bKyrgOPN7CDgZ8CHzeyvzKyHmW2fX0EcaGZ7mNkpeZFyObAYWJ11jAPeb2ZvMbNd6PhbQjOBgcXF10ZmtpuZfd3M9jWzbfJi76eJcfBi+Tflego7E9cfFuenkH9oZ53l79j/EDgve8dmZr3zoujOHcTdFDPb1sw+YWa7uPvKjKvYTu3FfhPwr2bWP9/rV4n9AHHC+JSZvdPMdszXOrMzMNfdl5nZocDfbux7ks2PEr9slBxX/gnwb9m7PpXoMc8mesb/TLSzbYAvEb3RucS48WezjhHAzcCTwFjiwuy6/A6YAMwws1fbeX0FcRHyt0TSHE+caM7OdT1LJMtJOUyzJ3AhkeAWEUn95oY6LwGGZ/kz3X0MMc5/NTAPmFjUv4l8EmjNYafziGsn64r934nrKE8SF9ofz3m4+2+AbwP3Z4yjs/7lHaz7s8CleQ3nq7R92pCtiMW1MBHZ2ll8HXY88e2jVd0dj3Qf9fhFtmJmdnoOH+0GXAbcqaQvSvwiW7e/J4bdXiSuFTRev5Aa0lCPiEjNqMcvIlIzPTsv0v369evnLS0t3R2GiMgWZezYsa+6e//G+VtE4m9paWHMmDHdHYaIyBbFzF5ub76GekREakaJX0SkZpT4RURqRolfRKRmlPhFRGpGiV9EpGaU+EVEakaJX0SkZpT4RURqZov4z92N0TL07rWmW4d9qJsiERHZPKjHLyJSM0r8IiI1o8QvIlIzSvwiIjWjxC8iUjNK/CIiNaPELyJSM5V+j9/MWoFFwGpglbsPMrO+wM1AC9AKnOnu86qMQ0RE2nRFj/8Ydz/I3Qfl9FBgpLvvB4zMaRER6SLdMdRzKjA8nw8HTuuGGEREaqvqxO/AfWY21syG5Lw93H06QP7dvb0FzWyImY0xszGzZ8+uOEwRkfqo+l49R7r7NDPbHRhhZs82u6C7XwtcCzBo0CCvKkARkbqptMfv7tPy7yzgV8ChwEwzGwCQf2dVGYOIiKytssRvZr3NbOfiOfCXwHjgDmBwFhsM3F5VDCIi8kZVDvXsAfzKzIr1/Nzd7zGzx4BbzOwc4BXgjApjEBGRBpUlfnefBPx5O/PnAMdVtV4REemY/nNXRKRmlPhFRGpGiV9EpGaU+EVEakaJX0SkZpT4RURqpupbNoiIyHpoGXr3WtOtwz60ydehHr+ISM0o8YuI1IwSv4hIzSjxi4jUjBK/iEjNKPGLiNSMEr+ISM0o8YuI1IwSv4hIzSjxi4jUjBK/iEjNKPGLiNSMEr+ISM0o8YuI1IwSv4hIzSjxi4jUjBK/iEjNKPGLiNSMEr+ISM0o8YuI1IwSv4hIzSjxi4jUjBK/iEjNVJ74zayHmf3JzO7K6b5mNsLMXsi/u1Udg4iItOmKHv/ngWdK00OBke6+HzAyp0VEpItUmvjNbCDwIeBHpdmnAsPz+XDgtCpjEBGRtVXd478K+DKwpjRvD3efDpB/d684BhERKaks8ZvZycAsdx+7gcsPMbMxZjZm9uzZmzg6EZH6qrLHfyRwipm1Av8LHGtmPwNmmtkAgPw7q72F3f1adx/k7oP69+9fYZgiIvVSWeJ394vcfaC7twAfA37n7mcBdwCDs9hg4PaqYhARkTfqju/xDwOON7MXgONzWkREukjPrliJu48CRuXzOcBxXbFeERF5I/3nrohIzSjxi4jUjBK/iEjNKPGLiNSMEr+ISM0o8YuI1IwSv4hIzSjxi4jUjBK/iEjNKPGLiNSMEr+ISM0o8YuI1IwSv4hIzSjxi4jUTKeJ38zOaGaeiIhsGZrp8V/U5DwREdkCrPOHWMzsROAkYC8z+3bppT7AqqoDExGRanT0C1zTgDHAKcDY0vxFwBerDEpERKqzzsTv7k8AT5jZz919ZRfGJCIiFWrmN3cPNbNLgH2yvAHu7m+rMjAREalGM4n/OmJoZyywutpwRESkas0k/gXu/pvKIxERkS7RTOK/38z+G/glsLyY6e6PVxaViIhUppnEf1j+HVSa58Cxmz4cERGpWqeJ392P6YpARESka3Sa+M3sq+3Nd/dLN304IiJStWaGepaUnm8PnAw8U004IiJStWaGeq4oT5vZ5cAdlUUkIiKV2pDbMu8I6J+3RES2UM2M8T9FfIsHoAfQH9D4vojIFqqZMf6TS89XATPdvdO7c5rZ9sADwHa5nl+4+9fMrC9wM9ACtAJnuvu89YxbREQ2UKdDPe7+MrAr8GHgdOBdTda9HDjW3f8cOAg4wcwOB4YCI919P2BkTouISBdp5he4Pg/cCOyejxvN7J86W87D4pzslQ8HTgWG5/zhwGnrH7aIiGyoZoZ6zgEOc/clAGZ2GTAa+E5nC5pZD+LmbvsC33X3R81sD3efDuDu081s9w2OXkRE1lsz3+ox1r4r5+qc1yl3X+3uBwEDids7H9hsYGY2xMzGmNmY2bNnN7uYiIh0opke/4+BR83sVzl9GnGr5qa5+3wzGwWcAMw0swHZ2x8AzFrHMtcC1wIMGjTI2ysjIiLrr5mLu1cCnwLmAvOAT7n7VZ0tZ2b9zWzXfL4D8EHgWeKfvwZnscHA7RsSuIiIbJhmvsd/ODChuA2zme1sZoe5+6OdLDoAGJ7j/NsAt7j7XWY2GrjFzM4BXgHO2Li3ICIi66OZoZ5rgINL00vamfcG7v4k8J525s8BjluPGEVEZBNq6uKuu78+xu7ua2juhCEiIpuhZhL/JDM738x65ePzwKSqAxMRkWo0k/jPA/4CmApMIX6Ra0iVQYmISHWauS3zLOBjXRCLiIh0gQ25LbOIiGzBlPhFRGqmmZu0vbWZeSIismVopsd/azvzfrGpAxERka6xzou7ZvYO4ABgFzP769JLfYgfXRcRkS1QR9/q2Z/49a1diR9hKSwCPlNhTCIiUqF1Jn53vx243cyOcPfRXRiTiIhUqKOhnu+QP7JuZh9vfN3dz68wLhERqUhHQz1juiwKERHpMh0N9Qxf12siIrLlauZ+/PeTQz5l7n5sJRGJiEilmrm98oWl59sDHwFWVROOiIhUrZmbtI1tmPWwmf2+onhERKRizQz19C1NbgMcAry5sohERKRSzQz1jCXG+I0Y4nkJOKfKoEREpDrNDPXohmwiIluRZu7OeYaZ7ZzP/9XMfmlmHf7QuoiIbL6auTvnv7n7IjN7H/BXwHDgmmrDEhGRqjST+Ffn3w8B1+Q9fLatLiQREalSM4l/qpn9ADgT+LWZbdfkciIishlqJoGfCdwLnODu84G+wD9XGZSIiFSn08Tv7kuBWcD7ctYq4IUqgxIRkeo0862erwH/AlyUs3oBP6syKBERqU4zQz2nA6cASwDcfRqwc5VBiYhIdZpJ/Cvc3Wn7UZbe1YYkIiJVaibx35Lf6tnVzD4D/Bb4YbVhiYhIVTq8ZYOZGXAz8A5gIfED7F919xGdVWxmewM/IW7otga41t3/J2/6djPQArQCZ7r7vI14DyIish46TPzu7mZ2m7sfAnSa7BusAr7k7o/nLR/GmtkI4GxgpLsPM7OhwFDi4rGIiHSBZoZ6/mBm713fit19urs/ns8XAc8AewGnErd9IP+etr51i4jIhmvmtszHAH9vZi8T3+wx4sPAu5tdiZm1AO8BHgX2cPfpRCXTzWz39Y5aREQ2WDOJ/8SNWYGZ7QTcCnzB3RfGZYOmlhsCDAF4y1vesjEhiIhISTP34395Qys3s15E0r/R3X+Zs2ea2YDs7Q8g/iu4vfVeC1wLMGjQoDf82LuIiGyYym62lt8Iug54xt2vLL10BzA4nw8Gbq8qBhEReaNmhno21JHAJ4GnzGxczvsKMIz434BzgFeAMyqMQUREGlSW+N39IeJCcHuOq2q9IiLSMd1XX0SkZpT4RURqRolfRKRmlPhFRGpGiV9EpGaU+EVEakaJX0SkZpT4RURqRolfRKRmlPhFRGpGiV9EpGaU+EVEakaJX0SkZpT4RURqRolfRKRmlPhFRGpGiV9EpGaU+EVEakaJX0SkZpT4RURqRolfRKRmlPhFRGpGiV9EpGaU+EVEakaJX0SkZpT4RURqRolfRKRmlPhFRGpGiV9EpGaU+EVEakaJX0SkZipL/GZ2vZnNMrPxpXl9zWyEmb2Qf3erav0iItK+Knv8NwAnNMwbCox09/2AkTktIiJdqLLE7+4PAHMbZp8KDM/nw4HTqlq/iIi0r6vH+Pdw9+kA+Xf3dRU0syFmNsbMxsyePbvLAhQR2dptthd33f1adx/k7oP69+/f3eGIiGw1ujrxzzSzAQD5d1YXr19EpPa6OvHfAQzO54OB27t4/SIitVfl1zlvAkYD+5vZFDM7BxgGHG9mLwDH57SIiHShnlVV7O4fX8dLx1W1ThER6dxme3FXRESqocQvIlIzSvwiIjWjxC8iUjNK/CIiNaPELyJSM0r8IiI1o8QvIlIzSvwiIjWjxC8iUjNK/CIiNaPELyJSM0r8IiI1o8QvIlIzSvwiIjWjxC8iUjNK/CIiNaPELyJSM0r8IiI1o8QvIlIzSvwiIjWjxC8iUjNK/CIiNaPELyJSM0r8IiI1o8QvIlIzSvwiIjWjxC8iUjNK/CIiNaPELyJSM92S+M3sBDN7zswmmtnQ7ohBRKSuujzxm1kP4LvAicC7gI+b2bu6Og4Rkbrqjh7/ocBEd5/k7iuA/wVO7YY4RERqqWc3rHMvYHJpegpwWGMhMxsCDMnJxWb23Eautx/wql32xnntlVvPMt1R15YUa13f95YUq973Zlp/Q85aX/u0O9fdu/QBnAH8qDT9SeA7XbDeMRsyb0OXq7quLSnWur7vLSlWve8to/5N9eiOoZ4pwN6l6YHAtG6IQ0Sklroj8T8G7GdmbzWzbYGPAXd0QxwiIrXU5WP87r7KzD4H3Av0AK539wldsOprN3Dehi5XdV1V17+51lV1/XWNVe97y6h/k7AcSxIRkZrQf+6KiNSMEr+ISN1U9XWhzekBnAA8B0wEhgLXA7OA8fn63sD9wDPABODzwPbAH4Enct7Xs2wP4E/AXaX6W4GngHHAGGBX4BfAs1nnR/O14rEQ+ALwxax7PHAT8KV8Pg9YVIrvemA2sBh4ARgBPACsAhwYlOWeynnLgF9lHONy3mvAfbmeWbmeC3P5J4HVWWYccFKucxGwPGP8JjAJWJnlWoE5wFxgaem9/xOwIGNYBHw5t++DGf/y3A8PEt/wWgasAT4EvJKvL8uYDsj1LMt1PgsMKu2rGRn/Q7l9VmadE3K/zcj6pgPXADNLdc3Jco/l9Gu5/vfldlySZZ/P9zU+458DjMxtsSzXfy3RXqbnvGUZ3x7A1FL9k4i2U7Sp+3L56aXtOoP4h8Y/5rLLc39dkesu6pqfMT6X239GxvkJYHSWmQn0AfoSbWZZbqfdiK9VT8j1P5jt5/Iss5BoP9/M/bA0l9uzdAxMzWX7AZfk9FJi35+UZSbnNpuQ22Nclinay0HAH3J6PvHPnVPzfRXvsU/ul6ItLsj4Z5W2/9NEO5md85Zm/AtK22sBsCdtx2o5/vml7b80t9tTtLXPCcCKUl3LM/5pWf61jPlQov3Moa39nwLcnq+vIPbrZzMeB14CjgC+ndu9WO544Bu5/ccRbWXPTZYTuzspd0HS7wG8CLwN2JY46D4JHExbYh0AHJzPdyYO9ncBO+W8XsCjwOHABcDPeWPi71eaHg6cm8+3BXZtiGdGNpKXgB1y/j3Z0HYEjsn1PZ+vvT/rnJHTQ4G7gNOzQRWJ/0vAe4kkdVk+TijeK3B+NsKDiSR6L/Byvp9vFdsj6/p8xjAhp3fPOIq6rgCuI5JMa5Y5KRtt8d4/mwdBEf/Q3L5ziAPznVnfUuAzWb5nlpkL3AgcVdovs0rx7w38ljhgzyaSz8W5795P/PPfb4E35bxTG/bx3FL8J+a8KcSBORb4QO73ScBPiCT4ldwm3wVuAPYHfp/b43DiIO+Zy00DfgoMKLWhVuD2nH4rkXCm57a/kLXb2YkZf++cdyJrt8fpxMn5PuDkLPNFInlcnfv0CSJ5fJNoLz8nEvBlue3/i0hyReL/PtExuCvLfIu29j4e+H6WuzTXv5S2xH8HpeMC+B7Rzn9daj9FXS8CX83Yr815jwKjiKR6Si7z6Yx/AXBpqe1fRiTuw3KZQblt/wbomeUuy+X65fT5+f5agXfT1vaLxP/VhuP51Nz+2+W8V0p1XZHxvwZ8tNT2RxH/hPXNnPeZ3G73ZNzb5rZ6nmiro4h9vWtuiyG53H8DVwF9SjGdX2z/TfGow1BPe7eIGEgc+AC4+3R3fzyfLyIOjr3cfXEW6ZWPfkTP9EfrWpmZ9SESz3VZ3wp3n18qchzR8KcSSWIHM+sJ9Aeecvel7n4/0Yvtk3U8QPQkinqGA/sRvcfXufsVRK8Hoic10N3vKb3X3kRCmkuc7L5M9DqmEAdx2ZFEL8Sz7lkZR1HXmcAwohdTtKNdiJ7vdTl9J9HYtyMa+PDcvo8RJ6tncrsvBXq5+/fcfVWWeQF4s7s/mOtfRBxU2+Qy3yJOdCuJkw1E0ngm1/dBYJi7z8l5S4t9TPRCdyA+dSwkDrBFRKJanNv2AWKfLwGOIhLB/+a8u4Ej3P05wIj96O5+h7uvyjKvAf3dfXqus2hDq3L6SiJ5er6HchkHPpXb13Pe3Ib2+Cbg1/n6bjmvd76vdxJtdDbwkXzskvOmAKflNjs0Y8DMBub7/mGu4w/Ef30W7b0H4FnuPODfaNOntM6iro8QnyDWZJltS3XtSZxgtiV6uz+i7WTZC3gklxmR9ewI3Jzzhmf8K4njqGxUbv8i/h6l13rntgL4d9ra/rp8img/y3N6Tb43I9r+TTl/5/y7C9Ex6Qv8S857CHg7cZIfnvnnRqAF+M8ssyrrLm/7R4i2s3Ad8W+87u6RV/0gegGN/yl8dW788e2UbyHO7n2IhjOOSAaXEcM3hwBHs3aP/yXgcaKneCnRa7yBSMw/AnqXyl4PfM7betWLiQP0TqIn8CaioT8OzCktt5C1e+TzMtbXe/yl+MdnfWflvKuJA2U8cYI5F3jV23o336TtY+31RCIZR/Q6lhK92veW6p9E/lchcSJbQXysn5rb4NR87RtEo+4DzG/YvvNK08uADzS8h6W0fXL4DyIprCAOolOA/8lyq/LvJfkeVhA97aeAr+c+WAYcXar/TOIkUSSsV7L+VcTw0iP5HhcTwzqLiKGwxcBlpe0/LucPz3nl9jIROIu2T3hriP28R9a9gmhTrUQPb0XW9WRp+8/Iea8Qn+SK+pcSCbsHcVJbQ7SPqRnXBUQbnZCxr6DUbrNM0ZbHESfAXzSUuZNox9cRCW0h0XYeJpLe0bT1+J/O7fdixno7MQR1Q67r97kdDyF6rkVbuDffxyziRLlP7qsXiXZ0S2nbF8fXkKyzOOYWEe3jpYYyd2a90/P9T834Z+b8sURHol/Wtzzfz8PEJ4Gl+Z4mZfxTs/7naPuEW7S3FVnHiRnPSKLdFUOoK2jLBYcT7eyGLHtbzivnjJeBc0ptfzJ57G6qvFiHHr+1M6/dM6eZ7QTcCnzB3Re6+2p3P4j4hHAisMrdx7az6JHufnCW+RgxFHGNu7+HSMxDs/5tiaT1/81sN6IX+VaiB7SaaGAjiI+Gz6wrzib0JxrXjTl9OdFgbySuLfwj0fgLPyY+pUwkDpQriF7sLkTD/2fgluztkPOLHs9ZxBDU3sRQw3LgH83sT8A5wJKi51Levg3TE3M7FfMeJg6a4pPDf2VctxAnrYuJpHkr8QlkMdETnAl8nEg+A4nhhTXEx/IfW9iJGKq5KeP6B+CirP8q4oTy6YxpIjFEuJo4SAcCh5rZgQDZNkYDB5jZgaX28q3cRuNy3puJnuBC4gQ1G9iX6HH3Ik62OxBJqE++7575ft+U++pXwJqs/6bcXu8k2stgIpH9hkicJwA/yDo8Ql2r3fYCZpXm9W2Y3jdjGePu5xAnyqlEB2Jfosdf+EtimGbv3Dc9iF7uSqI3/DCR3N5LJM7jgGlmdjLxqfNzWf/T+b6PJxJ/T6JNrgEWl46vf8zXimPuSeJ6xQWlMl/P7X+Quw/I/bYN0cGZSvSuT8xtfQQxrLcjcSzuS3zanER8sltEHDeriRPXaGBbM3s/ceL6eNa/gDhudgB2yrgt17u8lAuKbXRN7rPXct7BOe8Xue1aiB13cR5bN+a22jS6u0de9SN37L2l6Yvy0cLaPeheuSMvWEc9DxJDLa1ET2wp8LN2yl1OfCwvpo8C7s7npwL35fMzgOtK5f4O+F5p+rvAtNL0i8Cz+XwAkchbeGOP/0sZ246leS1Ej2EfolG/SvRCWokTRNGjHF8qew9xEhtfWn9/4M9ymYHe8EmEaOgLS9vyv4A/5mvPERdlLyjFf29OjyLGaXsRPfXWIv7yfinFX/QQ55biv7/Yd/keFhG9qAtK8Q8gxlIXleJfUKrfgIUN+/PbWf9zufzXiMTyXL4+ikiyF+b0YCI5/Hsxr1TXlbT1OFuJXmLRo39zlvkWcRK6h/yUkut8Nbd/z6zjCuK6wIKM+2tET3MNbW20uFi5kug1Fu12GdFbbSXawSqiHbUSbXw18WlhSkNdy/K1VfnXc/lppXIrM4Zi/ywl2tOqjKH4EsH4hliXAisattd3ytu+dHzNKpUZRVwnKG//ycBFDXV9q2Hbt+b65xXbPstdVd7+xIn6QqL9vDnruLK87XO5S3L7tJbqOi/XUbSdo4ghxJWl2M8lriW00tZ2PkjmjFJd+9DOCMWGPurQ4+/0FhHZk70OeMbdr8x5/c1s13y+QxY9y91bso7fuftZZtbbzHbOcr2BvyB6NPvnMscRvRmI3kHRU34FONzMdsz1H0fetdTM3kL02uaXwvwtcREIooHc3vhGzewEorG97O5Lc95+pSKnEBf8BhEXjluIg/tE2q4NnE4clLcRJ03M7O3EeOyrxLWG5e4+JcvPIsYfAY4lPnJfR14nAb6f728VMY5/Zca/ktL2Tr8hPv28192X5nK3lMoV8d8D/MDd+2b8o4EXSnWdTnzyWOPuV5biv4xIcI+7+5Ss34FFueyxwEtmtm++7x2JfX030WbOIQ7Kt2cMED26Q4l9/hFifPdMohc5zcwOzrp2IMamJ7n77kRvfTxxoftMd5+RZU4hksC9wLE578O5rpW5/ueJazCTiaR7fM7/HXGdqIVoa3OIXuJVREfiY8QwwrfdfWCWexoY7e69ibYzHxjp7gcAx5Ta+4vE8GYPd+9JtNfXcn8dUir3fO6zLxLDLb8D/ppIpp8hTuwj3f1AIiGencs9AUwws7fm9tqJ+DbcbdkuBufxdQbwUHHM5fY/Angx2//QXNfTZnZQ1tWb6HRNBP4sYz2AOGmdT/TQi3KnZbnbgL8iPtEsIa4bHZTv73CiAzID+EAprsnADDPb38y2IT5Nzic6jYNzm3lRJuM/lBjeWUxcNzmFOMaebufYfZZNZVOdQTbnB3HF/Xmi8V5MJN/iK3RTiJ6p0/bVqXHEN0yKcbrxrH3V/2javr3wNqLRFl/Ru5hoIGNy2duIMdsdiQNxl1I9X8+dOZ4Yl36IOBDnZdkivkdpGydemWVG09brWp11LGLtntgoojGuzHmvER+3y+/9VeIkVC5zAXEx7bVSXf+d221prqOI69VSmUnENzScSLwzc1sWXxstvpK3NKdbc7lijLqop/ja3OicV3wFcwFx3aC8r4q455WWm9AwbynxMdqJXujkhrjKX8kblu9teT7GEu1gAm1f53y0IfbFxJDG8lL8xdDUfNq+4vlS7qfX2xRt4/JFj/pZ4gQ0LucvI5L7uRnH3Fzmuzk9kbavgT6a++n5fI8TiU8DbyI+DRT7uy9xcizGqJcTJ5qJxIl8Qa5/Usb5Yu7LvRqOgWKMv7im8mLGMYA40Y7I/fp4vqcbiN5ycey8L7fvxHyvp9D2FdblxNDn22hr28tzHe/JbVls/yW5nuVEe5hOHCPLS9v1GeIEUT5W5xHDN3NL5Sbma0/mvptZ2gZzc19cnHFNpO0T1OSs65s5vTz3w1G5nxYR7eT3uXwR+7LcN6/Q1nYWEMN/t9LWXu4sb/+NfeiWDSIiNVOHoR4RESlR4hcRqRklfhGRmlHiFxGpGSV+EZGaUeIXAczsbDO7eh2vPZJ/W8zsb9ez3q9synIim4ISv0gn3P0v8mkLsF6Jn7ij56YsJ7LRlPhlq2RmF5vZc2b2WzO7ycwuzPmjzGxQPu9nZq2lxfY2s3tyua+V6iruijkMOMrMxpnZFxvWN8DMHsjXxpvZUWY2jLj76jgzuzHL3WZmY81sgpkNyXntlTvLzP6Y835gZuU7TYpslJ7dHYDIpmZmhxC3AXgP0caLuzZ25lDgQOK/MR8zs7vdfUzp9aHEPWFObmfZvyXuCfUfmaR3dPcHzexzHjdWK3za3efmrRgeM7Nb3X1ouZyZvZO4XcGR7r7SzL5H/MDKT5rfCiLrpsQvW6OjgF+V7ld0RyflCyM87t+Pmf2SuKXAmI4Xed1jwPVm1gu4zd3HraPc+WZ2ej7fm7hT5JyGMscR//7/WN4QdQfWvpuqyEbRUI9srdZ1L5JVtLX77TtZpun7mXj8SM37iXvN/NTM/q6xjJkdTdxM7Qh3/3PiHi6NMUDcX2e4ux+Uj/3d/ZJmYxHpjBK/bI0eAE43sx3yLo4fLr3WSvSmIX6kp+x4M+tbupPmww2vL6LtF5fWYmb7ELcL/iFxd9KD86WV+SkA4h7x8/LOo+8g7vJIO+VGAn9jZrtn3X2zfpFNQolftjoeP7F4M3GHyVuJ2+IWLgf+Ib+i2a9h0YeIO02OA25tGN+HuEviKjN7ovHiLnG3ynEWP0DzEeIHXSDuFf9kXrS9B+hpZk8Sdxn9Q2n518u5+9PAvwL3ZdkRxB0vRTYJ3Z1TtnpmdgnxK06Xd3csIpsD9fhFRGpGPX4RkZpRj19EpGaU+EVEakaJX0SkZpT4RURqRolfRKRm/g/mbbCClW7mAwAAAABJRU5ErkJggg==\n",
147      "text/plain": "<Figure size 432x288 with 1 Axes>"
148     },
149     "metadata": {
150      "needs_background": "light"
151     },
152     "output_type": "display_data"
153    }
154   ],
155   "source": [
156    "q = cirq.LineQubit.range(6)\n",
157    "circuit = cirq.Circuit([cirq.H(q[0]), [cirq.CNOT(q[0], q[i]) for i in range(1, 6, 1)], cirq.measure(*q, key='measure_all')])\n",
158    "result = cirq.Simulator().run(circuit, repetitions=100)\n",
159    "_ = cirq.vis.plot_state_histogram(result, plt.subplot())"
160   ]
161  },
162  {
163   "cell_type": "markdown",
164   "metadata": {
165    "id": "d7c05a17460b"
166   },
167   "source": [
168    "#### Sparse plots\n",
169    "To plot only non-zero entries in the histogram, you can first compute a histogram using `result.histogram()` and pass its result to `cirq.vis.plot_state_histogram`"
170   ]
171  },
172  {
173   "cell_type": "code",
174   "execution_count": 5,
175   "metadata": {
176    "id": "2405b58effd0"
177   },
178   "outputs": [
179    {
180     "data": {
181      "image/png": "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\n",
182      "text/plain": "<Figure size 432x288 with 1 Axes>"
183     },
184     "metadata": {
185      "needs_background": "light"
186     },
187     "output_type": "display_data"
188    }
189   ],
190   "source": [
191    "histogram = result.histogram(key = 'measure_all')\n",
192    "_ = cirq.vis.plot_state_histogram(histogram, plt.subplot())"
193   ]
194  },
195  {
196   "cell_type": "markdown",
197   "metadata": {
198    "id": "7dab59bc0b62"
199   },
200   "source": [
201    "### Histogram for processed results.\n",
202    "`result.histogram()` also allows you to pass a `fold_func` parameter that can be used to process the sampled measurement results and convert to a countable value to generate a histogram.\n",
203    "\n",
204    "As an example, suppose you want to plot a histogram of the parity of the number of times a `1` occurs in a measurement result. We can do this using `fold_func` as follows:"
205   ]
206  },
207  {
208   "cell_type": "code",
209   "execution_count": 6,
210   "metadata": {
211    "id": "64d8a54596bc"
212   },
213   "outputs": [
214    {
215     "data": {
216      "image/png": "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\n",
217      "text/plain": "<Figure size 432x288 with 1 Axes>"
218     },
219     "metadata": {
220      "needs_background": "light"
221     },
222     "output_type": "display_data"
223    }
224   ],
225   "source": [
226    "def count_ones(bits):\n",
227    "    return 'even' if sum(bits) % 2 == 0 else 'odd'\n",
228    "\n",
229    "q = cirq.LineQubit.range(6)\n",
230    "# Uniform superposition over all 2 ** 6 states.\n",
231    "circuit = cirq.Circuit([cirq.H.on_each(*q), cirq.measure(*q, key='measure_all')])\n",
232    "result = cirq.Simulator().run(circuit, repetitions=100)\n",
233    "# Create a customized histogram by processing the measurement results using `fold_func`.\n",
234    "custom_histogram = result.histogram(key = 'measure_all', fold_func=count_ones)\n",
235    "# Plot the custom histogram using cirq.vis.plot_state_histogram\n",
236    "_ = cirq.vis.plot_state_histogram(custom_histogram, plt.subplot())"
237   ]
238  },
239  {
240   "cell_type": "markdown",
241   "metadata": {
242    "id": "ac5483d0a913"
243   },
244   "source": [
245    "### Modifying plot properties\n",
246    "You can pass additional arguments to the `cirs.vis.plot_state_histogram` method to modify plot properties like `title`, `xlabel`, `ylabel` and `tick_labels`. For example:"
247   ]
248  },
249  {
250   "cell_type": "code",
251   "execution_count": 7,
252   "metadata": {
253    "id": "16aa0365af6a"
254   },
255   "outputs": [
256    {
257     "data": {
258      "image/png": "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\n",
259      "text/plain": "<Figure size 432x288 with 1 Axes>"
260     },
261     "metadata": {
262      "needs_background": "light"
263     },
264     "output_type": "display_data"
265    }
266   ],
267   "source": [
268    "def binary_labels(num_qubits):\n",
269    "    return [bin(x)[2:].zfill(num_qubits) for x in range(2 ** num_qubits)]\n",
270    "\n",
271    "q = cirq.LineQubit.range(3)\n",
272    "circuit = cirq.Circuit([cirq.H.on_each(*q), cirq.measure(*q)])\n",
273    "result = cirq.Simulator().run(circuit, repetitions=100)\n",
274    "_ = cirq.vis.plot_state_histogram(result, plt.subplot(), title = 'Custom Plot Title', xlabel = 'Custom X-Axis Label', ylabel = 'Custom Y-Axis Label', tick_label=binary_labels(3))"
275   ]
276  }
277 ],
278 "metadata": {
279  "colab": {
280   "name": "state_histograms.ipynb",
281   "toc_visible": true
282  },
283  "kernelspec": {
284   "display_name": "Python 3",
285   "name": "python3"
286  }
287 },
288 "nbformat": 4,
289 "nbformat_minor": 0
290}
291