{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "execution": { "iopub.execute_input": "2025-05-30T09:12:03.275691Z", "iopub.status.busy": "2025-05-30T09:12:03.275441Z", "iopub.status.idle": "2025-05-30T09:12:03.279687Z", "shell.execute_reply": "2025-05-30T09:12:03.279172Z" }, "id": "60d1a836f542" }, "outputs": [], "source": [ "# Copyright 2021 The Cirq Developers\n", "# Licensed under the Apache License, Version 2.0 (the \"License\");\n", "# you may not use this file except in compliance with the License.\n", "# You may obtain a copy of the License at\n", "#\n", "# https://www.apache.org/licenses/LICENSE-2.0\n", "#\n", "# Unless required by applicable law or agreed to in writing, software\n", "# distributed under the License is distributed on an \"AS IS\" BASIS,\n", "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n", "# See the License for the specific language governing permissions and\n", "# limitations under the License." ] }, { "cell_type": "markdown", "metadata": { "id": "058c886e7d6d" }, "source": [ "# State Histograms\n", "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](../start/basics.ipynb)" ] }, { "cell_type": "markdown", "metadata": { "id": "78cd9ffef102" }, "source": [ "\n", " \n", " \n", " \n", " \n", "
\n", " View on QuantumAI\n", " \n", " Run in Google Colab\n", " \n", " View source on GitHub\n", " \n", " Download notebook\n", "
" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2025-05-30T09:12:03.282244Z", "iopub.status.busy": "2025-05-30T09:12:03.282025Z", "iopub.status.idle": "2025-05-30T09:12:18.440087Z", "shell.execute_reply": "2025-05-30T09:12:18.439287Z" }, "id": "614826b3777a" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "installing cirq...\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\r\n", "tensorflow-metadata 1.17.1 requires protobuf<4.22,>=4.21.6; python_version < \"3.11\", but you have protobuf 5.29.5 which is incompatible.\u001b[0m\u001b[31m\r\n", "\u001b[0m" ] }, { "name": "stdout", "output_type": "stream", "text": [ "installed cirq.\n" ] } ], "source": [ "try:\n", " import cirq\n", "except ImportError:\n", " print(\"installing cirq...\")\n", " !pip install --quiet cirq\n", " print(\"installed cirq.\")\n", " import cirq\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": { "id": "acebe6240f0b" }, "source": [ "### Basic usage" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2025-05-30T09:12:18.443698Z", "iopub.status.busy": "2025-05-30T09:12:18.443273Z", "iopub.status.idle": "2025-05-30T09:12:18.608661Z", "shell.execute_reply": "2025-05-30T09:12:18.607891Z" }, "id": "c1c6adeeb0e1" }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjIAAAHHCAYAAACle7JuAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAOXxJREFUeJzt3XlYlPX+//HXKKuAuCLgArgkakbuueSSKJqZtpllhdpqmKml6fG4H0XtmLT41eqUS2V7mqdOrqntLiiWlblkSm6kKSgoKnx+f3Q5PwlExuZm5rbn47ruK+Yz9/15v+cm8MW9zDiMMUYAAAA2VMbTDQAAAFwuggwAALAtggwAALAtggwAALAtggwAALAtggwAALAtggwAALAtggwAALAtggwAALAtggzwN+FwODRhwgRPt2E77DfAuxFkADeYP3++HA6Hc/Hx8VH16tXVv39/7d+/39PtFemrr77ShAkTdPz48RJv89///lcdOnRQWFiYypUrp9q1a6tPnz5atmyZc50DBw5owoQJSktLu+ze/ve//1kSHiZMmCCHw6EjR44U+Xx0dLRuuummv1xn0aJFSklJ+cvzALg0ggzgRpMmTdJrr72muXPnqnv37nr99dfVoUMHnT592tOtFfLVV19p4sSJJQ4y//73v3XzzTfL4XBo9OjRmjVrlm677Tbt3LlTb731lnO9AwcOaOLEiX85yEycOPGyt3enU6dO6Z///KdL2xBkgNLj4+kGgCtJ9+7d1bx5c0nSAw88oCpVqmj69OlaunSp+vTp4+HuLt+5c+c0efJkdenSRStWrCj0fEZGhge6Kh0BAQGebsFl2dnZCgoK8nQbQKngiAxgoeuvv16StHv37gLj27dv1+23365KlSopICBAzZs319KlSwusc/bsWU2cOFH16tVTQECAKleurHbt2mnlypXOdTp27KiOHTsWqtu/f39FR0dftK8JEyZoxIgRkqSYmBjnKbFffvmlyPWPHDmirKwstW3btsjnw8LCJElr165VixYtJEkDBgxwzjt//nxJ0ueff6477rhDtWrVkr+/v2rWrKlhw4bp1KlTBXqfPXu2JBU4XXdefn6+UlJS1KhRIwUEBKhatWp6+OGHdezYsYu+3r/iz9fInDhxQkOHDlV0dLT8/f0VFhamLl26aPPmzZL++J58/PHH2rt3r7P3C78XGRkZuv/++1WtWjUFBAQoLi5OCxYsKFT36NGjuvfee1W+fHlVqFBBiYmJ2rp1a4H9Kf2xv4KDg7V7927deOONCgkJUb9+/SSVbH9fOMe+fft00003KTg4WNWrV3d+H7777jvdcMMNCgoKUlRUlBYtWuSmvQv8dRyRASx0PhhUrFjROfb999+rbdu2ql69ukaNGqWgoCC988476t27t95//33dcsstkv4IG8nJyXrggQfUsmVLZWVladOmTdq8ebO6dOnyl/q69dZbtWPHDr355puaNWuWqlSpIkmqWrVqkeuHhYUpMDBQ//3vf/XYY4+pUqVKRa7XoEEDTZo0SePGjdNDDz3kDHJt2rSRJL377rvKycnRoEGDVLlyZW3YsEHPP/+8fv31V7377ruSpIcfflgHDhzQypUr9dprrxWq8fDDD2v+/PkaMGCAhgwZoj179uiFF17Qli1b9OWXX8rX1/eSr//3338vcjw/P/+S2z7yyCN67733NHjwYDVs2FBHjx7VF198oR9//FFNmzbVmDFjlJmZqV9//VWzZs2SJAUHB0v64zRVx44dtWvXLg0ePFgxMTF699131b9/fx0/flyPP/64s4+ePXtqw4YNGjRokGJjY/Xhhx8qMTGxyJ7OnTunhIQEtWvXTv/+979Vrlw5SSXb3+fl5eWpe/fuat++vWbMmKE33nhDgwcPVlBQkMaMGaN+/frp1ltv1dy5c3XfffepdevWiomJueT+AixnAPxl8+bNM5LMqlWrzG+//WbS09PNe++9Z6pWrWr8/f1Nenq6c93OnTubxo0bm9OnTzvH8vPzTZs2bUy9evWcY3FxcaZHjx7F1u3QoYPp0KFDofHExEQTFRVVYEySGT9+vPPx008/bSSZPXv2lOg1jhs3zkgyQUFBpnv37mbKlCkmNTW10HobN240ksy8efMKPZeTk1NoLDk52TgcDrN3717nWFJSkinq19Pnn39uJJk33nijwPiyZcuKHP+z8ePHG0nFLn/e53/eb6GhoSYpKanYOj169Ci0/40xJiUlxUgyr7/+unPszJkzpnXr1iY4ONhkZWUZY4x5//33jSSTkpLiXC8vL8/ccMMNhfZtYmKikWRGjRpVqF5J9/f5OaZOneocO3bsmAkMDDQOh8O89dZbzvHt27cX2ieAJ3FqCXCj+Ph4Va1aVTVr1tTtt9+uoKAgLV26VDVq1JD0x5GATz/9VH369NGJEyd05MgRHTlyREePHlVCQoJ27tzpvMupQoUK+v7777Vz505PviSniRMnatGiRWrSpImWL1+uMWPGqFmzZmratKl+/PHHEs0RGBjo/Do7O1tHjhxRmzZtZIzRli1bLrn9u+++q9DQUHXp0sW5744cOaJmzZopODhYa9asKVEf77//vlauXFloqVat2iW3rVChgtavX68DBw6UqNaF/ve//yk8PFx33XWXc8zX11dDhgzRyZMntW7dOknSsmXL5OvrqwcffNC5XpkyZZSUlHTRuQcNGlRozNX9/cADDzi/rlChgurXr6+goKAC13fVr19fFSpU0M8//1zCVw1Yi1NLgBvNnj1bV111lTIzM/Xqq6/qs88+k7+/v/P5Xbt2yRijsWPHauzYsUXOkZGRoerVq2vSpEnq1auXrrrqKl199dXq1q2b7r33Xl1zzTWl9XIKueuuu3TXXXcpKytL69ev1/z587Vo0SL17NlT27Ztu+SFsfv27dO4ceO0dOnSQte0ZGZmXrL+zp07lZmZ6bwm589KetFx+/btnafTLlSSC3tnzJihxMRE1axZU82aNdONN96o++67T7Vr177ktnv37lW9evVUpkzBvyEbNGjgfP78fyMiIpyniM6rW7dukfP6+Pg4w/KFXNnfAQEBhU4thoaGqkaNGgWuUTo/btU1SYCrCDKAG7Vs2dJ511Lv3r3Vrl073X333frpp58UHBzsvAbjySefVEJCQpFznP/Hqn379tq9e7c+/PBDrVixQv/5z380a9YszZ071/mXs8PhkDGm0Bx5eXlWvDyn8uXLq0uXLurSpYt8fX21YMECrV+/Xh06dLjoNnl5eerSpYt+//13PfXUU4qNjVVQUJD279+v/v37l+j6lPz8fIWFhemNN94o8vmLXePjTn369NH111+vxYsXa8WKFXr66ac1ffp0ffDBB+revbvl9Yvi7+9fKBy5ur/Lli1b5NwXGy/q/zvAEwgygEXKli2r5ORkderUSS+88IJGjRrl/Kvd19dX8fHxl5yjUqVKGjBggAYMGKCTJ0+qffv2mjBhgjPIVKxYschD/Of/si/On//KvlzNmzfXggULdPDgwWLn/e6777Rjxw4tWLBA9913n3P8wruwLtVbnTp1tGrVKrVt27bAaZPSFhERoUcffVSPPvqoMjIy1LRpU02ZMsUZZC7Wf1RUlL799lvl5+cXCB7bt293Pn/+v2vWrFFOTk6BozK7du0qcY+u7G/AzrhGBrBQx44d1bJlS6WkpOj06dMKCwtTx44d9eKLLzr/4b/Qb7/95vz66NGjBZ4LDg5W3bp1lZub6xyrU6eOtm/fXmC7rVu36ssvv7xkb+ffZ6Qkb4iXk5Ojr7/+usjnPvnkE0l/XDtR3Lzn/7K/8C95Y4yeffbZEvfWp08f5eXlafLkyYW2OXfunEvvUnw58vLyCp2SCQsLU2RkZIHvS1BQUJGnym688UYdOnRIb7/9tnPs3Llzev755xUcHOw8opWQkKCzZ8/q5Zdfdq6Xn5/vvB26JFzZ34CdcUQGsNiIESN0xx13aP78+XrkkUc0e/ZstWvXTo0bN9aDDz6o2rVr6/Dhw/r666/166+/auvWrZKkhg0bqmPHjmrWrJkqVaqkTZs2OW/7PW/gwIF65plnlJCQoPvvv18ZGRmaO3euGjVqpKysrGL7atasmSRpzJgx6tu3r3x9fdWzZ88i30gtJydHbdq00XXXXadu3bqpZs2aOn78uJYsWaLPP/9cvXv3VpMmTST9Ea4qVKiguXPnKiQkREFBQWrVqpViY2NVp04dPfnkk9q/f7/Kly+v999/v8hrLc73NmTIECUkJKhs2bLq27evOnTooIcffljJyclKS0tT165d5evrq507d+rdd9/Vs88+q9tvv/3yvlElcOLECdWoUUO333674uLiFBwcrFWrVmnjxo2aOXNmgf7ffvttDR8+XC1atFBwcLB69uyphx56SC+++KL69++v1NRURUdH67333tOXX36plJQUhYSESPrjtGTLli31xBNPaNeuXYqNjdXSpUudt42X5GiaK/sbsDWP3S8FXEHO3369cePGQs/l5eWZOnXqmDp16phz584ZY4zZvXu3ue+++0x4eLjx9fU11atXNzfddJN57733nNv961//Mi1btjQVKlQwgYGBJjY21kyZMsWcOXOmwPyvv/66qV27tvHz8zPXXnutWb58eYluvzbGmMmTJ5vq1aubMmXKFHsr9tmzZ83LL79sevfubaKiooy/v78pV66cadKkiXn66adNbm5ugfU//PBD07BhQ+Pj41PgduEffvjBxMfHm+DgYFOlShXz4IMPmq1btxa6pfjcuXPmscceM1WrVjUOh6PQrdgvvfSSadasmQkMDDQhISGmcePGZuTIkebAgQNF9n/e+duvf/vttyKfj4qKKvb269zcXDNixAgTFxdnQkJCTFBQkImLizP/93//V2CbkydPmrvvvttUqFDBSCrwvTh8+LAZMGCAqVKlivHz8zONGzcu8lb13377zdx9990mJCTEhIaGmv79+5svv/zSSCpwO3RiYqIJCgoq8vWUdH9fbI4OHTqYRo0alWg/AZ7iMIYrtgDADpYsWaJbbrlFX3zxxUXfZRn4uyHIAIAXOnXqVIELmvPy8tS1a1dt2rRJhw4d8ujFzoA34RoZAPBCjz32mE6dOqXWrVsrNzdXH3zwgb766itNnTqVEANcgCMyAOCFFi1apJkzZ2rXrl06ffq06tatq0GDBhW42BsAQQYAANgY7yMDAABsiyADAABs64q/2Dc/P18HDhxQSEiI296SHQAAWMsYoxMnTigyMrLQZ4ld6IoPMgcOHFDNmjU93QYAALgM6enpRX66+3lXfJA5/5bf6enpKl++vIe7AQAAJZGVlaWaNWs6/x2/mCs+yJw/nVS+fHmCDAAANnOpy0K42BcAANgWQQYAANgWQQYAANgWQQYAANgWQQYAANgWQQYAANgWQQYAANgWQQYAANgWQQYAANgWQQYAANgWQQYAANgWQQYAANgWQQYAANgWQQYAANgWQQYAANiWj6cbAP4setTHls39y7Qels0NACh9HJEBAAC2RZABAAC2RZABAAC2RZABAAC2RZABAAC2RZABAAC2RZABAAC2RZABAAC2RZABAAC2RZABAAC2RZABAAC2RZABAAC2RZABAAC2RZABAAC2RZABAAC2RZABAAC2RZABAAC2RZABAAC2RZABAAC2RZABAAC2RZABAAC2RZABAAC2RZABAAC2RZABAAC2RZABAAC2RZABAAC25dEg89lnn6lnz56KjIyUw+HQkiVLCjxvjNG4ceMUERGhwMBAxcfHa+fOnZ5pFgAAeB2PBpns7GzFxcVp9uzZRT4/Y8YMPffcc5o7d67Wr1+voKAgJSQk6PTp06XcKQAA8EY+nizevXt3de/evcjnjDFKSUnRP//5T/Xq1UuStHDhQlWrVk1LlixR3759S7NVAADghbz2Gpk9e/bo0KFDio+Pd46FhoaqVatW+vrrrz3YGQAA8BYePSJTnEOHDkmSqlWrVmC8WrVq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AEBJlPj266VLlzq/Xr58uUJDQ52P8/LytHr1akVHR7u1OQAAgOKUOMj07t1bkuRwOAp98rSvr6+io6M1c+ZMtzYHAABQnBIHmfz8fElSTEyMNm7cqCpVqljWFAAAQEm4/M6+e/bssaIPAAAAl5UoyDz33HMlnnDIkCGX3QwAAIArShRkZs2aVaLJHA4HQQYAAJSaEgUZTicBAABvxDv7AgAA23L5Yt+BAwcW+/yrr7562c0AAAC4wuUgc+zYsQKPz549q23btun48eO64YYb3NYYAADApbgcZBYvXlxoLD8/X4MGDVKdOnXc0hQAAEBJuOUamTJlymj48OElvrsJAADAHdx2se/u3bt17tw5d00HAABwSS6fWho+fHiBx8YYHTx4UB9//HGhz2ACAACwkstBZsuWLQUelylTRlWrVtXMmTMveUcTAACAO7kcZNasWWNFHwAAAC5z+RqZU6dOKScnx/l47969SklJ0YoVK9zaGAAAwKW4HGR69eqlhQsXSpKOHz+uli1baubMmerVq5fmzJnj9gYBAAAuxuUgs3nzZl1//fWSpPfee0/h4eHau3evFi5c6NKnZAMAAPxVLl8jk5OTo5CQEEnSihUrdOutt6pMmTK67rrrtHfvXrc36M2iR31s2dy/TOtxxde8WL2/A098HwHgSuTyEZm6detqyZIlSk9P1/Lly9W1a1dJUkZGhsqXL+/2BgEAAC7G5SAzbtw4Pfnkk4qOjlbLli3VunVrSX8cnWnSpInbGwQAALgYl08t3X777WrXrp0OHjyouLg453jnzp11yy23uLU5AACA4lzWRxSEh4crJCREK1eu1KlTpyRJLVq0UGxsrFubAwAAKI7LQebo0aPq3LmzrrrqKt144406ePCgJOn+++/XE0884fYGAQAALsblIDNs2DD5+vpq3759KleunHP8zjvv1LJly9zaHAAAQHFcvkZmxYoVWr58uWrUqFFgvF69en+7268BAIBnuXxEJjs7u8CRmPN+//13+fv7u6UpAACAknA5yFx//fXOjyiQJIfDofz8fM2YMUOdOnVya3MAAADFcfnU0owZM9S5c2dt2rRJZ86c0ciRI/X999/r999/15dffmlFjwAAAEVy+YjM1VdfrR07dqhdu3bq1auXsrOzdeutt2rLli2qU6eOFT0CAAAUyaUjMmfPnlW3bt00d+5c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9lVOTo4iIiK0cuVKValSxZJa06dPl4+Pj4YMGWLJ/EXp1q2bbr31VsXExGj37t36xz/+oe7du+vrr79W2bJlS62PSyHIwK2SkpK0bds2y//arF+/vtLS0pSZman33ntPiYmJWrdunSVhJj09XY8//rhWrlxZ6C9rq1x4hOCaa65Rq1atFBUVpXfeeUf333+/JTXz8/PVvHlzTZ06VZLUpEkTbdu2TXPnzrU8yLzyyivq3r27W877F+edd97RG2+8oUWLFqlRo0ZKS0vT0KFDFRkZadlrfO211zRw4EBVr15dZcuWVdOmTXXXXXcpNTXVknp/Z2fPnlWfPn1kjNGcOXMsr9epUyelpaXpyJEjevnll9WnTx+tX79eYWFhbq2TmpqqZ599Vps3b7b0iOWf9e3b1/l148aNdc0116hOnTpau3atOnfuXGp9XAqnlixUpUoVlS1bVocPHy4wfvjwYYWHh3uoK+sMHjxYH330kdasWaMaNWpYWsvPz09169ZVs2bNlJycrLi4OD377LOW1EpNTVVGRoaaNm0qHx8f+fj4aN26dXruuefk4+OjvLw8S+peqEKFCrrqqqu0a9cuy2pEREQUCoINGjSw/JTW3r17tWrVKj3wwAOW1pGkESNGaNSoUerbt68aN26se++9V8OGDVNycrJlNevUqaN169bp5MmTSk9P14YNG3T27FnVrl3bsprnnf8983f4HXQ+xOzdu1crV660/GiMJAUFBalu3bq67rrr9Morr8jHx0evvPKK2+t8/vnnysjIUK1atZy/g/bu3asnnnhC0dHRbq93MbVr11aVKlUs/T10OQgyFvLz81OzZs20evVq51h+fr5Wr15t+fUcpckYo8GDB2vx4sX69NNPFRMTU+o95OfnKzc315K5O3furO+++05paWnOpXnz5urXr5/S0tJK5RDryZMntXv3bkVERFhWo23btoVum9+xY4eioqIsqylJ8+bNU1hYmHr06GFpHemPO1zKlCn4a69s2bLKz8+3vHZQUJAiIiJ07NgxLV++XL169bK8ZkxMjMLDwwv8DsrKytL69euvqN9B50PMzp07tWrVKlWuXNkjfVj1e+jee+/Vt99+W+B3UGRkpEaMGKHly5e7vd7F/Prrrzp69Kilv4cuB6eWLDZ8+HAlJiaqefPmatmypVJSUpSdna0BAwZYVvPkyZMF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F6dy5cqpXLlyBdY5deqURowYodtvv10xMTH69ddftXHjRud1OEXNUatWLfn5+en555/XI488om3btmny5MkF5o2KipLD4dBHH32kG2+8UYGBgQoJCdGTTz6pYcOGKT8/X+3atVNmZqa+/PJLlS9fXomJiX9lVwNwhQGAEjpx4oS55557TLly5Uy1atXMjBkzTIcOHczjjz/uXGf//v2ma9euJigoyNSrV8/873//M6GhoWbevHnGGGP27NljJJlFixaZli1bGj8/P9OwYUPz6aefOudYs2aNkWSOHTvmHHvkkUdM5cqVjSQzfvz4Qr3l5uaavn37mpo1axo/Pz8TGRlpBg8ebE6dOlXsHIsWLTLR0dHG39/ftG7d2ixdutRIMlu2bHFuN2nSJBMeHm4cDodJTEw0xhiTn59vUlJSTP369Y2vr6+pWrWqSUhIMOvWrfuruxmACxzG/OlkNgC4oGPHjrr22muVkpLi6VYA/A1xjQwAALAtggwAALAtTi0BAADb4ogMAACwLYIMAACwLYIMAACwLYIMAACwLYIMAACwLYIMAACwLYIMAACwLYIMAACwLYIMAACwrf8HDw/304wyzd0AAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "q = cirq.LineQubit.range(4)\n", "circuit = cirq.Circuit([cirq.H.on_each(*q), cirq.measure(*q)])\n", "result = cirq.Simulator().run(circuit, repetitions=100)\n", "_ = cirq.plot_state_histogram(result, plt.subplot())\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "da358e505449" }, "source": [ "### Plotting circuits with sparse output\n", "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:" ] }, { "cell_type": "markdown", "metadata": { "id": "3bed4f1d4222" }, "source": [ "#### Default plot\n", "The default call to `cirq.plot_state_histogram` would plot all possible output states (including 0's). This can get messy, especially if the output is sparse." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2025-05-30T09:12:18.611423Z", "iopub.status.busy": "2025-05-30T09:12:18.611189Z", "iopub.status.idle": "2025-05-30T09:12:18.957402Z", "shell.execute_reply": "2025-05-30T09:12:18.956715Z" }, "id": "789958187e7d" }, "outputs": [ { "data": { "image/png": "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wMrKyuBGRERE/07lemhpzJgxaNq0KWbOnImIiAicOnUKX331Fb766isAgEKhwOjRo/Hf//4X1apVg5eXFz766CO4uLigS5cu5Vk6ERERVQDlGmQCAgKwdetWTJo0CdOnT4eXlxcWLFiAvn37So8ZP348srOzMXjwYKSlpaF58+bYvXs3TExMyrFyIiIiqgjK9XtkXodX+T0yPNmXiIjo1ZDF98gQERER/RMMMkRERCRbDDJEREQkWwwyREREJFsMMkRERCRbDDJEREQkWwwyREREJFsMMkRERCRbDDJEREQkWwwyREREJFsMMkRERCRbDDJEREQkWwwyREREJFsMMkRERCRbDDJEREQkWwwyREREJFsMMkRERCRbDDJEREQkWwwyREREJFsMMkRERCRbDDJEREQkWwwyREREJFsMMkRERCRbDDJEREQkWwwyREREJFsMMkRERCRbDDJEREQkWwwyREREJFsMMkRERCRbDDJEREQkWwwyREREJFsMMkRERCRbDDJEREQkWwwyREREJFsMMkRERCRbDDJEREQkWwwyREREJFsMMkRERCRbDDJEREQkWwwyREREJFsMMkRERCRbDDJEREQkWwwyREREJFsMMkRERCRbDDJEREQkWwwyREREJFsMMkRERCRbDDJEREQkW+UaZKZOnQqFQmFw8/HxkfofPXqEqKgo2NnZwcLCAt27d8fdu3fLsWIiIiKqSMp9j0zt2rWRnJws3Y4cOSL1jRkzBjt37kRsbCzi4uKQlJSEbt26lWO1REREVJEYl3sBxsZwcnIq1J6eno4VK1YgJiYGbdq0AQCsWrUKNWvWxIkTJ9CkSZPXXSoRERFVMOW+RyYxMREuLi6oUqUK+vbti5s3bwIA4uPjkZeXh5CQEOmxPj4+8PDwwPHjx4udX25uLjIyMgxuRERE9O9UrkGmcePGWL16NXbv3o0lS5bg+vXraNGiBTIzM5GSkgK1Wg1ra2uDaRwdHZGSklLsPKOjo6HVaqWbu7v7K34WREREVF7K9dBSWFiY9P969eqhcePG8PT0xLfffgtTU9OXmuekSZMwduxY6X5GRgbDDBER0b9UuR9aKsja2hrVq1fH1atX4eTkhMePHyMtLc3gMXfv3i3ynBo9jUYDKysrgxsRERH9O1WoIJOVlYVr167B2dkZfn5+UKlUOHDggNR/+fJl3Lx5E4GBgeVYJREREVUU5Xpo6YMPPkB4eDg8PT2RlJSEKVOmwMjICG+++Sa0Wi0GDRqEsWPHwtbWFlZWVhgxYgQCAwN5xRIREREBKOcgc/v2bbz55pt48OAB7O3t0bx5c5w4cQL29vYAgPnz50OpVKJ79+7Izc1FaGgoFi9eXJ4lExERUQWiEEKI8i7iVcrIyIBWq0V6enqZny9TeeIPRbb/OatjmS6HiIjof01JP78r1DkyRERERKXBIENERESyxSBDREREssUgQ0RERLLFIENERESyxSBDREREssUgQ0RERLLFIENERESyxSBDREREssUgQ0RERLLFIENERESyxSBDREREssUgQ0RERLLFIENERESyxSBDREREssUgQ0RERLLFIENERESyxSBDREREssUgQ0RERLLFIENERESyxSBDREREssUgQ0RERLLFIENERESyxSBDREREssUgQ0RERLLFIENERESyxSBDREREssUgQ0RERLLFIENERESyxSBDREREssUgQ0RERLLFIENERESyxSBDREREssUgQ0RERLLFIENERESyxSBDREREssUgQ0RERLLFIENERESyxSBDREREssUgQ0RERLLFIENERESyxSBDREREssUgQ0RERLLFIENERESyxSBDREREssUgQ0RERLLFIENERESyxSBDREREslVhgsysWbOgUCgwevRoqe3Ro0eIioqCnZ0dLCws0L17d9y9e7f8iiQiIqIKpUIEmdOnT2PZsmWoV6+eQfuYMWOwc+dOxMbGIi4uDklJSejWrVs5VUlEREQVTbkHmaysLPTt2xfLly+HjY2N1J6eno4VK1Zg3rx5aNOmDfz8/LBq1SocO3YMJ06cKMeKiYiIqKIo9yATFRWFjh07IiQkxKA9Pj4eeXl5Bu0+Pj7w8PDA8ePHi51fbm4uMjIyDG5ERET072RcngvftGkTzp49i9OnTxfqS0lJgVqthrW1tUG7o6MjUlJSip1ndHQ0pk2bVtalEhER/c+rPPGHQm1/zupYDpX8n3LbI3Pr1i2MGjUKGzZsgImJSZnNd9KkSUhPT5dut27dKrN5ExERUcVSbkEmPj4e9+7dQ8OGDWFsbAxjY2PExcVh4cKFMDY2hqOjIx4/foy0tDSD6e7evQsnJ6di56vRaGBlZWVwIyIion+ncju0FBwcjF9++cWgbcCAAfDx8cGECRPg7u4OlUqFAwcOoHv37gCAy5cv4+bNmwgMDCyPkomIiKiCKbcgY2lpiTp16hi0mZubw87OTmofNGgQxo4dC1tbW1hZWWHEiBEIDAxEkyZNyqNkIiIiqmDK9WTfF5k/fz6USiW6d++O3NxchIaGYvHixeVdFhEREVUQFSrIHDp0yOC+iYkJFi1ahEWLFpVPQURERFShlfv3yBARERG9LAYZIiIiki0GGSIiIpKtUgeZtWvXIjc3t1D748ePsXbt2jIpioiIiKgkSh1kBgwYgPT09ELtmZmZGDBgQJkURURERFQSpQ4yQggoFIpC7bdv34ZWqy2TooiIiIhKosSXX/v6+kKhUEChUCA4OBjGxv83aX5+Pq5fv4727du/kiKJiIiIilLiINOlSxcAQEJCAkJDQ2FhYSH1qdVqVK5cWfopASIiIqLXocRBZsqUKQCAypUro1evXmX6i9VEREREL6PU3+wbGRkJ4OlVSvfu3YNOpzPo9/DwKJvKiIiIiF6g1EEmMTERAwcOxLFjxwza9ScB5+fnl1lxRERERM9T6iDTv39/GBsb4/vvv4ezs3ORVzARERERvQ6lDjIJCQmIj4+Hj4/Pq6iHiIiIqMRK/T0ytWrVwv37919FLURERESlUuog8+mnn2L8+PE4dOgQHjx4gIyMDIMbERER0etS6kNLISEhAIDg4GCDdp7sS0RERK9bqYPMwYMHX0UdRERERKVW6iATFBT0KuogIiIiKrVSB5nDhw8/t79ly5YvXQwRERFRaZQ6yLRq1apQW8HvkuE5MkRERPS6lPqqpdTUVIPbvXv3sHv3bgQEBGDv3r2vokYiIiKiIpV6j4xWqy3U1rZtW6jVaowdOxbx8fFlUhgRERHRi5R6j0xxHB0dcfny5bKaHREREdELlXqPzIULFwzuCyGQnJyMWbNmoUGDBmVVFxEREdELlTrINGjQAAqFAkIIg/YmTZpg5cqVZVYYERER0YuUOshcv37d4L5SqYS9vT1MTEzKrCgiIiKikih1kPH09HwVdRARERGV2kud7BsXF4fw8HBUrVoVVatWRadOnfDzzz+XdW1EREREz1XqILN+/XqEhITAzMwMI0eOxMiRI2Fqaorg4GDExMS8ihqJiIiIilTqQ0uffPIJZs+ejTFjxkhtI0eOxLx58zBjxgz06dOnTAskIiIiKk6p98j88ccfCA8PL9TeqVOnQicCExEREb1KpQ4y7u7uOHDgQKH2/fv3w93dvUyKIiIiIiqJUh9aev/99zFy5EgkJCSgadOmAICjR49i9erV+Pzzz8u8QCIiIqLilDrIDBs2DE5OTpg7dy6+/fZbAEDNmjXxzTffoHPnzmVeIBEREVFxSh1kAKBr167o2rVrWddCREREVCqlPkfm9OnTOHnyZKH2kydP4syZM2VSFBEREVFJlDrIREVF4datW4Xa79y5g6ioqDIpioiIiKgkSh1kfvvtNzRs2LBQu6+vL3777bcyKYqIiIioJEodZDQaDe7evVuoPTk5GcbGL3XKDREREdFLKXWQadeuHSZNmoT09HSpLS0tDR9++CHatm1bpsURERERPU+pd6HMmTMHLVu2hKenJ3x9fQEACQkJcHR0xLp168q8QCIiIqLilDrIuLq64sKFC9iwYQPOnz8PU1NTDBgwAG+++SZUKtWrqJGIiIioSC91Uou5uTkGDx5c1rUQERERlUqpz5EhIiIiqigYZIiIiEi2GGSIiIhIthhkiIiISLZKHWSqVKmCBw8eFGpPS0tDlSpVSjWvJUuWoF69erCysoKVlRUCAwPx448/Sv2PHj1CVFQU7OzsYGFhge7duxf5ZXxERET0v6nUQebPP/9Efn5+ofbc3FzcuXOnVPNyc3PDrFmzEB8fjzNnzqBNmzbo3LkzLl68CAAYM2YMdu7cidjYWMTFxSEpKQndunUrbclERET0L1Xiy6937Ngh/X/Pnj3QarXS/fz8fBw4cACVK1cu1cLDw8MN7n/yySdYsmQJTpw4ATc3N6xYsQIxMTFo06YNAGDVqlWoWbMmTpw4gSZNmpRqWURERPTvU+Ig06VLFwCAQqFAZGSkQZ9KpULlypUxd+7cly4kPz8fsbGxyM7ORmBgIOLj45GXl4eQkBDpMT4+PvDw8MDx48cZZIiIiKjkQUan0wEAvLy8cPr0aVSqVKlMCvjll18QGBiIR48ewcLCAlu3bkWtWrWQkJAAtVoNa2trg8c7OjoiJSWl2Pnl5uYiNzdXup+RkVEmdRIREVHFU+pv9r1+/XqZFlCjRg0kJCQgPT0dmzdvRmRkJOLi4l56ftHR0Zg2bVoZVkhEREQVVYmCzMKFC0s8w5EjR5aqALVajapVqwIA/Pz8cPr0aXz++efo1asXHj9+jLS0NIO9Mnfv3oWTk1Ox85s0aRLGjh0r3c/IyIC7u3upaiIiIiJ5KFGQmT9/folmplAoSh1knqXT6ZCbmws/Pz+oVCocOHAA3bt3BwBcvnwZN2/eRGBgYLHTazQaaDSaf1QDERERyUOJgkxZH07SmzRpEsLCwuDh4YHMzEzExMTg0KFD0lVRgwYNwtixY2FrawsrKyuMGDECgYGBPNGXiIiIALzkr1+XlXv37qFfv35ITk6GVqtFvXr1sGfPHrRt2xbA0z1BSqUS3bt3R25uLkJDQ7F48eLyLJmIiIgqkFIHmYEDBz63f+XKlSWe14oVK57bb2JigkWLFmHRokUlnicRERH97yh1kElNTTW4n5eXh19//RVpaWnSF9cRERERvQ6lDjJbt24t1KbT6TBs2DB4e3uXSVFEREREJVEmv36tVCoxduzYEl/dRERERFQWyiTIAMC1a9fw5MmTspodERER0QuV+tBSwS+bAwAhBJKTk/HDDz8U+g0mIiIiolep1EHm3LlzBveVSiXs7e0xd+7cF17RRERERFSWSh1kDh48+CrqICIiIiq1Up8j8/DhQ+Tk5Ej3b9y4gQULFmDv3r1lWhgRERHRi5Q6yHTu3Blr164FAKSlpaFRo0aYO3cuOnfujCVLlpR5gURERETFKXWQOXv2LFq0aAEA2Lx5M5ycnHDjxg2sXbu2VL+STURERPRPlTrI5OTkwNLSEgCwd+9edOvWDUqlEk2aNMGNGzfKvEAiIiKi4pQ6yFStWhXbtm3DrVu3sGfPHrRr1w7A0x+AtLKyKvMCiYiIiIpT6iDz8ccf44MPPkDlypXRqFEjBAYGAni6d8bX17fMCyQiIiIqTqkvv+7RoweaN2+O5ORk1K9fX2oPDg5G165dy7Q4IiIioud5qZ8ocHJygqWlJfbt24eHDx8CAAICAuDj41OmxRERERE9T6mDzIMHDxAcHIzq1aujQ4cOSE5OBgAMGjQI77//fpkXSERERFScUgeZMWPGQKVS4ebNmzAzM5Pae/Xqhd27d5dpcURERETPU+pzZPbu3Ys9e/bAzc3NoL1atWq8/JqIiIheq1LvkcnOzjbYE6P3999/Q6PRlElRRERERCVR6iDTokUL6ScKAEChUECn02H27Nlo3bp1mRZHRERE9DylPrQ0e/ZsBAcH48yZM3j8+DHGjx+Pixcv4u+//8bRo0dfRY1ERERERSr1Hpk6dergypUraN68OTp37ozs7Gx069YN586dg7e396uokYiIiKhIpdojk5eXh/bt22Pp0qWYPHnyq6qJiIiIqERKtUdGpVLhwoULr6oWIiIiolIp9aGlt956CytWrHgVtRARERGVSqlP9n3y5AlWrlyJ/fv3w8/PD+bm5gb98+bNK7PiiIiIiJ6n1EHm119/RcOGDQEAV65cMehTKBRlUxURERFRCZQ6yBw8ePBV1EFERERUai/169dEREREFQGDDBEREckWgwwRERHJFoMMERERyRaDDBEREckWgwwRERHJFoMMERERyRaDDBEREckWgwwRERHJFoMMERERyRaDDBEREckWgwwRERHJFoMMERERyRaDDBEREckWgwwRERHJFoMMERERyRaDDBEREckWgwwRERHJFoMMERERyRaDDBEREclWuQaZ6OhoBAQEwNLSEg4ODujSpQsuX75s8JhHjx4hKioKdnZ2sLCwQPfu3XH37t1yqpiIiIgqknINMnFxcYiKisKJEyewb98+5OXloV27dsjOzpYeM2bMGOzcuROxsbGIi4tDUlISunXrVo5VExERUUVhXJ4L3717t8H91atXw8HBAfHx8WjZsiXS09OxYsUKxMTEoE2bNgCAVatWoWbNmjhx4gSaNGlSHmUTERFRBVGhzpFJT08HANja2gIA4uPjkZeXh5CQEOkxPj4+8PDwwPHjx4ucR25uLjIyMgxuRERE9O9UYYKMTqfD6NGj0axZM9SpUwcAkJKSArVaDWtra4PHOjo6IiUlpcj5REdHQ6vVSjd3d/dXXToRERGVkwoTZKKiovDrr79i06ZN/2g+kyZNQnp6unS7detWGVVIREREFU25niOjN3z4cHz//fc4fPgw3NzcpHYnJyc8fvwYaWlpBntl7t69CycnpyLnpdFooNFoXnXJREREVAGU6x4ZIQSGDx+OrVu34qeffoKXl5dBv5+fH1QqFQ4cOCC1Xb58GTdv3kRgYODrLpeIiIgqmHLdIxMVFYWYmBhs374dlpaW0nkvWq0Wpqam0Gq1GDRoEMaOHQtbW1tYWVlhxIgRCAwM5BVLREREVL5BZsmSJQCAVq1aGbSvWrUK/fv3BwDMnz8fSqUS3bt3R25uLkJDQ7F48eLXXCkRERFVROUaZIQQL3yMiYkJFi1ahEWLFr2GioiIiEhOKsxVS0RERESlxSBDREREssUgQ0RERLLFIENERESyxSBDREREssUgQ0RERLLFIENERESyxSBDREREssUgQ0RERLLFIENERESyxSBDREREssUgQ0RERLLFIENERESyxSBDREREssUgQ0RERLLFIENERESyxSBDREREssUgQ0RERLLFIENERESyxSBDREREssUgQ0RERLLFIENERESyxSBDREREssUgQ0RERLLFIENERESyxSBDREREssUgQ0RERLLFIENERESyxSBDREREssUgQ0RERLLFIENERESyxSBDREREssUgQ0RERLLFIENERESyxSBDREREssUgQ0RERLLFIENERESyxSBDREREssUgQ0RERLLFIENERESyxSBDREREssUgQ0RERLLFIENERESyxSBDREREssUgQ0RERLLFIENERESyxSBDREREssUgQ0RERLJVrkHm8OHDCA8Ph4uLCxQKBbZt22bQL4TAxx9/DGdnZ5iamiIkJASJiYnlUywRERFVOOUaZLKzs1G/fn0sWrSoyP7Zs2dj4cKFWLp0KU6ePAlzc3OEhobi0aNHr7lSIiIiqoiMy3PhYWFhCAsLK7JPCIEFCxbgP//5Dzp37gwAWLt2LRwdHbFt2zb07t37dZZKREREFVCFPUfm+vXrSElJQUhIiNSm1WrRuHFjHD9+vNjpcnNzkZGRYXAjIiKif6cKG2RSUlIAAI6Ojgbtjo6OUl9RoqOjodVqpZu7u/srrZOIiIjKT4UNMi9r0qRJSE9Pl263bt0q75KIiIjoFamwQcbJyQkAcPfuXYP2u3fvSn1F0Wg0sLKyMrgRERHRv1OFDTJeXl5wcnLCgQMHpLaMjAycPHkSgYGB5VgZERERVRTletVSVlYWrl69Kt2/fv06EhISYGtrCw8PD4wePRr//e9/Ua1aNXh5eeGjjz6Ci4sLunTpUn5FExERUYVRrkHmzJkzaN26tXR/7NixAIDIyEisXr0a48ePR3Z2NgYPHoy0tDQ0b94cu3fvhomJSXmVTERERBVIuQaZVq1aQQhRbL9CocD06dMxffr011gVERERyUWFPUeGiIiI6EUYZIiIiEi2GGSIiIhIthhkiIiISLYYZIiIiEi2GGSIiIhIthhkiIiISLYYZIiIiEi2GGSIiIhIthhkiIiISLYYZIiIiEi2GGSIiIhIthhkiIiISLYYZIiIiEi2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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "q = cirq.LineQubit.range(6)\n", "circuit = cirq.Circuit(\n", " [\n", " cirq.H(q[0]),\n", " [cirq.CNOT(q[0], q[i]) for i in range(1, 6, 1)],\n", " cirq.measure(*q, key='measure_all'),\n", " ]\n", ")\n", "result = cirq.Simulator().run(circuit, repetitions=100)\n", "_ = cirq.plot_state_histogram(result, plt.subplot())\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "d7c05a17460b" }, "source": [ "#### Sparse plots\n", "To plot only non-zero entries in the histogram, you can first compute a histogram using `result.histogram()` and pass its result to `cirq.plot_state_histogram`" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2025-05-30T09:12:18.960222Z", "iopub.status.busy": "2025-05-30T09:12:18.959975Z", "iopub.status.idle": "2025-05-30T09:12:19.052358Z", "shell.execute_reply": "2025-05-30T09:12:19.051758Z" }, "id": "2405b58effd0" }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjIAAAHHCAYAAACle7JuAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAANNRJREFUeJzt3XlYFeX///HXQVZZDooCLii4hbaY4YaaK0pWpmnZYp+QbPODWpKWfvvkmmKWSQtp+jWXkm+lfTTb1KQ0MzXFtKxcszAFXBJQVFCY3x9dnl8nQDkInjP2fFzXXHHue+ae9xlCXszcM8diGIYhAAAAE3JzdgEAAAAVRZABAACmRZABAACmRZABAACmRZABAACmRZABAACmRZABAACmRZABAACmRZABAACmRZAB/iEsFosmTJjg7DJMh+MGuDaCDFAJFixYIIvFYlvc3d1Vr149DR48WIcOHXJ2eaX65ptvNGHCBOXk5JR7m48++khdunRRcHCwqlevrkaNGmngwIFauXKlbZ3Dhw9rwoQJ2r59e4Vr+/TTT6skPEyYMEEWi0XHjh0rtT88PFy33377Ze8nNTVVycnJlz0OgEsjyACVaNKkSXr77bc1e/Zs9e7dW++88466dOmis2fPOru0Er755htNnDix3EHmpZde0h133CGLxaKxY8dq5syZGjBggPbu3at3333Xtt7hw4c1ceLEyw4yEydOrPD2lenMmTP6z3/+49A2BBngynF3dgHA1aR3795q3bq1JOnhhx9WrVq19MILL2jFihUaOHCgk6uruPPnz2vy5Mnq2bOnVq9eXaL/yJEjTqjqyvD29nZ2CQ7Lz8+Xr6+vs8sArgjOyABV6Oabb5Yk7d+/3659165duuuuu1SzZk15e3urdevWWrFihd06586d08SJE9W0aVN5e3srKChInTp10ueff25bp2vXruratWuJ/Q4ePFjh4eFl1jVhwgSNHj1akhQREWG7JPbrr7+Wuv6xY8eUl5enjh07ltofHBwsSVq7dq3atGkjSYqPj7eNu2DBAknS+vXrdffdd6tBgwby8vJSWFiYRo4cqTNnztjVnpKSIkl2l+suKC4uVnJysq699lp5e3srJCREjz32mE6cOFHm+70cf58jc/LkST355JMKDw+Xl5eXgoOD1bNnT23btk3Sn9+TTz75RL/99put9r9+L44cOaIhQ4YoJCRE3t7eatmypRYuXFhiv8ePH9e//vUvBQQEKDAwUHFxcdqxY4fd8ZT+PF5+fn7av3+/br31Vvn7+2vQoEGSyne8/zpGRkaGbr/9dvn5+alevXq278MPP/yg7t27y9fXVw0bNlRqamolHV3g8nFGBqhCF4JBjRo1bG0//vijOnbsqHr16mnMmDHy9fXV+++/r379+umDDz7QnXfeKenPsJGUlKSHH35Ybdu2VV5enrZu3apt27apZ8+el1VX//79tWfPHv3f//2fZs6cqVq1akmSateuXer6wcHB8vHx0UcffaThw4erZs2apa7XvHlzTZo0SePGjdOjjz5qC3IdOnSQJC1ZskSnT5/W0KFDFRQUpG+//Vavvfaafv/9dy1ZskSS9Nhjj+nw4cP6/PPP9fbbb5fYx2OPPaYFCxYoPj5eI0aM0IEDB/T666/ru+++04YNG+Th4XHJ9//HH3+U2l5cXHzJbR9//HEtXbpUw4YNU4sWLXT8+HF9/fXX+vnnn3XTTTfp2WefVW5urn7//XfNnDlTkuTn5yfpz8tUXbt21b59+zRs2DBFRERoyZIlGjx4sHJycvTEE0/Y6ujTp4++/fZbDR06VJGRkfrwww8VFxdXak3nz59XbGysOnXqpJdeeknVq1eXVL7jfUFRUZF69+6tzp07a/r06Vq8eLGGDRsmX19fPfvssxo0aJD69++v2bNn68EHH1R0dLQiIiIuebyAKmcAuGzz5883JBlr1qwxjh49ahw8eNBYunSpUbt2bcPLy8s4ePCgbd0ePXoY119/vXH27FlbW3FxsdGhQwejadOmtraWLVsat91220X326VLF6NLly4l2uPi4oyGDRvatUkyxo8fb3v94osvGpKMAwcOlOs9jhs3zpBk+Pr6Gr179zamTJlipKenl1hvy5YthiRj/vz5JfpOnz5doi0pKcmwWCzGb7/9ZmtLSEgwSvvnaf369YYkY/HixXbtK1euLLX978aPH29Iuujy92P+9+NmtVqNhISEi+7ntttuK3H8DcMwkpOTDUnGO++8Y2srLCw0oqOjDT8/PyMvL88wDMP44IMPDElGcnKybb2ioiKje/fuJY5tXFycIckYM2ZMif2V93hfGGPq1Km2thMnThg+Pj6GxWIx3n33XVv7rl27ShwTwJm4tARUopiYGNWuXVthYWG66667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NiwWS4lbsefMmWNERUUZPj4+hr+/v3H99dcbTz/9tHH48OFS67/gwu3XR48eLbW/YcOGF739uqCgwBg9erTRsmVLw9/f3/D19TVatmxpvPHGG3bbnDp1yrj//vuNwMBAQ5Ld9yI7O9uIj483atWqZXh6ehrXX399qbeqHz161Lj//vsNf39/w2q1GoMHDzY2bNhgSLK7HTouLs7w9fUt9f2U93iXNUaXLl2Ma6+9tlzHCXAWi2EwYwsAzGD58uW688479fXXX5f5lGXgn4YgAwAu6MyZM3YTmouKitSrVy9t3bpVWVlZTp3sDLgS5sgAgAsaPny4zpw5o+joaBUUFOi///2vvvnmG02dOpUQA/wFZ2QAwAWlpqZqxowZ2rdvn86ePasmTZpo6NChdpO9ARBkAACAifEcGQAAYFoEGQAAYFpX/WTf4uJiHT58WP7+/pX2SHYAAFC1DMPQyZMnVbdu3RKfJfZXV32QOXz4sMLCwpxdBgAAqICDBw+W+unuF1z1QebCI78PHjyogIAAJ1cDAADKIy8vT2FhYbbf42W56oPMhctJAQEBBBkAAEzmUtNCmOwLAABMiyADAABMiyADAABMiyADAABMiyADAABMiyADAABMiyADAABMiyADAABMiyADAABMiyADAABMy+lB5tChQ3rggQcUFBQkHx8fXX/99dq6daut3zAMjRs3TnXq1JGPj49iYmK0d+9eJ1YMAABchVODzIkTJ9SxY0d5eHjos88+008//aQZM2aoRo0atnWmT5+uV199VbNnz9bmzZvl6+ur2NhYnT171omVAwAAV2AxDMNw1s7HjBmjDRs2aP369aX2G4ahunXr6qmnntKoUaMkSbm5uQoJCdGCBQt07733XnIfeXl5slqtys3N5UMjAQAwifL+/nbqGZkVK1aodevWuvvuuxUcHKxWrVpp7ty5tv4DBw4oKytLMTExtjar1ap27dpp48aNzigZAAC4EKcGmV9++UWzZs1S06ZNtWrVKg0dOlQjRozQwoULJUlZWVmSpJCQELvtQkJCbH1/V1BQoLy8PLsFAABcndydufPi4mK1bt1aU6dOlSS1atVKO3fu1OzZsxUXF1ehMZOSkjRx4sTKLLNM4WM+uSL7Aczq12m3ObsEAFc5p56RqVOnjlq0aGHX1rx5c2VkZEiSQkNDJUnZ2dl262RnZ9v6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ub2Xl5e8vLwuqwYAAGAO5QoylX056YKxY8eqd+/eatCggU6ePKnU1FStXbvWdlfUkCFDlJiYqJo1ayogIEDDhw9XdHQ0E30BAICkCn76dWU5cuSIHnzwQWVmZspqteqGG27QqlWr1LNnT0l/nglyc3PTgAEDVFBQoNjYWL3xxhvOLBkAALgQh4PMQw89dNH+t956q9xjzZs376L93t7eSklJUUpKSrnHBAAA/xwOB5kTJ07YvT537px27typnJwc24PrAAAArgSHg8yyZctKtBUXF2vo0KFq3LhxpRQFAABQHpXy6ddubm5KTEws991NAAAAlaFSgowk7d+/X+fPn6+s4QAAAC7J4UtLf33YnCQZhqHMzEx98sknJT6DCQAAoCo5HGS+++47u9dubm6qXbu2ZsyYcck7mgAAACqTw0Hmyy+/rIo6AAAAHObwHJkzZ87o9OnTtte//fabkpOTtXr16kotDAAA4FIcDjJ9+/bVokWLJEk5OTlq27atZsyYob59+2rWrFmVXiAAAEBZHA4y27Zt08033yxJWrp0qUJDQ/Xbb79p0aJFDn1KNgAAwOVyOMicPn1a/v7+kqTVq1erf//+cnNzU/v27fXbb79VeoEAAABlcTjINGnSRMuXL9fBgwe1atUq9erVS9KfHwAZEBBQ6QUCAACUxeEgM27cOI0aNUrh4eFq27atoqOjJf15dqZVq1aVXiAAAEBZHL79+q677lKnTp2UmZmpli1b2tp79OihO++8s1KLAwAAuJgKfURBaGio/P399fnnn+vMmTOSpDZt2igyMrJSiwMAALgYh4PM8ePH1aNHDzVr1ky33nqrMjMzJUlDhgzRU089VekFAgAAlMXhIDNy5Eh5eHgoIyND1atXt7Xfc889WrlyZaUWBwAAcDEOz5FZvXq1Vq1apfr169u1N23alNuvAQDAFeXwGZn8/Hy7MzEX/PHHH/Ly8qqUogAAAMrD4SBz88032z6iQJIsFouKi4s1ffp0devWrVKLAwAAuBiHLy1Nnz5dPXr00NatW1VYWKinn35aP/74o/744w9t2LChKmoEAAAolcNnZK677jrt2bNHnTp1Ut++fZWfn6/+/fvru+++U+PGjauiRgAAgFI5dEbm3LlzuuWWWzR79mw9++yzVVUTAABAuTh0RsbDw0Pff/99VdUCAADgEIcvLT3wwAOa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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "histogram = result.histogram(key='measure_all')\n", "_ = cirq.plot_state_histogram(histogram, plt.subplot())\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "7dab59bc0b62" }, "source": [ "### Histogram for processed results.\n", "`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", "\n", "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:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "execution": { "iopub.execute_input": "2025-05-30T09:12:19.055148Z", "iopub.status.busy": "2025-05-30T09:12:19.054888Z", "iopub.status.idle": "2025-05-30T09:12:19.148707Z", "shell.execute_reply": "2025-05-30T09:12:19.148067Z" }, "id": "64d8a54596bc" }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjIAAAHHCAYAAACle7JuAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAANIJJREFUeJzt3XtcVXW+//H3Jq5yDVPwAuI1tAsqpqLmFSNrHC90M5uQtIuDOklaerqoOYXjZFozpp2OiZacGnUyy0YtSypTB1GsLE09ppZc8gKICiJ8f3/0cP/aAco2cO/lvJ6Px3rE+q7v+u7PXoS8Weu71rYZY4wAAAAsyMPVBQAAAFwqggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggzwH8Jms2n69OmuLsNyOG6AeyPIAHUgPT1dNpvNvnh6eqpZs2YaNWqUfvzxR1eXV60vvvhC06dPV2FhYa33ee+999SnTx81btxYDRo0UKtWrXTXXXdp7dq19j5HjhzR9OnTlZOTc8m1ffDBB/USHqZPny6bzaajR49Wuz0qKkq/+93vfvPrZGRkaN68eb95HAAXR5AB6tCzzz6rN954QwsXLtSgQYP05ptvqk+fPiotLXV1aVV88cUXmjFjRq2DzAsvvKDf//73stlsmjp1qubOnavExETt3btXb731lr3fkSNHNGPGjN8cZGbMmHHJ+9elM2fO6KmnnnJqH4IMcPl4uroA4EoyaNAgdenSRZI0ZswYXXPNNfrLX/6i1atX66677nJxdZfu3LlzmjlzpgYOHKj169dX2V5QUOCCqi4PX19fV5fgtFOnTsnf39/VZQCXBWdkgHp08803S5L279/v0L57927dcccdCg0Nla+vr7p06aLVq1c79CkvL9eMGTPUtm1b+fr6qmHDhurVq5c+/PBDe5++ffuqb9++VV531KhRioqKqrGu6dOna/LkyZKkli1b2i+Jff/999X2P3r0qIqLi9WzZ89qtzdu3FiStHHjRt10002SpOTkZPu46enpkqTPPvtMd955pyIjI+Xj46OIiAhNnDhRZ86ccah9/vz5kuRwue68yspKzZs3T9ddd518fX0VFhamhx9+WCdOnKjx/f4Wv54jc/LkST366KOKioqSj4+PGjdurIEDB2r79u2Sfv6erFmzRgcPHrTX/svvRUFBgUaPHq2wsDD5+voqJiZGS5YsqfK6x44d0x/+8AcFBQUpJCRESUlJ2rlzp8PxlH4+XgEBAdq/f79uu+02BQYGauTIkZJqd7x/OcahQ4f0u9/9TgEBAWrWrJn9+/DVV1+pf//+8vf3V4sWLZSRkVFHRxf47TgjA9Sj88Hg6quvtrft2rVLPXv2VLNmzTRlyhT5+/vrH//4h4YOHaqVK1dq2LBhkn4OG2lpaRozZoy6du2q4uJibdu2Tdu3b9fAgQN/U13Dhw/Xd999p//93//V3Llzdc0110iSGjVqVG3/xo0by8/PT++9957Gjx+v0NDQavu1b99ezz77rJ555hk99NBD9iDXo0cPSdLy5ct1+vRpjR07Vg0bNtS///1v/e1vf9MPP/yg5cuXS5IefvhhHTlyRB9++KHeeOONKq/x8MMPKz09XcnJyZowYYIOHDigv//979qxY4c2bdokLy+vi77/48ePV9teWVl50X0feeQRrVixQuPGjVOHDh107Ngxff755/r222/VuXNnPfnkkyoqKtIPP/yguXPnSpICAgIk/XyZqm/fvtq3b5/GjRunli1bavny5Ro1apQKCwv1pz/9yV7H4MGD9e9//1tjx45VdHS03n33XSUlJVVb07lz55SQkKBevXrphRdeUIMGDSTV7nifV1FRoUGDBql3796aPXu2li1bpnHjxsnf319PPvmkRo4cqeHDh2vhwoW6//77FRcXp5YtW170eAH1zgD4zRYvXmwkmY8++sj89NNP5vDhw2bFihWmUaNGxsfHxxw+fNjed8CAAeaGG24wpaWl9rbKykrTo0cP07ZtW3tbTEyMuf322y/4un369DF9+vSp0p6UlGRatGjh0CbJTJs2zb7+17/+1UgyBw4cqNV7fOaZZ4wk4+/vbwYNGmSee+45k52dXaVfVlaWkWQWL15cZdvp06ertKWlpRmbzWYOHjxob0tJSTHV/fP02WefGUlm2bJlDu1r166ttv3Xpk2bZiRdcPn1Mf/1cQsODjYpKSkXfJ3bb7+9yvE3xph58+YZSebNN9+0t509e9bExcWZgIAAU1xcbIwxZuXKlUaSmTdvnr1fRUWF6d+/f5Vjm5SUZCSZKVOmVHm92h7v82M8//zz9rYTJ04YPz8/Y7PZzFtvvWVv3717d5VjArgSl5aAOhQfH69GjRopIiJCd9xxh/z9/bV69Wo1b95c0s9nAj7++GPdddddOnnypI4ePaqjR4/q2LFjSkhI0N69e+13OYWEhGjXrl3au3evK9+S3YwZM5SRkaFOnTpp3bp1evLJJxUbG6vOnTvr22+/rdUYfn5+9q9PnTqlo0ePqkePHjLGaMeOHRfdf/ny5QoODtbAgQPtx+7o0aOKjY1VQECAPvnkk1rVsXLlSn344YdVlrCwsIvuGxISoq1bt+rIkSO1eq1f+uCDDxQeHq4RI0bY27y8vDRhwgSVlJQoMzNTkrR27Vp5eXnpwQcftPfz8PBQSkpKjWOPHTu2Spuzx3vMmDH2r0NCQnTttdfK39/fYX7Xtddeq5CQEP3f//1fLd81UL+4tATUofnz56tdu3YqKirS66+/rk8//VQ+Pj727fv27ZMxRk8//bSefvrpascoKChQs2bN9Oyzz2rIkCFq166drr/+et166636wx/+oBtvvPFyvZ0qRowYoREjRqi4uFhbt25Venq6MjIyNHjwYH399dcXnRh76NAhPfPMM1q9enWVOS1FRUUXff29e/eqqKjIPifn12o76bh37972y2m/VJuJvbNnz1ZSUpIiIiIUGxur2267Tffff79atWp10X0PHjyotm3bysPD8W/I9u3b27ef/2+TJk3sl4jOa9OmTbXjenp62sPyLzlzvH19fatcWgwODlbz5s0d5iidb6+vOUmAswgyQB3q2rWr/a6loUOHqlevXrr33nu1Z88eBQQE2OdgTJo0SQkJCdWOcf6XVe/evbV//369++67Wr9+vf7nf/5Hc+fO1cKFC+1/OdtsNhljqoxRUVFRH2/PLigoSAMHDtTAgQPl5eWlJUuWaOvWrerTp0+N+1RUVGjgwIE6fvy4nnjiCUVHR8vf318//vijRo0aVav5KZWVlWrcuLGWLVtW7faa5vjUpbvuuks333yz3nnnHa1fv15//etf9Ze//EX//Oc/NWjQoHp//er4+PhUCUfOHu+rrrqq2rFraq/u/zvAFQgyQD256qqrlJaWpn79+unvf/+7pkyZYv+r3cvLS/Hx8RcdIzQ0VMnJyUpOTlZJSYl69+6t6dOn24PM1VdfXe0p/vN/2V/Ir//KvlRdunTRkiVLlJube8Fxv/rqK3333XdasmSJ7r//fnv7L+/CulhtrVu31kcffaSePXs6XDa53Jo0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uBmXnpFJSUlRRkaG3n33XQUGBtrnvQQHB8vPz0/BwcEaPXq0UlNTFRoaqqCgII0fP15xcXHcsQQAAFwbZBYsWCBJ6tu3r0P74sWLNWrUKEnS3Llz5eHhocTERJWVlSkhIUGvvPLKZa4UAAC4I5cGGWPMRfv4+vpq/vz5mj9//mWoCAAAWInb3LUEAADgLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLIIMAACwLJcGmU8//VSDBw9W06ZNZbPZtGrVKoftxhg988wzatKkifz8/BQfH6+9e/e6plgAAOB2XBpkTp06pZiYGM2fP7/a7bNnz9bLL7+shQsXauvWrfL391dCQoJKS0svc6UAAMAdebryxQcNGqRBgwZVu80Yo3nz5umpp57SkCFDJElLly5VWFiYVq1apXvuuedylgoAANyQ286ROXDggPLy8hQfH29vCw4OVrdu3bR58+Ya9ysrK1NxcbHDAgAArkxuG2Ty8vIkSWFhYQ7tYWFh9m3VSUtLU3BwsH2JiIio1zoBAIDruG2QuVRTp05VUVGRfTl8+LCrSwIAAPXEbYNMeHi4JCk/P9+hPT8/376tOj4+PgoKCnJYAADAlcltg0zLli0VHh6uDRs22NuKi4u1detWxcXFubAyAADgLlx611JJSYn27dtnXz9w4IBycnIUGhqqyMhIPfroo/rzn/+stm3bqmXLlnr66afVtGlTDR061HVFAwAAt+HSILNt2zb169fPvp6amipJSkpKUnp6uh5//HGdOnVKDz30kAoLC9WrVy+tXbtWvr6+rioZAAC4EZcGmb59+8oYU+N2m82mZ599Vs8+++xlrAoAAFiF286RAQAAuBiCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCxLBJn58+crKipKvr6+6tatm/7973+7uiQAAOAG3D7IvP3220pNTdW0adO0fft2xcTEKCEhQQUFBa4uDQAAuJjbB5kXX3xRDz74oJKTk9WhQwctXLhQDRo00Ouvv+7q0gAAgIu5dZA5e/assrOzFR8fb2/z8PBQfHy8Nm/e7MLKAACAO/B0dQEXcvToUVVUVCgsLMyhPSwsTLt37652n7KyMpWVldnXi4qKJEnFxcV1Xl9l2ek6HxO4ktTHz50r8LMO1Ky+fs7Pj2uMuWA/tw4ylyItLU0zZsyo0h4REeGCaoD/bMHzXF0BgPpW3z/nJ0+eVHBwcI3b3TrIXHPNNbrqqquUn5/v0J6fn6/w8PBq95k6dapSU1Pt65WVlTp+/LgaNmwom81Wr/XCtYqLixUREaHDhw8rKCjI1eUAqAf8nP/nMMbo5MmTatq06QX7uXWQ8fb2VmxsrDZs2KChQ4dK+jmYbNiwQePGjat2Hx8fH/n4+Di0hYSE1HOlcCdBQUH8Awdc4fg5/89woTMx57l1kJGk1NRUJSUlqUuXLuratavmzZunU6dOKTk52dWlAQAAF3P7IHP33Xfrp59+0jPPPKO8vDx17NhRa9eurTIBGAAA/Odx+yAjSePGjavxUhJwno+Pj6ZNm1bl0iKAKwc/5/g1m7nYfU0AAABuyq0fiAcAAHAhBBkAAGBZBBkAAGBZBBkAgOVs3LhRNptNhYWFNfZJT0/nOWL/AQgyAADAsggyAADAsggycCuVlZVKS0tTy5Yt5efnp5iYGK1YsUKVlZVq3ry5FixY4NB/x44d8vDw0MGDByVJhYWFGjNmjBo1aqSgoCD1799fO3futPefPn26OnbsqDfeeENRUVEKDg7WPffco5MnT17W9wnAUVlZmSZMmKDGjRvL19dXvXr1UlZWln37Bx98oHbt2snPz0/9+vXT999/X2WM9PR0RUZGqkGDBho2bJiOHTt2Gd8BXIUgA7eSlpampUuXauHChdq1a5cmTpyo++67T5999plGjBihjIwMh/7Lli1Tz5491aJFC0nSnXfeqYKCAv3rX/9Sdna2OnfurAEDBuj48eP2ffbv369Vq1bp/fff1/vvv6/MzEzNmjXrsr5PAI4ef/xxrVy5UkuWLNH27dvVpk0bJSQk6Pjx4zp8+LCGDx+uwYMHKycnR2PGjNGUKVMc9t+6datGjx6tcePGKScnR/369dOf//xnF70bXFYGcBOlpaWmQYMG5osvvnBoHz16tBkxYoTZsWOHsdls5uDBg8YYYyoqKkyzZs3MggULjDHGfPbZZyYoKMiUlpY67N+6dWvz6quvGmOMmTZtmmnQoIEpLi62b588ebLp1q1bfb41ABdQUlJivLy8zLJly+xtZ8+eNU2bNjWzZ882U6dONR06dHDY54knnjCSzIkTJ4wxxowYMcLcdtttDn3uvvtuExwcXN/lw8U4IwO3sW/fPp0+fVoDBw5UQECAfVm6dKn279+vjh07qn379vazMpmZmSooKNCdd94pSdq5c6dKSkrUsGFDh/0PHDig/fv3218nKipKgYGB9vUmTZqooKDg8r5ZAHb79+9XeXm5evbsaW/z8vJS165d9e233+rbb79Vt27dHPaJi4tzWK9NH1yZLPFZS/jPUFJSIklas2aNmjVr5rDt/OeqjBw5UhkZGZoyZYoyMjJ06623qmHDhvb9mzRpoo0bN1YZ+5e3YHp5eTlss9lsqqysrMN3AgC4XAgycBsdOnSQj4+PDh06pD59+lTb595779VTTz2l7OxsrVixQgsXLrRv69y5s/Ly8uTp6amoqKjLVDWA36p169by9vbWpk2b7PPdysvLlZWVpUcffVTHjx/X6tWrHfbZsmWLw3r79u21devWC/bBlYkg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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def count_ones(bits):\n", " return 'even' if sum(bits) % 2 == 0 else 'odd'\n", "\n", "\n", "q = cirq.LineQubit.range(6)\n", "# Uniform superposition over all 2 ** 6 states.\n", "circuit = cirq.Circuit([cirq.H.on_each(*q), cirq.measure(*q, key='measure_all')])\n", "result = cirq.Simulator().run(circuit, repetitions=100)\n", "# Create a customized histogram by processing the measurement results using `fold_func`.\n", "custom_histogram = result.histogram(key='measure_all', fold_func=count_ones)\n", "# Plot the custom histogram using cirq.plot_state_histogram\n", "_ = cirq.plot_state_histogram(custom_histogram, plt.subplot())\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "ac5483d0a913" }, "source": [ "### Modifying plot properties\n", "You can pass additional arguments to the `cirq.plot_state_histogram` method to modify plot properties like `title`, `xlabel`, `ylabel` and `tick_label`. For example:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "execution": { "iopub.execute_input": "2025-05-30T09:12:19.151625Z", "iopub.status.busy": "2025-05-30T09:12:19.151043Z", "iopub.status.idle": "2025-05-30T09:12:19.279961Z", "shell.execute_reply": "2025-05-30T09:12:19.279334Z" }, "id": "16aa0365af6a" }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjMAAAHHCAYAAABKudlQAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAPF9JREFUeJzt3XlYlPX+//HXKKsLGC4oiaJZmhuUu7ZgYaRmlpXl14rUtBQ1pTQ9JzVbxOXUoYz0eCrNTtspzXNM82jmlpoLZptbFhppqImAoILC5/eHF/NrYpvRgZlbn4/rmuvi/tyf+77fnxnB1/W5l7EZY4wAAAAsqoqnCwAAALgYhBkAAGBphBkAAGBphBkAAGBphBkAAGBphBkAAGBphBkAAGBphBkAAGBphBkAAGBphBkAl7wFCxbIZrPpwIEDni5FknTgwAHZbDYtWLDAqf42m03PPvtshdYEWBlhBrCYn376SY899piaNm2qgIAABQUFqVu3bnrllVd0+vTpCjnme++9p6SkpArZ98V49tlnZbPZ7K9q1aqpZcuWeuaZZ5Sdne2WYzg79j/XUtorOjq6xO2XL19OYAEukI+nCwDgvGXLlum+++6Tv7+/Hn74YbVu3Vr5+fn68ssvNW7cOP3www+aN2+e24/73nvv6fvvv9eYMWPcvm93mDNnjmrUqKGcnBytXLlSL774or744gtt3LhRNpvtovbt7Nj79eunZs2a2ZdzcnI0fPhw3X333erXr5+9PTQ0VI0bN9bp06fl6+trb1++fLmSk5MJNMAFIMwAFpGamqoHHnhAjRs31hdffKEGDRrY18XHx2v//v1atmyZByv0nHvvvVd16tSRJD3++OO65557tHjxYn311Vfq0qVLpdTQtm1btW3b1r78+++/a/jw4Wrbtq0efPDBYv0DAgIqpS7gcsBpJsAiZs6cqZycHL355psOQaZIs2bN9MQTT0gq+5qMP19/cfLkSY0ZM0YRERHy9/dXvXr11KNHD+3YsUOSFB0drWXLlungwYP2UyURERH27Y8ePaohQ4YoNDRUAQEBioyM1Ntvv+1wzKJ6/va3vyk5OVlNmzZVtWrVdNtttyktLU3GGD3//PNq2LChAgMD1bdvX2VkZFzwe3XLLbdIOh8Ay/L666+rVatW8vf3V1hYmOLj45WZmWlfX97YL9SfP59HHnlEycnJkuRwSqoshw4d0uDBgxUaGip/f3+1atVKb7311kXXBlgRMzOARSxdulRNmzZV165d3brfxx9/XB9//LFGjhypli1b6vjx4/ryyy+1e/duXX/99frrX/+qrKws/frrr/r73/8uSapRo4Yk6fTp04qOjtb+/fs1cuRINWnSRB999JEeeeQRZWZm2sNVkXfffVf5+fkaNWqUMjIyNHPmTPXv31+33HKL1q5dq6efflr79+/X7Nmz9dRTT13wf84//fSTJKl27dql9nn22Wc1depUxcTEaPjw4dq7d6/mzJmjbdu2aePGjfL19S1z7O702GOP6fDhw1q1apXeeeedcvsfOXJEnTt3ls1m08iRI1W3bl199tlnGjJkiLKzs732dCBQYQwAr5eVlWUkmb59+zrVPzU11Ugy8+fPL7ZOkpkyZYp9OTg42MTHx5e5v969e5vGjRsXa09KSjKSzL/+9S97W35+vunSpYupUaOGyc7Odqinbt26JjMz09534sSJRpKJjIw0Z8+etbcPGDDA+Pn5mTNnzpRZ15QpU4wks3fvXnPs2DGTmppq/vGPfxh/f38TGhpqcnNzjTHGzJ8/30gyqampxhhjjh49avz8/Mxtt91mCgoK7Pt77bXXjCTz1ltvlTv28hw7dqzYe12kpM8nPj7elPYn+c/7GTJkiGnQoIH5/fffHfo98MADJjg42Jw6dcrlegEr4zQTYAFFd+bUrFnT7fuuVauWtmzZosOHD7u87fLly1W/fn0NGDDA3ubr66vRo0crJydH69atc+h/3333KTg42L7cqVMnSdKDDz4oHx8fh/b8/HwdOnTIqTqaN2+uunXrqkmTJnrsscfUrFkzLVu2TNWqVSux/+eff678/HyNGTNGVar8/z+DQ4cOVVBQkFdfe2SM0aJFi9SnTx8ZY/T777/bX7GxscrKyrKfIgQuF5xmAiwgKChI0vnrW9xt5syZiouLU3h4uNq1a6devXrp4YcfVtOmTcvd9uDBg7r66qsdAoEkXXvttfb1f9SoUSOH5aJgEx4eXmL7iRMnnBrDokWLFBQUJF9fXzVs2FBXXXVVuXVL50PQH/n5+alp06bF6vYmx44dU2ZmpubNm1fqnWtHjx6t5KoAzyLMABYQFBSksLAwff/99071L+3i0YKCgmJt/fv314033qhPPvlEK1eu1KxZszRjxgwtXrxYPXv2vKi6/6xq1aoutRtjnNrvTTfdZL+b6VJXWFgo6fxsVlxcXIl9/nhXFXA5IMwAFnHHHXdo3rx52rx5c7m3G19xxRWS5HBnjlR8pqRIgwYNNGLECI0YMUJHjx7V9ddfrxdffNEeZkoLR40bN9a3336rwsJCh9mZPXv22Nd7o6K69u7d6zADlZ+fr9TUVMXExNjbLvY5Nc5y9jh169ZVzZo1VVBQ4FAncDnjmhnAIsaPH6/q1avr0Ucf1ZEjR4qt/+mnn/TKK69IOj+TU6dOHa1fv96hz+uvv+6wXFBQoKysLIe2evXqKSwsTHl5efa26tWrF+snSb169VJ6ero+/PBDe9u5c+c0e/Zs1ahRQzfffLPrA60EMTEx8vPz06uvvuow+/Pmm28qKytLvXv3treVNnZ3q169uqTiAfTPqlatqnvuuUeLFi0qcabu2LFjFVEe4NWYmQEs4qqrrtJ7772n+++/X9dee63DE4A3bdpkvyW6yKOPPqrp06fr0UcfVfv27bV+/Xrt27fPYZ8nT55Uw4YNde+99yoyMlI1atTQ559/rm3btumll16y92vXrp0+/PBDJSQkqEOHDqpRo4b69OmjYcOG6R//+IceeeQRpaSkKCIiQh9//LE2btyopKSkCrlg2R3q1q2riRMnaurUqbr99tt15513au/evXr99dfVoUMHh4fclTZ2d2vXrp0kafTo0YqNjVXVqlX1wAMPlNh3+vTpWrNmjTp16qShQ4eqZcuWysjI0I4dO/T5559f1DN6AEvy7M1UAFy1b98+M3ToUBMREWH8/PxMzZo1Tbdu3czs2bMdbmU+deqUGTJkiAkODjY1a9Y0/fv3N0ePHnW4zTcvL8+MGzfOREZGmpo1a5rq1aubyMhI8/rrrzscMycnx/zf//2fqVWrlpHkcKvykSNHzKBBg0ydOnWMn5+fadOmTbFbwotuRZ41a5ZD+5o1a4wk89FHHzm0F91KvW3btjLfi6Jbs48dO1Zmvz/fml3ktddeMy1atDC+vr4mNDTUDB8+3Jw4ccLpsZfF1Vuzz507Z0aNGmXq1q1rbDabw23aJe3nyJEjJj4+3oSHhxtfX19Tv359c+utt5p58+Y5VR9wKbEZ4+QVdgAAAF6Ia2YAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClEWYAAIClXfIPzSssLNThw4dVs2bNSnssOQAAuDjGGJ08eVJhYWHFvsz2zy75MHP48OFi38gLAACsIS0tTQ0bNiyzzyUfZooep56WlqagoCAPVwMAAJyRnZ2t8PBwp74W5ZIPM0WnloKCgggzAABYjDOXiHABMAAAsDTCDAAAsDTCDAAAsDTCDAAAsDTCDAAAsDTCDAAAsDTCDAAAsDTCDAAAsDTCDAAAsDTCDAAAsDTCDAAAsDTCDAAAsDTCDAAAsDTCDAAAsDTCDAAAsDQfTxcAAACkiAnLPF3CBTkwvbenS2BmBgAAWBthBgAAWBphBgAAWBphBgAAWBphBgAAWBphBgAAWBphBgAAWBphBgAAWBphBgAAWBphBgAAWBphBgAAWBphBgAAWBphBgAAWBphBgAAWBphBgAAWJpHw8z69evVp08fhYWFyWazacmSJcX67N69W3feeaeCg4NVvXp1dejQQb/88kvlFwsAALySR8NMbm6uIiMjlZycXOL6n376STfccINatGihtWvX6ttvv9WkSZMUEBBQyZUCAABv5ePJg/fs2VM9e/Ysdf1f//pX9erVSzNnzrS3XXXVVZVRGgAAsAivvWamsLBQy5Yt0zXXXKPY2FjVq1dPnTp1KvFU1B/l5eUpOzvb4QUAAC5dHp2ZKcvRo0eVk5Oj6dOn64UXXtCMGTO0YsUK9evXT2vWrNHNN99c4naJiYmaOnVqJVeLS0HEhGWeLuGCHJje29MlAIBHefXMjCT17dtXY8eOVVRUlCZMmKA77rhDc+fOLXW7iRMnKisry/5KS0urrJIBAIAHeO3MTJ06deTj46OWLVs6tF977bX68ssvS93O399f/v7+FV0eAADwEl47M+Pn56cOHTpo7969Du379u1T48aNPVQVAADwNh6dmcnJydH+/fvty6mpqdq5c6dCQkLUqFEjjRs3Tvfff79uuukmde/eXStWrNDSpUu1du1azxUNAAC8ikfDzPbt29W9e3f7ckJCgiQpLi5OCxYs0N133625c+cqMTFRo0ePVvPmzbVo0SLdcMMNnioZAAB4GY+GmejoaBljyuwzePBgDR48uJIqAgAAVuO118wAAAA4gzADAAAsjTADAAAsjTADAAAsjTADAAAsjTADAAAsjTADAAAsjTADAAAsjTADAAAsjTADAAAsjTADAAAsjTADAAAsjTADAAAsjTADAAAszcfTBQBA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l9PHAAAAlzanwkxUVJTS09NVr149RUVFyWazyRhjX1+0bLPZVFBQ4PTBt2/fru7du9uXExISJElxcXFasGCBxo8fr9zcXA0bNkyZmZm64YYbtGLFCgUEBDh9DAAAcGlzKsykpqaqbt269p/dJTo62iEU/ZnNZtNzzz2n5557zm3HBAAAlxanwkzjxo1L/PnPygomAAAAFcHlu5keeeQR5ebmFms/cOCAbrrpJrcUBQAA4CyXw8w333yjtm3bOjyF9+2331ZkZKTq1Knj1uIAAADK4/Kt2Vu3btVf/vIXRUdH68knn9T+/fv12Wef6eWXX9bQoUMrokYAAIBSuRxmfH19NWvWLFWrVk3PP/+8fHx8tG7dOnXp0qUi6gMAACiTy6eZzp49qyeffFIzZszQxIkT1aVLF/Xr10/Lly+viPoAAADK5PLMTPv27XXq1CmtXbtWnTt3ljFGM2fOVL9+/TR48GC9/vrrFVEnAABAiVyemWnfvr127typzp07Szr/LJinn35amzdv1vr1691eIAAAQFlcnpl58803S2y/7rrrtHLlyosuCAAAwBUuz8yUZOXKlerfv7+uuuoqd+wOAADAaRccZg4ePKgpU6YoIiJC9913n6pUqaKFCxe6szYAAIByuXSaKT8/X4sXL9Ybb7yhjRs3KiYmRr/++qu+/vprtWnTpqJqBAAAKJXTMzOjRo1SWFiYXnnlFd1999369ddftXTpUtlsNlWtWrUiawQAACiV0zMzc+bM0dNPP60JEyaoZs2aFVkTAACA05wOM++8847eeustNWjQQL1799ZDDz2knj17VmRtAIByRExY5ukSLsiB6b09XQIuIU6fZhowYIBWrVql7777Ti1atFB8fLzq16+vwsJC7dq1qyJrBAAAKJXLdzM1adJEU6dO1YEDB/Svf/1L99xzjx588EE1bNhQo0eProgaAQAASuXyQ/OK2Gw2xcbGKjY2VhkZGVq4cKHmz5/vztoAAADKdVEPzZs+fboyMzMVEhKiMWPG6JtvvnFXXQAAAE65qDAzbdo0ZWRkuKsWAAAAl11UmDHGuKsOAACAC+J0mBk/frzy8/MrshYAAACXOR1mFi1apHbt2mnnzp32tl27dqlx48YVURcAAIBTnA4z3333nW666SZ16dJFL7zwggoLCxUeHs5XGQAAAI9y+tbsatWqKTk5Wffe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PfPMM4qPj/eqb0O92HFK0v79+5WTk6P09HSdPn3a/nyEli1bys/Pz0Mjc1TWOCXZrxHav3+/JOm7775TzZo11ahRI4WEhOjaa6/V7bffrqFDh2ru3Lk6e/asRo4cqQceeEBhYWGeHJqDix2ndP75SBkZGfrll19UUFBg/zybNWumGjVqeGRcf5STk2OvXzp/MezOnTsVEhKiRo0aacyYMXrhhRd09dVXq0mTJpo0aZLCwsJ01113SZJlPsuLHafk/Z+lVP44i+o/fPiwpPNBRZJ99tjZv1OedrHjlJz7/bUET99OdbmZPXu2adSokfHz8zMdO3Y0X331lX3d6dOnzYgRI8wVV1xhqlWrZu6++27z22+/OWx/4MAB07NnTxMYGGjq1KljnnzySXP27NnKHka5LnacN998s5FU7JWamlrJIylbWeOcMmVKiWOYP3++vc/x48fNgAEDTI0aNUxQUJAZNGiQOXnypAdGUraLHWdcXFyJfdasWVP5gylB0W2pf37FxcUZY87ftjxp0iQTGhpq/P39za233mr27t3rsA8rfJbuGKe3f5bGlD/O+fPnl7h+ypQp9n0483fK09wxTmd+f63AZowx7olFAAAAlY9rZgAAgKURZgAAgKURZgAAgKURZgAAgKURZgAAgKURZgAAgKURZgAAgKURZgBA0oEDB2Sz2exPtK1sCxYsKPYtzRfCZrNpyZIlF70fwEoIM4CFpKena9SoUWratKn8/f0VHh6uPn36OHyHzMXw9H/oy5cvl5+fn3bs2OHQ/tJLL6lOnTpKT08vc/v3339fVatWVXx8vMvHDg8P12+//abWrVu7vK0kPfLIIw6P/QdQeQgzgEUcOHBA7dq10xdffKFZs2bpu+++04oVK9S9e/cL+s/bG/Xq1UsPP/ywHn74YeXl5UmSdu3apWeeeUbJycnlfmPxm2++qfHjx+v999/XmTNnXDp21apVVb9+ffn48JV1gNUQZgCLGDFihGw2m7Zu3ap77rlH11xzjVq1aqWEhAR99dVXkkqeWcnMzJTNZtPatWslSSdOnNDAgQNVt25dBQYG6uqrr9b8+fMlnf/mZEm67rrrZLPZFB0dLen8N2U/99xzatiwofz9/RUVFaUVK1bYj1F03H//+9+68cYbFRgYqA4dOmjfvn3atm2b2rdvrxo1aqhnz546duxYmeP8+9//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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def binary_labels(num_qubits):\n", " return [bin(x)[2:].zfill(num_qubits) for x in range(2**num_qubits)]\n", "\n", "\n", "q = cirq.LineQubit.range(3)\n", "circuit = cirq.Circuit([cirq.H.on_each(*q), cirq.measure(*q)])\n", "result = cirq.Simulator().run(circuit, repetitions=100)\n", "_ = cirq.plot_state_histogram(\n", " result,\n", " plt.subplot(),\n", " title='Custom Plot Title',\n", " xlabel='Custom X-Axis Label',\n", " ylabel='Custom Y-Axis Label',\n", " tick_label=binary_labels(3),\n", ")\n", "plt.show()" ] } ], "metadata": { "colab": { "name": "state_histograms.ipynb", "toc_visible": true }, "kernelspec": { "display_name": "Python 3", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.17" } }, "nbformat": 4, "nbformat_minor": 0 }