Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save DryLabRebel/99666b46a1a701dda265ed8bcc633484 to your computer and use it in GitHub Desktop.
Save DryLabRebel/99666b46a1a701dda265ed8bcc633484 to your computer and use it in GitHub Desktop.
I thought the dictionary with the enumerate loop was a nice elegant twist.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"metadata": {},
"cell_type": "markdown",
"source": "<center>\n <img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/Logos/organization_logo/organization_logo.png\" width=\"300\" alt=\"cognitiveclass.ai logo\" />\n</center>\n\n# Scraping and Analyzing Basketball Statistics with Python\n\n## Objectives\n\nAfter completing this lab you will be able to:\n\n- Comfortable do web scrapping to collate data from websites\n- Analyze the data, visualize it and make inferences\n"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## Description\n\nWeb scraping involves extracting data from websites. In this assignment, you will web scrape basketball statistics from Wikipedia of some of the greatest basketball players. You will perform some analysis on the data using Pandas, plot, data answer some basic questions then store the data on IBM cloud.\n"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "The players we will use are shown in the following figure from left to right we have <a href='https://en.wikipedia.org/wiki/Michael_Jordan'>Michael Jordan </a>,\n<a href='https://en.wikipedia.org/wiki/Kobe_Bryant'>Kobe Bryant</a>,\n<a href='https://en.wikipedia.org/wiki/LeBron_James'>Lebron James</a> and <a href='https://en.wikipedia.org/wiki/Stephen_Curry'>Stephen Curry</a>.\n"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "<img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/projects/EdX/Images/Michael_Jordan.jpg\" alt=\"Trulli\" width=\"100\" height=\"200\">\n<img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/projects/EdX/Images/Kobe_Bryant.jpg\" alt=\"Trulli\" width=\"100\" height=\"75\">\n<img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/projects/EdX/Images/Lebron.jpg\" alt=\"Trulli\" width=\"100\" height=\"200\">\n<img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/projects/EdX/Images/Stephen_Curry_Shooting.jpg\" alt=\"Trulli\" width=\"100\" height=\"75\">\n"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "<center>Figure: following figure from left to right we have <a href='https://en.wikipedia.org/wiki/Michael_Jordan'>Michael Jordan </a>,\n<a href='https://en.wikipedia.org/wiki/Kobe_Bryant'>Kobe Bryant</a>,\n<a href='https://en.wikipedia.org/wiki/LeBron_James'>Lebron James</a> and <a href='https://en.wikipedia.org/wiki/Stephen_Curry'>Stephen Curry</a></center> <i>(image source Wikipedia)</i>\n"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "<b>Wikipedia.org</b> has the statistics of each Basketball Player in different tables; we will use the table <bb>regular season</b>. The Table for <a href='https://en.wikipedia.org/wiki/Michael_Jordan'>Michael Jordan </a> is shown here:\n"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "<table class=\"wikitable sortable\" style=\"font-size:95%; text-align:right;\">\n<tbody><tr>\n<th>Year\n</th>\n<th>Team\n</th>\n<th><abbr title=\"Games played\">GP</abbr>\n</th>\n<th><abbr title=\"Games started\">GS</abbr>\n</th>\n<th><abbr title=\"Minutes per game\">MPG</abbr>\n</th>\n<th><abbr title=\"Field goal percentage\">FG%</abbr>\n</th>\n<th><abbr title=\"3-point field-goal percentage\">3P%</abbr>\n</th>\n<th><abbr title=\"Free-throw percentage\">FT%</abbr>\n</th>\n<th><abbr title=\"Rebounds per game\">RPG</abbr>\n</th>\n<th><abbr title=\"Assists per game\">APG</abbr>\n</th>\n<th><abbr title=\"Steals per game\">SPG</abbr>\n</th>\n<th><abbr title=\"Blocks per game\">BPG</abbr>\n</th>\n<th><abbr title=\"Points per game\">PPG</abbr>\n</th></tr>\n<tr>\n<td style=\"text-align:left;\"><a href=\"/wiki/1984%E2%80%9385_NBA_season\" title=\"1984\u201385 NBA season\">1984\u201385</a>\n</td>\n<td style=\"text-align:left;\"><a href=\"/wiki/1984%E2%80%9385_Chicago_Bulls_season\" title=\"1984\u201385 Chicago Bulls season\">Chicago</a>\n</td>\n<td><b>82</b></td>\n<td><b>82</b></td>\n<td>38.3</td>\n<td>.515</td>\n<td>.173</td>\n<td>.845</td>\n<td>6.5</td>\n<td>5.9</td>\n<td>2.4</td>\n<td>.8</td>\n<td>28.2\n</td></tr>\n<tr>\n<td style=\"text-align:left;\"><a href=\"/wiki/1985%E2%80%9386_NBA_season\" title=\"1985\u201386 NBA season\">1985\u201386</a>\n</td>\n<td style=\"text-align:left;\"><a href=\"/wiki/1985%E2%80%9386_Chicago_Bulls_season\" title=\"1985\u201386 Chicago Bulls season\">Chicago</a>\n</td>\n<td>18</td>\n<td>7</td>\n<td>25.1</td>\n<td>.457</td>\n<td>.167</td>\n<td>.840</td>\n<td>3.6</td>\n<td>2.9</td>\n<td>2.1</td>\n<td>1.2</td>\n<td>22.7\n</td></tr>\n<tr>\n<td style=\"text-align:left;\"><a href=\"/wiki/1986%E2%80%9387_NBA_season\" title=\"1986\u201387 NBA season\">1986\u201387</a>\n</td>\n<td style=\"text-align:left;\"><a href=\"/wiki/1986%E2%80%9387_Chicago_Bulls_season\" title=\"1986\u201387 Chicago Bulls season\">Chicago</a>\n</td>\n<td><b>82</b></td>\n<td><b>82</b></td>\n<td>40.0</td>\n<td>.482</td>\n<td>.182</td>\n<td><b>.857</b></td>\n<td>5.2</td>\n<td>4.6</td>\n<td>2.9</td>\n<td>1.5</td>\n<td style=\"background:#cfecec;\"><b>37.1</b>*\n</td></tr>\n<tr>\n<td style=\"text-align:left;\"><a href=\"/wiki/1987%E2%80%9388_NBA_season\" title=\"1987\u201388 NBA season\">1987\u201388</a>\n</td>\n<td style=\"text-align:left;\"><a href=\"/wiki/1987%E2%80%9388_Chicago_Bulls_season\" title=\"1987\u201388 Chicago Bulls season\">Chicago</a>\n</td>\n<td><b>82</b></td>\n<td><b>82</b></td>\n<td bgcolor=\"CFECEC\"><b>40.4</b>*</td>\n<td>.535</td>\n<td>.132</td>\n<td>.841</td>\n<td>5.5</td>\n<td>5.9</td>\n<td bgcolor=\"CFECEC\"><b>3.2</b>*</td>\n<td><b>1.6</b></td>\n<td style=\"background:#cfecec;\">35.0*\n</td></tr>\n<tr>\n<td style=\"text-align:left;\"><a href=\"/wiki/1988%E2%80%9389_NBA_season\" title=\"1988\u201389 NBA season\">1988\u201389</a>\n</td>\n<td style=\"text-align:left;\"><a href=\"/wiki/1988%E2%80%9389_Chicago_Bulls_season\" title=\"1988\u201389 Chicago Bulls season\">Chicago</a>\n</td>\n<td>81</td>\n<td>81</td>\n<td bgcolor=\"CFECEC\">40.2*</td>\n<td>.538</td>\n<td>.276</td>\n<td>.850</td>\n<td><b>8.0</b></td>\n<td><b>8.0</b></td>\n<td>2.9</td>\n<td>.8</td>\n<td style=\"background:#cfecec;\">32.5*\n</td></tr>\n<tr>\n<td style=\"text-align:left;\"><a href=\"/wiki/1989%E2%80%9390_NBA_season\" title=\"1989\u201390 NBA season\">1989\u201390</a>\n</td>\n<td style=\"text-align:left;\"><a href=\"/wiki/1989%E2%80%9390_Chicago_Bulls_season\" title=\"1989\u201390 Chicago Bulls season\">Chicago</a>\n</td>\n<td><b>82</b></td>\n<td><b>82</b></td>\n<td>39.0</td>\n<td>.526</td>\n<td>.376</td>\n<td>.848</td>\n<td>6.9</td>\n<td>6.3</td>\n<td bgcolor=\"CFECEC\">2.8*</td>\n<td>.7</td>\n<td style=\"background:#cfecec;\">33.6*\n</td></tr>\n<tr>\n<td style=\"text-align:left;background:#afe6ba;\"><a href=\"/wiki/1990%E2%80%9391_NBA_season\" title=\"1990\u201391 NBA season\">1990\u201391</a>\u2020\n</td>\n<td style=\"text-align:left;\"><a href=\"/wiki/1990%E2%80%9391_Chicago_Bulls_season\" title=\"1990\u201391 Chicago Bulls season\">Chicago</a>\n</td>\n<td><b>82</b></td>\n<td><b>82</b></td>\n<td>37.0</td>\n<td><b>.539</b></td>\n<td>.312</td>\n<td>.851</td>\n<td>6.0</td>\n<td>5.5</td>\n<td>2.7</td>\n<td>1.0</td>\n<td style=\"background:#cfecec;\">31.5*\n</td></tr>\n<tr>\n<td style=\"text-align:left;background:#afe6ba;\"><a href=\"/wiki/1991%E2%80%9392_NBA_season\" title=\"1991\u201392 NBA season\">1991\u201392</a>\u2020\n</td>\n<td style=\"text-align:left;\"><a href=\"/wiki/1991%E2%80%9392_Chicago_Bulls_season\" title=\"1991\u201392 Chicago Bulls season\">Chicago</a>\n</td>\n<td>80</td>\n<td>80</td>\n<td>38.8</td>\n<td>.519</td>\n<td>.270</td>\n<td>.832</td>\n<td>6.4</td>\n<td>6.1</td>\n<td>2.3</td>\n<td>.9</td>\n<td style=\"background:#cfecec;\">30.1*\n</td></tr>\n<tr>\n<td style=\"text-align:left;background:#afe6ba;\"><a href=\"/wiki/1992%E2%80%9393_NBA_season\" title=\"1992\u201393 NBA season\">1992\u201393</a>\u2020\n</td>\n<td style=\"text-align:left;\"><a href=\"/wiki/1992%E2%80%9393_Chicago_Bulls_season\" title=\"1992\u201393 Chicago Bulls season\">Chicago</a>\n</td>\n<td>78</td>\n<td>78</td>\n<td>39.3</td>\n<td>.495</td>\n<td>.352</td>\n<td>.837</td>\n<td>6.7</td>\n<td>5.5</td>\n<td bgcolor=\"CFECEC\">2.8*</td>\n<td>.8</td>\n<td style=\"background:#cfecec;\">32.6*\n</td></tr>\n<tr>\n<td style=\"text-align:left;\"><a href=\"/wiki/1994%E2%80%9395_NBA_season\" title=\"1994\u201395 NBA season\">1994\u201395</a>\n</td>\n<td style=\"text-align:left;\"><a href=\"/wiki/1994%E2%80%9395_Chicago_Bulls_season\" title=\"1994\u201395 Chicago Bulls season\">Chicago</a>\n</td>\n<td>17</td>\n<td>17</td>\n<td>39.3</td>\n<td>.411</td>\n<td><b>.500</b></td>\n<td>.801</td>\n<td>6.9</td>\n<td>5.3</td>\n<td>1.8</td>\n<td>.8</td>\n<td>26.9\n</td></tr>\n<tr>\n<td style=\"text-align:left;background:#afe6ba;\"><a href=\"/wiki/1995%E2%80%9396_NBA_season\" title=\"1995\u201396 NBA season\">1995\u201396</a>\u2020\n</td>\n<td style=\"text-align:left;\"><a href=\"/wiki/1995%E2%80%9396_Chicago_Bulls_season\" title=\"1995\u201396 Chicago Bulls season\">Chicago</a>\n</td>\n<td><b>82</b></td>\n<td><b>82</b></td>\n<td>37.7</td>\n<td>.495</td>\n<td>.427</td>\n<td>.834</td>\n<td>6.6</td>\n<td>4.3</td>\n<td>2.2</td>\n<td>.5</td>\n<td style=\"background:#cfecec;\">30.4*\n</td></tr>\n<tr>\n<td style=\"text-align:left;background:#afe6ba;\"><a href=\"/wiki/1996%E2%80%9397_NBA_season\" title=\"1996\u201397 NBA season\">1996\u201397</a>\u2020\n</td>\n<td style=\"text-align:left;\"><a href=\"/wiki/1996%E2%80%9397_Chicago_Bulls_season\" title=\"1996\u201397 Chicago Bulls season\">Chicago</a>\n</td>\n<td><b>82</b></td>\n<td><b>82</b></td>\n<td>37.9</td>\n<td>.486</td>\n<td>.374</td>\n<td>.833</td>\n<td>5.9</td>\n<td>4.3</td>\n<td>1.7</td>\n<td>.5</td>\n<td style=\"background:#cfecec;\">29.6*\n</td></tr>\n<tr>\n<td style=\"text-align:left;background:#afe6ba;\"><a href=\"/wiki/1997%E2%80%9398_NBA_season\" title=\"1997\u201398 NBA season\">1997\u201398</a>\u2020\n</td>\n<td style=\"text-align:left;\"><a href=\"/wiki/1997%E2%80%9398_Chicago_Bulls_season\" title=\"1997\u201398 Chicago Bulls season\">Chicago</a>\n</td>\n<td><b>82</b></td>\n<td><b>82</b></td>\n<td>38.8</td>\n<td>.465</td>\n<td>.238</td>\n<td>.784</td>\n<td>5.8</td>\n<td>3.5</td>\n<td>1.7</td>\n<td>.5</td>\n<td style=\"background:#cfecec;\">28.7*\n</td></tr>\n<tr>\n<td style=\"text-align:left;\"><a href=\"/wiki/2001%E2%80%9302_NBA_season\" title=\"2001\u201302 NBA season\">2001\u201302</a>\n</td>\n<td style=\"text-align:left;\"><a href=\"/wiki/2001%E2%80%9302_Washington_Wizards_season\" title=\"2001\u201302 Washington Wizards season\">Washington</a>\n</td>\n<td>60</td>\n<td>53</td>\n<td>34.9</td>\n<td>.416</td>\n<td>.189</td>\n<td>.790</td>\n<td>5.7</td>\n<td>5.2</td>\n<td>1.4</td>\n<td>.4</td>\n<td>22.9\n</td></tr>\n<tr>\n<td style=\"text-align:left;\"><a href=\"/wiki/2002%E2%80%9303_NBA_season\" title=\"2002\u201303 NBA season\">2002\u201303</a>\n</td>\n<td style=\"text-align:left;\"><a href=\"/wiki/2002%E2%80%9303_Washington_Wizards_season\" title=\"2002\u201303 Washington Wizards season\">Washington</a>\n</td>\n<td><b>82</b></td>\n<td>67</td>\n<td>37.0</td>\n<td>.445</td>\n<td>.291</td>\n<td>.821</td>\n<td>6.1</td>\n<td>3.8</td>\n<td>1.5</td>\n<td>.5</td>\n<td>20.0\n</td></tr>\n<tr class=\"sortbottom\">\n<td colspan=\"2\" style=\"text-align:center;\"><b>Career</b>\n</td>\n<td>1,072</td>\n<td>1,039</td>\n<td>38.3</td>\n<td>.497</td>\n<td>.327</td>\n<td>.835</td>\n<td>6.2</td>\n<td>5.3</td>\n<td>2.3</td>\n<td>.8</td>\n<td style=\"background:#E0CEF2; width:3em\">30.1<img alt=\"double-dagger\" data-file-height=\"14\" data-file-width=\"9\" decoding=\"async\" height=\"14\" src=\"https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBMDeveloperSkillsNetwork-PY0101EN-SkillsNetwork/labs/FinalModule_edX/upload.wikimedia.org/wikipedia/commons/f/f9/Double-dagger-14-plain.png\" width=\"9\">\n</td></tr>\n<tr class=\"sortbottom\">\n<td colspan=\"2\" style=\"text-align:center;\"><b>All-Star</b>\n</td>\n<td>13</td>\n<td>13</td>\n<td>29.4</td>\n<td>.472</td>\n<td>.273</td>\n<td>.750</td>\n<td>4.7</td>\n<td>4.2</td>\n<td>2.8</td>\n<td>.5</td>\n<td>20.2\n</td></tr></tbody></table>\n"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "We will scrape the data for each year for each player convert the data for each player into a Pandas Dataframe, plot the results for Points per game, perform some analysis. Finally, we will store the results in the IBM cloud.\n"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "<h2>Table of Contents</h2>\n<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n <ul>\n <li><a href=\"#Section_1\">Define a Web Scraping Function </a></li>\n <li><a href=\"#Section_2\">Web Scraping and Converting to Pandas Dataframe</a> </li>\n <li><a href=\"#Section_3\">Plot the Points per game</a></li>\n <li><a href=\"#Section_4\">How to submit </a></li>\n </ul>\n<p>\n Estimated Time Needed: <strong>180 min</strong></p>\n</div>\n\n<hr>\n"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "<h2 id=\"Section_1\"> Define a Web Scraping Function </h2>\n"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "In this section, we define the function <code>get_basketball_stats</code>. The function will return a dictionary corresponding to the Regular season statistics of each basketball player scraped from m <a href=\"http://en.wikipedia.org\">en.wikipedia.org</a>. \nThe <a href=\"[https://en.wikipedia.org/wiki/Parameter](https://en.wikipedia.org/wiki/Parameter?cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-PY0101EN-SkillsNetwork-19487395&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ&cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-PY0101EN-SkillsNetwork-19487395&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ&cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-PY0101EN-SkillsNetwork-19487395&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ&cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-PY0101EN-SkillsNetwork-19487395&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ&cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-PY0101EN-SkillsNetwork-19487395&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ&cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-PY0101EN-SkillsNetwork-19487395&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ&cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-PY0101EN-SkillsNetwork-19487395&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ&cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-PY0101EN-SkillsNetwork-19487395&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ)_(computer_programming)\"> Formal Parameter </a> or input <code> link</code> is going to be the URL of the Wikipedia page for each player. This function will return a Python dictionary. The keys will be the column names, and the values will be a list that contains a different columns; the element of each list will be a separate row for that column.\nYou don't have to know how the function works just the input in the output. \n"
},
{
"metadata": {},
"cell_type": "code",
"source": "import bs4\nimport requests\nimport pandas as pd\nimport numpy as np\nimport boto3",
"execution_count": 1,
"outputs": []
},
{
"metadata": {},
"cell_type": "code",
"source": "def get_basketball_stats(link='https://en.wikipedia.org/wiki/Michael_Jordan'):\n # read the webpage \n response = requests.get(link)\n # create a BeautifulSoup object to parse the HTML \n soup = bs4.BeautifulSoup(response.text, 'html.parser')\n # the player stats are defined with the attribute CSS class set to 'wikitable sortable'; \n #therefore we create a tag object \"table\"\n table=soup.find(class_='wikitable sortable')\n\n #the headers of the table are the first table row (tr) we create a tag object that has the first row \n headers=table.tr\n #the table column names are displayed as an abbreviation; therefore we find all the abbr tags and returs an Iterator\n titles=headers.find_all(\"abbr\")\n #we create a dictionary and pass the table headers as the keys \n data = {title['title']:[] for title in titles}\n #we will store each column as a list in a dictionary, the header of the column will be the dictionary key \n\n #we iterate over each table row by fining each table tag tr and assign it to the objed\n for row in table.find_all('tr')[1:]:\n \n #we iterate over each cell in the table, as each cell corresponds to a different column we all obtain the correspondin key corresponding the column n \n for key,a in zip(data.keys(),row.find_all(\"td\")[2:]):\n # we append each elment and strip any extra HTML contnet \n data[key].append(''.join(c for c in a.text if (c.isdigit() or c == \".\")))\n\n # we remove extra rows by finding the smallest list \n Min=min([len(x) for x in data.values()])\n #we convert the elements in the key to floats \n for key in data.keys():\n \n data[key]=list(map(lambda x: float(x), data[key][:Min]))\n \n return data",
"execution_count": 2,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "<h2 id=\"Section_2\"> Question 1: Web Scraping the data and Converting to Pandas Dataframe </h2>\n"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "For this question, you must use the function <code>get_basketball_stats</code> to extract a Python Dictionary of the player statistics, convert the dictionary to a Python Dataframe. To get full marks, you must display the first five rows of the dataframe for each player using the method head with the name of each player printed above. As shown in the following figuer **the order of the columns may be different depending on the version of Python**.\n"
},
{
"metadata": {},
"cell_type": "markdown",
"source": " <img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/projects/EdX/Images/question_one_answer.jpeg\" alt=\"Trulli\" width=\"1000\" height=\"1000\">\n"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "You will need the following libraries \n"
},
{
"metadata": {},
"cell_type": "code",
"source": "import pandas as pd\nimport matplotlib.pyplot as plt\nfrom IPython.display import display\n",
"execution_count": 3,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "The list <code>links</code> contain the link the Wikipedia article for each player. The list <code>names</codes> contains the names of each player.\n"
},
{
"metadata": {},
"cell_type": "code",
"source": "links=['https://en.wikipedia.org/wiki/Michael_Jordan'\\\n ,'https://en.wikipedia.org/wiki/Kobe_Bryant'\\\n ,'https://en.wikipedia.org/wiki/LeBron_James'\\\n ,'https://en.wikipedia.org/wiki/Stephen_Curry']\n\nnames=['Michael_Jordan','Kobe_Bryant','Lebron_James','Stephen_Curry']",
"execution_count": 4,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "You can use the function get_basketball_stats to extract the <b>Regular season table </b> and store it to a Python dictionary. For example, you can extract the table for Michael Jordan and convert it to a Python dictionary as follows:\n"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "#using the link \n<code>\nmichael_jordan_dict=get_basketball_stats('[https://en.wikipedia.org/wiki/Michael_Jordan'](https://en.wikipedia.org/wiki/Michael_Jordan'?cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-PY0101EN-SkillsNetwork-19487395&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ&cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-PY0101EN-SkillsNetwork-19487395&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ&cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-PY0101EN-SkillsNetwork-19487395&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ&cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-PY0101EN-SkillsNetwork-19487395&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ&cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-PY0101EN-SkillsNetwork-19487395&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ))\n</code>\n\n#using the list\n\n<code>\nmichael_jordan_dict=get_basketball_stats(links[0])\n</code>\n"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "<h5>For each Player create a Python dictionary from the table <b>Regular season table </b>.</h5>\n"
},
{
"metadata": {},
"cell_type": "code",
"source": "# OK what do I want to do here? The simple answer is to just paste the link above, and change the name\n# OR, I should be able to do a for loop\nplayers={name: get_basketball_stats(links[count]) for count,name in enumerate(names)}",
"execution_count": 5,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "<h5>For each Player convert the Python Dictionary to a Pandas Dataframe using the constructor <code>pd.DataFrame()</code> </h5>\n"
},
{
"metadata": {},
"cell_type": "code",
"source": "MJdat = pd.DataFrame(players['Michael_Jordan'])\nKBdat = pd.DataFrame(players['Kobe_Bryant'])\nLJdat = pd.DataFrame(players['Lebron_James'])\nSCdat = pd.DataFrame(players['Stephen_Curry'])",
"execution_count": 6,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "<h5>For each player display the first five rows of the Dataframe, print the name of each Player above the Dataframe.</h5>\n"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "If you perform the process in a loop you will have to use the function <code>display</code> as follows:\n\n<code>display(df)</code>\n"
},
{
"metadata": {},
"cell_type": "code",
"source": "print('Michael Jordan')\ndisplay(MJdat.head())\nprint('Kobe Bryant')\ndisplay(KBdat.head())\nprint('Lebron James')\ndisplay(LJdat.head())\nprint('Stephen Curry')\ndisplay(SCdat.head())",
"execution_count": 7,
"outputs": [
{
"output_type": "stream",
"text": "Michael Jordan\n",
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"text/plain": " Games played Games started Minutes per game Field goal percentage \\\n0 82.0 82.0 38.3 0.515 \n1 18.0 7.0 25.1 0.457 \n2 82.0 82.0 40.0 0.482 \n3 82.0 82.0 40.4 0.535 \n4 81.0 81.0 40.2 0.538 \n\n 3-point field-goal percentage Free-throw percentage Rebounds per game \\\n0 0.173 0.845 6.5 \n1 0.167 0.840 3.6 \n2 0.182 0.857 5.2 \n3 0.132 0.841 5.5 \n4 0.276 0.850 8.0 \n\n Assists per game Steals per game Blocks per game Points per game \n0 5.9 2.4 0.8 28.2 \n1 2.9 2.1 1.2 22.7 \n2 4.6 2.9 1.5 37.1 \n3 5.9 3.2 1.6 35.0 \n4 8.0 2.9 0.8 32.5 ",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>Games played</th>\n <th>Games started</th>\n <th>Minutes per game</th>\n <th>Field goal percentage</th>\n <th>3-point field-goal percentage</th>\n <th>Free-throw percentage</th>\n <th>Rebounds per game</th>\n <th>Assists per game</th>\n <th>Steals per game</th>\n <th>Blocks per game</th>\n <th>Points per game</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>82.0</td>\n <td>82.0</td>\n <td>38.3</td>\n <td>0.515</td>\n <td>0.173</td>\n <td>0.845</td>\n <td>6.5</td>\n <td>5.9</td>\n <td>2.4</td>\n <td>0.8</td>\n <td>28.2</td>\n </tr>\n <tr>\n <th>1</th>\n <td>18.0</td>\n <td>7.0</td>\n <td>25.1</td>\n <td>0.457</td>\n <td>0.167</td>\n <td>0.840</td>\n <td>3.6</td>\n <td>2.9</td>\n <td>2.1</td>\n <td>1.2</td>\n <td>22.7</td>\n </tr>\n <tr>\n <th>2</th>\n <td>82.0</td>\n <td>82.0</td>\n <td>40.0</td>\n <td>0.482</td>\n <td>0.182</td>\n <td>0.857</td>\n <td>5.2</td>\n <td>4.6</td>\n <td>2.9</td>\n <td>1.5</td>\n <td>37.1</td>\n </tr>\n <tr>\n <th>3</th>\n <td>82.0</td>\n <td>82.0</td>\n <td>40.4</td>\n <td>0.535</td>\n <td>0.132</td>\n <td>0.841</td>\n <td>5.5</td>\n <td>5.9</td>\n <td>3.2</td>\n <td>1.6</td>\n <td>35.0</td>\n </tr>\n <tr>\n <th>4</th>\n <td>81.0</td>\n <td>81.0</td>\n <td>40.2</td>\n <td>0.538</td>\n <td>0.276</td>\n <td>0.850</td>\n <td>8.0</td>\n <td>8.0</td>\n <td>2.9</td>\n <td>0.8</td>\n <td>32.5</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
},
{
"output_type": "stream",
"text": "Kobe Bryant\n",
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"text/plain": " Games played Games started Minutes per game Field goal percentage \\\n0 71.0 6.0 15.5 0.417 \n1 79.0 1.0 26.0 0.428 \n2 50.0 50.0 37.9 0.465 \n3 66.0 62.0 38.2 0.468 \n4 68.0 68.0 40.9 0.464 \n\n 3-point field-goal percentage Free-throw percentage Rebounds per game \\\n0 0.375 0.819 1.9 \n1 0.341 0.794 3.1 \n2 0.267 0.839 5.3 \n3 0.319 0.821 6.3 \n4 0.305 0.853 5.9 \n\n Assists per game Steals per game Blocks per game Points per game \n0 1.3 0.7 0.3 7.6 \n1 2.5 0.9 0.5 15.4 \n2 3.8 1.4 1.0 19.9 \n3 4.9 1.6 0.9 22.5 \n4 5.0 1.7 0.6 28.5 ",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>Games played</th>\n <th>Games started</th>\n <th>Minutes per game</th>\n <th>Field goal percentage</th>\n <th>3-point field-goal percentage</th>\n <th>Free-throw percentage</th>\n <th>Rebounds per game</th>\n <th>Assists per game</th>\n <th>Steals per game</th>\n <th>Blocks per game</th>\n <th>Points per game</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>71.0</td>\n <td>6.0</td>\n <td>15.5</td>\n <td>0.417</td>\n <td>0.375</td>\n <td>0.819</td>\n <td>1.9</td>\n <td>1.3</td>\n <td>0.7</td>\n <td>0.3</td>\n <td>7.6</td>\n </tr>\n <tr>\n <th>1</th>\n <td>79.0</td>\n <td>1.0</td>\n <td>26.0</td>\n <td>0.428</td>\n <td>0.341</td>\n <td>0.794</td>\n <td>3.1</td>\n <td>2.5</td>\n <td>0.9</td>\n <td>0.5</td>\n <td>15.4</td>\n </tr>\n <tr>\n <th>2</th>\n <td>50.0</td>\n <td>50.0</td>\n <td>37.9</td>\n <td>0.465</td>\n <td>0.267</td>\n <td>0.839</td>\n <td>5.3</td>\n <td>3.8</td>\n <td>1.4</td>\n <td>1.0</td>\n <td>19.9</td>\n </tr>\n <tr>\n <th>3</th>\n <td>66.0</td>\n <td>62.0</td>\n <td>38.2</td>\n <td>0.468</td>\n <td>0.319</td>\n <td>0.821</td>\n <td>6.3</td>\n <td>4.9</td>\n <td>1.6</td>\n <td>0.9</td>\n <td>22.5</td>\n </tr>\n <tr>\n <th>4</th>\n <td>68.0</td>\n <td>68.0</td>\n <td>40.9</td>\n <td>0.464</td>\n <td>0.305</td>\n <td>0.853</td>\n <td>5.9</td>\n <td>5.0</td>\n <td>1.7</td>\n <td>0.6</td>\n <td>28.5</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
},
{
"output_type": "stream",
"text": "Lebron James\n",
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"text/plain": " Games played Games started Minutes per game Field goal percentage \\\n0 79.0 79.0 39.5 0.417 \n1 80.0 80.0 42.4 0.472 \n2 79.0 79.0 42.5 0.480 \n3 78.0 78.0 40.9 0.476 \n4 75.0 74.0 40.4 0.484 \n\n 3-point field-goal percentage Free-throw percentage Rebounds per game \\\n0 0.290 0.754 5.5 \n1 0.351 0.750 7.4 \n2 0.335 0.738 7.0 \n3 0.319 0.698 6.7 \n4 0.315 0.712 7.9 \n\n Assists per game Steals per game Blocks per game Points per game \n0 5.9 1.6 0.7 20.9 \n1 7.2 2.2 0.7 27.2 \n2 6.6 1.6 0.8 31.4 \n3 6.0 1.6 0.7 27.3 \n4 7.2 1.8 1.1 30.0 ",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>Games played</th>\n <th>Games started</th>\n <th>Minutes per game</th>\n <th>Field goal percentage</th>\n <th>3-point field-goal percentage</th>\n <th>Free-throw percentage</th>\n <th>Rebounds per game</th>\n <th>Assists per game</th>\n <th>Steals per game</th>\n <th>Blocks per game</th>\n <th>Points per game</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>79.0</td>\n <td>79.0</td>\n <td>39.5</td>\n <td>0.417</td>\n <td>0.290</td>\n <td>0.754</td>\n <td>5.5</td>\n <td>5.9</td>\n <td>1.6</td>\n <td>0.7</td>\n <td>20.9</td>\n </tr>\n <tr>\n <th>1</th>\n <td>80.0</td>\n <td>80.0</td>\n <td>42.4</td>\n <td>0.472</td>\n <td>0.351</td>\n <td>0.750</td>\n <td>7.4</td>\n <td>7.2</td>\n <td>2.2</td>\n <td>0.7</td>\n <td>27.2</td>\n </tr>\n <tr>\n <th>2</th>\n <td>79.0</td>\n <td>79.0</td>\n <td>42.5</td>\n <td>0.480</td>\n <td>0.335</td>\n <td>0.738</td>\n <td>7.0</td>\n <td>6.6</td>\n <td>1.6</td>\n <td>0.8</td>\n <td>31.4</td>\n </tr>\n <tr>\n <th>3</th>\n <td>78.0</td>\n <td>78.0</td>\n <td>40.9</td>\n <td>0.476</td>\n <td>0.319</td>\n <td>0.698</td>\n <td>6.7</td>\n <td>6.0</td>\n <td>1.6</td>\n <td>0.7</td>\n <td>27.3</td>\n </tr>\n <tr>\n <th>4</th>\n <td>75.0</td>\n <td>74.0</td>\n <td>40.4</td>\n <td>0.484</td>\n <td>0.315</td>\n <td>0.712</td>\n <td>7.9</td>\n <td>7.2</td>\n <td>1.8</td>\n <td>1.1</td>\n <td>30.0</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
},
{
"output_type": "stream",
"text": "Stephen Curry\n",
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"text/plain": " Games played Games started Minutes per game Field goal percentage \\\n0 80.0 77.0 36.2 0.462 \n1 74.0 74.0 33.6 0.480 \n2 26.0 23.0 28.2 0.490 \n3 78.0 78.0 38.2 0.451 \n4 78.0 78.0 36.5 0.471 \n\n 3-point field-goal percentage Free-throw percentage Rebounds per game \\\n0 0.437 0.885 4.5 \n1 0.442 0.934 3.9 \n2 0.455 0.809 3.4 \n3 0.453 0.900 4.0 \n4 0.424 0.885 4.3 \n\n Assists per game Steals per game Blocks per game Points per game \n0 5.9 1.9 0.2 17.5 \n1 5.8 1.5 0.3 18.6 \n2 5.3 1.5 0.3 14.7 \n3 6.9 1.6 0.2 22.9 \n4 8.5 1.6 0.2 24.0 ",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>Games played</th>\n <th>Games started</th>\n <th>Minutes per game</th>\n <th>Field goal percentage</th>\n <th>3-point field-goal percentage</th>\n <th>Free-throw percentage</th>\n <th>Rebounds per game</th>\n <th>Assists per game</th>\n <th>Steals per game</th>\n <th>Blocks per game</th>\n <th>Points per game</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>80.0</td>\n <td>77.0</td>\n <td>36.2</td>\n <td>0.462</td>\n <td>0.437</td>\n <td>0.885</td>\n <td>4.5</td>\n <td>5.9</td>\n <td>1.9</td>\n <td>0.2</td>\n <td>17.5</td>\n </tr>\n <tr>\n <th>1</th>\n <td>74.0</td>\n <td>74.0</td>\n <td>33.6</td>\n <td>0.480</td>\n <td>0.442</td>\n <td>0.934</td>\n <td>3.9</td>\n <td>5.8</td>\n <td>1.5</td>\n <td>0.3</td>\n <td>18.6</td>\n </tr>\n <tr>\n <th>2</th>\n <td>26.0</td>\n <td>23.0</td>\n <td>28.2</td>\n <td>0.490</td>\n <td>0.455</td>\n <td>0.809</td>\n <td>3.4</td>\n <td>5.3</td>\n <td>1.5</td>\n <td>0.3</td>\n <td>14.7</td>\n </tr>\n <tr>\n <th>3</th>\n <td>78.0</td>\n <td>78.0</td>\n <td>38.2</td>\n <td>0.451</td>\n <td>0.453</td>\n <td>0.900</td>\n <td>4.0</td>\n <td>6.9</td>\n <td>1.6</td>\n <td>0.2</td>\n <td>22.9</td>\n </tr>\n <tr>\n <th>4</th>\n <td>78.0</td>\n <td>78.0</td>\n <td>36.5</td>\n <td>0.471</td>\n <td>0.424</td>\n <td>0.885</td>\n <td>4.3</td>\n <td>8.5</td>\n <td>1.6</td>\n <td>0.2</td>\n <td>24.0</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "<h2 id=\"Section_3\"> Question 2: plot the Points per game for a player using the function plt.plot().</h2>\n"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Import the plotting library \n"
},
{
"metadata": {},
"cell_type": "code",
"source": "import matplotlib.pyplot as plt",
"execution_count": 8,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Using the function <code>plt.plot()</code> plot the Points per game, for one player Just a note you can plot a dataframe column like a numpy array. You can also plot them for each player. Find out how to add a xlabel 'years', a ylabel 'Points per game' and a legend.\n"
},
{
"metadata": {
"collapsed": true
},
"cell_type": "code",
"source": "help(plt)",
"execution_count": 22,
"outputs": [
{
"output_type": "stream",
"text": "Help on module matplotlib.pyplot in matplotlib:\n\nNAME\n matplotlib.pyplot\n\nDESCRIPTION\n `matplotlib.pyplot` is a state-based interface to matplotlib. It provides\n a MATLAB-like way of plotting.\n \n pyplot is mainly intended for interactive plots and simple cases of\n programmatic plot generation::\n \n import numpy as np\n import matplotlib.pyplot as plt\n \n x = np.arange(0, 5, 0.1)\n y = np.sin(x)\n plt.plot(x, y)\n \n The object-oriented API is recommended for more complex plots.\n\nFUNCTIONS\n acorr(x, *, data=None, **kwargs)\n Plot the autocorrelation of *x*.\n \n Parameters\n ----------\n x : array-like\n \n detrend : callable, optional, default: `mlab.detrend_none`\n *x* is detrended by the *detrend* callable. This must be a\n function ``x = detrend(x)`` accepting and returning an\n `numpy.array`. Default is no normalization.\n \n normed : bool, optional, default: True\n If ``True``, input vectors are normalised to unit length.\n \n usevlines : bool, optional, default: True\n Determines the plot style.\n \n If ``True``, vertical lines are plotted from 0 to the acorr value\n using `Axes.vlines`. Additionally, a horizontal line is plotted\n at y=0 using `Axes.axhline`.\n \n If ``False``, markers are plotted at the acorr values using\n `Axes.plot`.\n \n maxlags : int, optional, default: 10\n Number of lags to show. If ``None``, will return all\n ``2 * len(x) - 1`` lags.\n \n Returns\n -------\n lags : array (length ``2*maxlags+1``)\n The lag vector.\n c : array (length ``2*maxlags+1``)\n The auto correlation vector.\n line : `.LineCollection` or `.Line2D`\n `.Artist` added to the axes of the correlation:\n \n - `.LineCollection` if *usevlines* is True.\n - `.Line2D` if *usevlines* is False.\n b : `.Line2D` or None\n Horizontal line at 0 if *usevlines* is True\n None *usevlines* is False.\n \n Other Parameters\n ----------------\n linestyle : `.Line2D` property, optional\n The linestyle for plotting the data points.\n Only used if *usevlines* is ``False``.\n \n marker : str, optional, default: 'o'\n The marker for plotting the data points.\n Only used if *usevlines* is ``False``.\n \n Notes\n -----\n The cross correlation is performed with :func:`numpy.correlate` with\n ``mode = \"full\"``.\n \n .. note::\n In addition to the above described arguments, this function can take a\n **data** keyword argument. If such a **data** argument is given, the\n following arguments are replaced by **data[<arg>]**:\n \n * All arguments with the following names: 'x'.\n \n Objects passed as **data** must support item access (``data[<arg>]``) and\n membership test (``<arg> in data``).\n \n angle_spectrum(x, Fs=None, Fc=None, window=None, pad_to=None, sides=None, *, data=None, **kwargs)\n Plot the angle spectrum.\n \n Compute the angle spectrum (wrapped phase spectrum) of *x*.\n Data is padded to a length of *pad_to* and the windowing function\n *window* is applied to the signal.\n \n Parameters\n ----------\n x : 1-D array or sequence\n Array or sequence containing the data.\n \n Fs : scalar\n The sampling frequency (samples per time unit). It is used\n to calculate the Fourier frequencies, freqs, in cycles per time\n unit. The default value is 2.\n \n window : callable or ndarray\n A function or a vector of length *NFFT*. To create window vectors see\n `window_hanning`, `window_none`, `numpy.blackman`, `numpy.hamming`,\n `numpy.bartlett`, `scipy.signal`, `scipy.signal.get_window`, etc. The\n default is `window_hanning`. If a function is passed as the argument,\n it must take a data segment as an argument and return the windowed\n version of the segment.\n \n sides : {'default', 'onesided', 'twosided'}\n Specifies which sides of the spectrum to return. Default gives the\n default behavior, which returns one-sided for real data and both\n for complex data. 'onesided' forces the return of a one-sided\n spectrum, while 'twosided' forces two-sided.\n \n pad_to : int\n The number of points to which the data segment is padded when\n performing the FFT. While not increasing the actual resolution of\n the spectrum (the minimum distance between resolvable peaks),\n this can give more points in the plot, allowing for more\n detail. This corresponds to the *n* parameter in the call to fft().\n The default is None, which sets *pad_to* equal to the length of the\n input signal (i.e. no padding).\n \n Fc : int\n The center frequency of *x* (defaults to 0), which offsets\n the x extents of the plot to reflect the frequency range used\n when a signal is acquired and then filtered and downsampled to\n baseband.\n \n Returns\n -------\n spectrum : 1-D array\n The values for the angle spectrum in radians (real valued).\n \n freqs : 1-D array\n The frequencies corresponding to the elements in *spectrum*.\n \n line : `~matplotlib.lines.Line2D`\n The line created by this function.\n \n Other Parameters\n ----------------\n **kwargs\n Keyword arguments control the `.Line2D` properties:\n \n Properties:\n agg_filter: a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array\n alpha: float or None\n animated: bool\n antialiased or aa: bool\n clip_box: `.Bbox`\n clip_on: bool\n clip_path: Patch or (Path, Transform) or None\n color or c: color\n contains: callable\n dash_capstyle: {'butt', 'round', 'projecting'}\n dash_joinstyle: {'miter', 'round', 'bevel'}\n dashes: sequence of floats (on/off ink in points) or (None, None)\n data: (2, N) array or two 1D arrays\n drawstyle or ds: {'default', 'steps', 'steps-pre', 'steps-mid', 'steps-post'}, default: 'default'\n figure: `.Figure`\n fillstyle: {'full', 'left', 'right', 'bottom', 'top', 'none'}\n gid: str\n in_layout: bool\n label: object\n linestyle or ls: {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}\n linewidth or lw: float\n marker: marker style\n markeredgecolor or mec: color\n markeredgewidth or mew: float\n markerfacecolor or mfc: color\n markerfacecoloralt or mfcalt: color\n markersize or ms: float\n markevery: None or int or (int, int) or slice or List[int] or float or (float, float)\n path_effects: `.AbstractPathEffect`\n picker: float or callable[[Artist, Event], Tuple[bool, dict]]\n pickradius: float\n rasterized: bool or None\n sketch_params: (scale: float, length: float, randomness: float)\n snap: bool or None\n solid_capstyle: {'butt', 'round', 'projecting'}\n solid_joinstyle: {'miter', 'round', 'bevel'}\n transform: `matplotlib.transforms.Transform`\n url: str\n visible: bool\n xdata: 1D array\n ydata: 1D array\n zorder: float\n \n See Also\n --------\n :func:`magnitude_spectrum`\n :func:`angle_spectrum` plots the magnitudes of the corresponding\n frequencies.\n \n :func:`phase_spectrum`\n :func:`phase_spectrum` plots the unwrapped version of this\n function.\n \n :func:`specgram`\n :func:`specgram` can plot the angle spectrum of segments within the\n signal in a colormap.\n \n Notes\n -----\n \n \n .. note::\n In addition to the above described arguments, this function can take a\n **data** keyword argument. If such a **data** argument is given, the\n following arguments are replaced by **data[<arg>]**:\n \n * All arguments with the following names: 'x'.\n \n Objects passed as **data** must support item access (``data[<arg>]``) and\n membership test (``<arg> in data``).\n \n annotate(s, xy, *args, **kwargs)\n Annotate the point *xy* with text *text*.\n \n In the simplest form, the text is placed at *xy*.\n \n Optionally, the text can be displayed in another position *xytext*.\n An arrow pointing from the text to the annotated point *xy* can then\n be added by defining *arrowprops*.\n \n Parameters\n ----------\n text : str\n The text of the annotation. *s* is a deprecated synonym for this\n parameter.\n \n xy : (float, float)\n The point *(x, y)* to annotate.\n \n xytext : (float, float), optional\n The position *(x, y)* to place the text at.\n If *None*, defaults to *xy*.\n \n xycoords : str, `.Artist`, `.Transform`, callable or tuple, optional\n \n The coordinate system that *xy* is given in. The following types\n of values are supported:\n \n - One of the following strings:\n \n ================= =============================================\n Value Description\n ================= =============================================\n 'figure points' Points from the lower left of the figure\n 'figure pixels' Pixels from the lower left of the figure\n 'figure fraction' Fraction of figure from lower left\n 'axes points' Points from lower left corner of axes\n 'axes pixels' Pixels from lower left corner of axes\n 'axes fraction' Fraction of axes from lower left\n 'data' Use the coordinate system of the object being\n annotated (default)\n 'polar' *(theta, r)* if not native 'data' coordinates\n ================= =============================================\n \n - An `.Artist`: *xy* is interpreted as a fraction of the artists\n `~matplotlib.transforms.Bbox`. E.g. *(0, 0)* would be the lower\n left corner of the bounding box and *(0.5, 1)* would be the\n center top of the bounding box.\n \n - A `.Transform` to transform *xy* to screen coordinates.\n \n - A function with one of the following signatures::\n \n def transform(renderer) -> Bbox\n def transform(renderer) -> Transform\n \n where *renderer* is a `.RendererBase` subclass.\n \n The result of the function is interpreted like the `.Artist` and\n `.Transform` cases above.\n \n - A tuple *(xcoords, ycoords)* specifying separate coordinate\n systems for *x* and *y*. *xcoords* and *ycoords* must each be\n of one of the above described types.\n \n See :ref:`plotting-guide-annotation` for more details.\n \n Defaults to 'data'.\n \n textcoords : str, `.Artist`, `.Transform`, callable or tuple, optional\n The coordinate system that *xytext* is given in.\n \n All *xycoords* values are valid as well as the following\n strings:\n \n ================= =========================================\n Value Description\n ================= =========================================\n 'offset points' Offset (in points) from the *xy* value\n 'offset pixels' Offset (in pixels) from the *xy* value\n ================= =========================================\n \n Defaults to the value of *xycoords*, i.e. use the same coordinate\n system for annotation point and text position.\n \n arrowprops : dict, optional\n The properties used to draw a\n `~matplotlib.patches.FancyArrowPatch` arrow between the\n positions *xy* and *xytext*.\n \n If *arrowprops* does not contain the key 'arrowstyle' the\n allowed keys are:\n \n ========== ======================================================\n Key Description\n ========== ======================================================\n width The width of the arrow in points\n headwidth The width of the base of the arrow head in points\n headlength The length of the arrow head in points\n shrink Fraction of total length to shrink from both ends\n ? Any key to :class:`matplotlib.patches.FancyArrowPatch`\n ========== ======================================================\n \n If *arrowprops* contains the key 'arrowstyle' the\n above keys are forbidden. The allowed values of\n ``'arrowstyle'`` are:\n \n ============ =============================================\n Name Attrs\n ============ =============================================\n ``'-'`` None\n ``'->'`` head_length=0.4,head_width=0.2\n ``'-['`` widthB=1.0,lengthB=0.2,angleB=None\n ``'|-|'`` widthA=1.0,widthB=1.0\n ``'-|>'`` head_length=0.4,head_width=0.2\n ``'<-'`` head_length=0.4,head_width=0.2\n ``'<->'`` head_length=0.4,head_width=0.2\n ``'<|-'`` head_length=0.4,head_width=0.2\n ``'<|-|>'`` head_length=0.4,head_width=0.2\n ``'fancy'`` head_length=0.4,head_width=0.4,tail_width=0.4\n ``'simple'`` head_length=0.5,head_width=0.5,tail_width=0.2\n ``'wedge'`` tail_width=0.3,shrink_factor=0.5\n ============ =============================================\n \n Valid keys for `~matplotlib.patches.FancyArrowPatch` are:\n \n =============== ==================================================\n Key Description\n =============== ==================================================\n arrowstyle the arrow style\n connectionstyle the connection style\n relpos default is (0.5, 0.5)\n patchA default is bounding box of the text\n patchB default is None\n shrinkA default is 2 points\n shrinkB default is 2 points\n mutation_scale default is text size (in points)\n mutation_aspect default is 1.\n ? any key for :class:`matplotlib.patches.PathPatch`\n =============== ==================================================\n \n Defaults to None, i.e. no arrow is drawn.\n \n annotation_clip : bool or None, optional\n Whether to draw the annotation when the annotation point *xy* is\n outside the axes area.\n \n - If *True*, the annotation will only be drawn when *xy* is\n within the axes.\n - If *False*, the annotation will always be drawn.\n - If *None*, the annotation will only be drawn when *xy* is\n within the axes and *xycoords* is 'data'.\n \n Defaults to *None*.\n \n **kwargs\n Additional kwargs are passed to `~matplotlib.text.Text`.\n \n Returns\n -------\n annotation : `.Annotation`\n \n See Also\n --------\n :ref:`plotting-guide-annotation`.\n \n arrow(x, y, dx, dy, **kwargs)\n Add an arrow to the axes.\n \n This draws an arrow from ``(x, y)`` to ``(x+dx, y+dy)``.\n \n Parameters\n ----------\n x, y : float\n The x and y coordinates of the arrow base.\n dx, dy : float\n The length of the arrow along x and y direction.\n \n Returns\n -------\n arrow : `.FancyArrow`\n The created `.FancyArrow` object.\n \n Other Parameters\n ----------------\n **kwargs\n Optional kwargs (inherited from `.FancyArrow` patch) control the\n arrow construction and properties:\n \n Constructor arguments\n *width*: float (default: 0.001)\n width of full arrow tail\n \n *length_includes_head*: bool (default: False)\n True if head is to be counted in calculating the length.\n \n *head_width*: float or None (default: 3*width)\n total width of the full arrow head\n \n *head_length*: float or None (default: 1.5 * head_width)\n length of arrow head\n \n *shape*: ['full', 'left', 'right'] (default: 'full')\n draw the left-half, right-half, or full arrow\n \n *overhang*: float (default: 0)\n fraction that the arrow is swept back (0 overhang means\n triangular shape). Can be negative or greater than one.\n \n *head_starts_at_zero*: bool (default: False)\n if True, the head starts being drawn at coordinate 0\n instead of ending at coordinate 0.\n \n Other valid kwargs (inherited from :class:`Patch`) are:\n \n Properties:\n agg_filter: a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array\n alpha: float or None\n animated: bool\n antialiased or aa: unknown\n capstyle: {'butt', 'round', 'projecting'}\n clip_box: `.Bbox`\n clip_on: bool\n clip_path: Patch or (Path, Transform) or None\n color: color\n contains: callable\n edgecolor or ec: color or None or 'auto'\n facecolor or fc: color or None\n figure: `.Figure`\n fill: bool\n gid: str\n hatch: {'/', '\\\\', '|', '-', '+', 'x', 'o', 'O', '.', '*'}\n in_layout: bool\n joinstyle: {'miter', 'round', 'bevel'}\n label: object\n linestyle or ls: {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}\n linewidth or lw: float or None\n path_effects: `.AbstractPathEffect`\n picker: None or bool or float or callable\n rasterized: bool or None\n sketch_params: (scale: float, length: float, randomness: float)\n snap: bool or None\n transform: `.Transform`\n url: str\n visible: bool\n zorder: float\n \n Notes\n -----\n The resulting arrow is affected by the axes aspect ratio and limits.\n This may produce an arrow whose head is not square with its stem. To\n create an arrow whose head is square with its stem,\n use :meth:`annotate` for example:\n \n >>> ax.annotate(\"\", xy=(0.5, 0.5), xytext=(0, 0),\n ... arrowprops=dict(arrowstyle=\"->\"))\n \n autoscale(enable=True, axis='both', tight=None)\n Autoscale the axis view to the data (toggle).\n \n Convenience method for simple axis view autoscaling.\n It turns autoscaling on or off, and then,\n if autoscaling for either axis is on, it performs\n the autoscaling on the specified axis or axes.\n \n Parameters\n ----------\n enable : bool or None, optional\n True (default) turns autoscaling on, False turns it off.\n None leaves the autoscaling state unchanged.\n \n axis : {'both', 'x', 'y'}, optional\n Which axis to operate on; default is 'both'.\n \n tight : bool or None, optional\n If True, first set the margins to zero. Then, this argument is\n forwarded to `autoscale_view` (regardless of its value); see the\n description of its behavior there.\n \n autumn()\n Set the colormap to \"autumn\".\n \n This changes the default colormap as well as the colormap of the current\n image if there is one. See ``help(colormaps)`` for more information.\n \n axes(arg=None, **kwargs)\n Add an axes to the current figure and make it the current axes.\n \n Call signatures::\n \n plt.axes()\n plt.axes(rect, projection=None, polar=False, **kwargs)\n plt.axes(ax)\n \n Parameters\n ----------\n arg : None or 4-tuple\n The exact behavior of this function depends on the type:\n \n - *None*: A new full window axes is added using\n ``subplot(111, **kwargs)``\n - 4-tuple of floats *rect* = ``[left, bottom, width, height]``.\n A new axes is added with dimensions *rect* in normalized\n (0, 1) units using `~.Figure.add_axes` on the current figure.\n \n projection : {None, 'aitoff', 'hammer', 'lambert', 'mollweide', 'polar', 'rectilinear', str}, optional\n The projection type of the `~.axes.Axes`. *str* is the name of\n a custom projection, see `~matplotlib.projections`. The default\n None results in a 'rectilinear' projection.\n \n polar : boolean, optional\n If True, equivalent to projection='polar'.\n \n sharex, sharey : `~.axes.Axes`, optional\n Share the x or y `~matplotlib.axis` with sharex and/or sharey.\n The axis will have the same limits, ticks, and scale as the axis\n of the shared axes.\n \n \n label : str\n A label for the returned axes.\n \n Other Parameters\n ----------------\n **kwargs\n This method also takes the keyword arguments for\n the returned axes class. The keyword arguments for the\n rectilinear axes class `~.axes.Axes` can be found in\n the following table but there might also be other keyword\n arguments if another projection is used, see the actual axes\n class.\n \n Properties:\n adjustable: {'box', 'datalim'}\n agg_filter: a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array\n alpha: float or None\n anchor: 2-tuple of floats or {'C', 'SW', 'S', 'SE', ...}\n animated: bool\n aspect: {'auto', 'equal'} or num\n autoscale_on: bool\n autoscalex_on: bool\n autoscaley_on: bool\n axes_locator: Callable[[Axes, Renderer], Bbox]\n axisbelow: bool or 'line'\n clip_box: `.Bbox`\n clip_on: bool\n clip_path: Patch or (Path, Transform) or None\n contains: callable\n facecolor: color\n fc: color\n figure: `.Figure`\n frame_on: bool\n gid: str\n in_layout: bool\n label: object\n navigate: bool\n navigate_mode: unknown\n path_effects: `.AbstractPathEffect`\n picker: None or bool or float or callable\n position: [left, bottom, width, height] or `~matplotlib.transforms.Bbox`\n prop_cycle: unknown\n rasterization_zorder: float or None\n rasterized: bool or None\n sketch_params: (scale: float, length: float, randomness: float)\n snap: bool or None\n title: str\n transform: `.Transform`\n url: str\n visible: bool\n xbound: unknown\n xlabel: str\n xlim: (bottom: float, top: float)\n xmargin: float greater than -0.5\n xscale: {\"linear\", \"log\", \"symlog\", \"logit\", ...}\n xticklabels: List[str]\n xticks: unknown\n ybound: unknown\n ylabel: str\n ylim: (bottom: float, top: float)\n ymargin: float greater than -0.5\n yscale: {\"linear\", \"log\", \"symlog\", \"logit\", ...}\n yticklabels: List[str]\n yticks: unknown\n zorder: float\n \n Returns\n -------\n axes : `~.axes.Axes` (or a subclass of `~.axes.Axes`)\n The returned axes class depends on the projection used. It is\n `~.axes.Axes` if rectilinear projection are used and\n `.projections.polar.PolarAxes` if polar projection\n are used.\n \n Notes\n -----\n If the figure already has a axes with key (*args*,\n *kwargs*) then it will simply make that axes current and\n return it. This behavior is deprecated. Meanwhile, if you do\n not want this behavior (i.e., you want to force the creation of a\n new axes), you must use a unique set of args and kwargs. The axes\n *label* attribute has been exposed for this purpose: if you want\n two axes that are otherwise identical to be added to the figure,\n make sure you give them unique labels.\n \n See Also\n --------\n .Figure.add_axes\n .pyplot.subplot\n .Figure.add_subplot\n .Figure.subplots\n .pyplot.subplots\n \n Examples\n --------\n ::\n \n # Creating a new full window axes\n plt.axes()\n \n # Creating a new axes with specified dimensions and some kwargs\n plt.axes((left, bottom, width, height), facecolor='w')\n \n axhline(y=0, xmin=0, xmax=1, **kwargs)\n Add a horizontal line across the axis.\n \n Parameters\n ----------\n y : scalar, optional, default: 0\n y position in data coordinates of the horizontal line.\n \n xmin : scalar, optional, default: 0\n Should be between 0 and 1, 0 being the far left of the plot, 1 the\n far right of the plot.\n \n xmax : scalar, optional, default: 1\n Should be between 0 and 1, 0 being the far left of the plot, 1 the\n far right of the plot.\n \n Returns\n -------\n line : `~matplotlib.lines.Line2D`\n \n Other Parameters\n ----------------\n **kwargs\n Valid keyword arguments are `.Line2D` properties, with the\n exception of 'transform':\n \n Properties:\n agg_filter: a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array\n alpha: float or None\n animated: bool\n antialiased or aa: bool\n clip_box: `.Bbox`\n clip_on: bool\n clip_path: Patch or (Path, Transform) or None\n color or c: color\n contains: callable\n dash_capstyle: {'butt', 'round', 'projecting'}\n dash_joinstyle: {'miter', 'round', 'bevel'}\n dashes: sequence of floats (on/off ink in points) or (None, None)\n data: (2, N) array or two 1D arrays\n drawstyle or ds: {'default', 'steps', 'steps-pre', 'steps-mid', 'steps-post'}, default: 'default'\n figure: `.Figure`\n fillstyle: {'full', 'left', 'right', 'bottom', 'top', 'none'}\n gid: str\n in_layout: bool\n label: object\n linestyle or ls: {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}\n linewidth or lw: float\n marker: marker style\n markeredgecolor or mec: color\n markeredgewidth or mew: float\n markerfacecolor or mfc: color\n markerfacecoloralt or mfcalt: color\n markersize or ms: float\n markevery: None or int or (int, int) or slice or List[int] or float or (float, float)\n path_effects: `.AbstractPathEffect`\n picker: float or callable[[Artist, Event], Tuple[bool, dict]]\n pickradius: float\n rasterized: bool or None\n sketch_params: (scale: float, length: float, randomness: float)\n snap: bool or None\n solid_capstyle: {'butt', 'round', 'projecting'}\n solid_joinstyle: {'miter', 'round', 'bevel'}\n transform: `matplotlib.transforms.Transform`\n url: str\n visible: bool\n xdata: 1D array\n ydata: 1D array\n zorder: float\n \n See also\n --------\n hlines : Add horizontal lines in data coordinates.\n axhspan : Add a horizontal span (rectangle) across the axis.\n \n Examples\n --------\n * draw a thick red hline at 'y' = 0 that spans the xrange::\n \n >>> axhline(linewidth=4, color='r')\n \n * draw a default hline at 'y' = 1 that spans the xrange::\n \n >>> axhline(y=1)\n \n * draw a default hline at 'y' = .5 that spans the middle half of\n the xrange::\n \n >>> axhline(y=.5, xmin=0.25, xmax=0.75)\n \n axhspan(ymin, ymax, xmin=0, xmax=1, **kwargs)\n Add a horizontal span (rectangle) across the axis.\n \n Draw a horizontal span (rectangle) from *ymin* to *ymax*.\n With the default values of *xmin* = 0 and *xmax* = 1, this\n always spans the xrange, regardless of the xlim settings, even\n if you change them, e.g., with the :meth:`set_xlim` command.\n That is, the horizontal extent is in axes coords: 0=left,\n 0.5=middle, 1.0=right but the *y* location is in data\n coordinates.\n \n Parameters\n ----------\n ymin : float\n Lower limit of the horizontal span in data units.\n ymax : float\n Upper limit of the horizontal span in data units.\n xmin : float, optional, default: 0\n Lower limit of the vertical span in axes (relative\n 0-1) units.\n xmax : float, optional, default: 1\n Upper limit of the vertical span in axes (relative\n 0-1) units.\n \n Returns\n -------\n Polygon : `~matplotlib.patches.Polygon`\n \n Other Parameters\n ----------------\n **kwargs : `~matplotlib.patches.Polygon` properties.\n \n Properties:\n agg_filter: a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array\n alpha: float or None\n animated: bool\n antialiased or aa: unknown\n capstyle: {'butt', 'round', 'projecting'}\n clip_box: `.Bbox`\n clip_on: bool\n clip_path: Patch or (Path, Transform) or None\n color: color\n contains: callable\n edgecolor or ec: color or None or 'auto'\n facecolor or fc: color or None\n figure: `.Figure`\n fill: bool\n gid: str\n hatch: {'/', '\\\\', '|', '-', '+', 'x', 'o', 'O', '.', '*'}\n in_layout: bool\n joinstyle: {'miter', 'round', 'bevel'}\n label: object\n linestyle or ls: {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}\n linewidth or lw: float or None\n path_effects: `.AbstractPathEffect`\n picker: None or bool or float or callable\n rasterized: bool or None\n sketch_params: (scale: float, length: float, randomness: float)\n snap: bool or None\n transform: `.Transform`\n url: str\n visible: bool\n zorder: float\n \n See Also\n --------\n axvspan : Add a vertical span across the axes.\n \n axis(*args, emit=True, **kwargs)\n Convenience method to get or set some axis properties.\n \n Call signatures::\n \n xmin, xmax, ymin, ymax = axis()\n xmin, xmax, ymin, ymax = axis([xmin, xmax, ymin, ymax])\n xmin, xmax, ymin, ymax = axis(option)\n xmin, xmax, ymin, ymax = axis(**kwargs)\n \n Parameters\n ----------\n xmin, xmax, ymin, ymax : float, optional\n The axis limits to be set. This can also be achieved using ::\n \n ax.set(xlim=(xmin, xmax), ylim=(ymin, ymax))\n \n option : bool or str\n If a bool, turns axis lines and labels on or off. If a string,\n possible values are:\n \n ======== ==========================================================\n Value Description\n ======== ==========================================================\n 'on' Turn on axis lines and labels. Same as ``True``.\n 'off' Turn off axis lines and labels. Same as ``False``.\n 'equal' Set equal scaling (i.e., make circles circular) by\n changing axis limits. This is the same as\n ``ax.set_aspect('equal', adjustable='datalim')``.\n Explicit data limits may not be respected in this case.\n 'scaled' Set equal scaling (i.e., make circles circular) by\n changing dimensions of the plot box. This is the same as\n ``ax.set_aspect('equal', adjustable='box', anchor='C')``.\n Additionally, further autoscaling will be disabled.\n 'tight' Set limits just large enough to show all data, then\n disable further autoscaling.\n 'auto' Automatic scaling (fill plot box with data).\n 'normal' Same as 'auto'; deprecated.\n 'image' 'scaled' with axis limits equal to data limits.\n 'square' Square plot; similar to 'scaled', but initially forcing\n ``xmax-xmin == ymax-ymin``.\n ======== ==========================================================\n \n emit : bool, optional, default *True*\n Whether observers are notified of the axis limit change.\n This option is passed on to `~.Axes.set_xlim` and\n `~.Axes.set_ylim`.\n \n Returns\n -------\n xmin, xmax, ymin, ymax : float\n The axis limits.\n \n See also\n --------\n matplotlib.axes.Axes.set_xlim\n matplotlib.axes.Axes.set_ylim\n \n axvline(x=0, ymin=0, ymax=1, **kwargs)\n Add a vertical line across the axes.\n \n Parameters\n ----------\n x : scalar, optional, default: 0\n x position in data coordinates of the vertical line.\n \n ymin : scalar, optional, default: 0\n Should be between 0 and 1, 0 being the bottom of the plot, 1 the\n top of the plot.\n \n ymax : scalar, optional, default: 1\n Should be between 0 and 1, 0 being the bottom of the plot, 1 the\n top of the plot.\n \n Returns\n -------\n line : `~matplotlib.lines.Line2D`\n \n Other Parameters\n ----------------\n **kwargs\n Valid keyword arguments are `.Line2D` properties, with the\n exception of 'transform':\n \n Properties:\n agg_filter: a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array\n alpha: float or None\n animated: bool\n antialiased or aa: bool\n clip_box: `.Bbox`\n clip_on: bool\n clip_path: Patch or (Path, Transform) or None\n color or c: color\n contains: callable\n dash_capstyle: {'butt', 'round', 'projecting'}\n dash_joinstyle: {'miter', 'round', 'bevel'}\n dashes: sequence of floats (on/off ink in points) or (None, None)\n data: (2, N) array or two 1D arrays\n drawstyle or ds: {'default', 'steps', 'steps-pre', 'steps-mid', 'steps-post'}, default: 'default'\n figure: `.Figure`\n fillstyle: {'full', 'left', 'right', 'bottom', 'top', 'none'}\n gid: str\n in_layout: bool\n label: object\n linestyle or ls: {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}\n linewidth or lw: float\n marker: marker style\n markeredgecolor or mec: color\n markeredgewidth or mew: float\n markerfacecolor or mfc: color\n markerfacecoloralt or mfcalt: color\n markersize or ms: float\n markevery: None or int or (int, int) or slice or List[int] or float or (float, float)\n path_effects: `.AbstractPathEffect`\n picker: float or callable[[Artist, Event], Tuple[bool, dict]]\n pickradius: float\n rasterized: bool or None\n sketch_params: (scale: float, length: float, randomness: float)\n snap: bool or None\n solid_capstyle: {'butt', 'round', 'projecting'}\n solid_joinstyle: {'miter', 'round', 'bevel'}\n transform: `matplotlib.transforms.Transform`\n url: str\n visible: bool\n xdata: 1D array\n ydata: 1D array\n zorder: float\n \n Examples\n --------\n * draw a thick red vline at *x* = 0 that spans the yrange::\n \n >>> axvline(linewidth=4, color='r')\n \n * draw a default vline at *x* = 1 that spans the yrange::\n \n >>> axvline(x=1)\n \n * draw a default vline at *x* = .5 that spans the middle half of\n the yrange::\n \n >>> axvline(x=.5, ymin=0.25, ymax=0.75)\n \n See also\n --------\n vlines : Add vertical lines in data coordinates.\n axvspan : Add a vertical span (rectangle) across the axis.\n \n axvspan(xmin, xmax, ymin=0, ymax=1, **kwargs)\n Add a vertical span (rectangle) across the axes.\n \n Draw a vertical span (rectangle) from *xmin* to *xmax*. With\n the default values of *ymin* = 0 and *ymax* = 1. This always\n spans the yrange, regardless of the ylim settings, even if you\n change them, e.g., with the :meth:`set_ylim` command. That is,\n the vertical extent is in axes coords: 0=bottom, 0.5=middle,\n 1.0=top but the x location is in data coordinates.\n \n Parameters\n ----------\n xmin : scalar\n Number indicating the first X-axis coordinate of the vertical\n span rectangle in data units.\n xmax : scalar\n Number indicating the second X-axis coordinate of the vertical\n span rectangle in data units.\n ymin : scalar, optional\n Number indicating the first Y-axis coordinate of the vertical\n span rectangle in relative Y-axis units (0-1). Default to 0.\n ymax : scalar, optional\n Number indicating the second Y-axis coordinate of the vertical\n span rectangle in relative Y-axis units (0-1). Default to 1.\n \n Returns\n -------\n rectangle : `~matplotlib.patches.Polygon`\n Vertical span (rectangle) from (xmin, ymin) to (xmax, ymax).\n \n Other Parameters\n ----------------\n **kwargs\n Optional parameters are properties of the class `.Polygon`.\n \n See Also\n --------\n axhspan : Add a horizontal span across the axes.\n \n Examples\n --------\n Draw a vertical, green, translucent rectangle from x = 1.25 to\n x = 1.55 that spans the yrange of the axes.\n \n >>> axvspan(1.25, 1.55, facecolor='g', alpha=0.5)\n \n bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)\n Make a bar plot.\n \n The bars are positioned at *x* with the given *align*\\ment. Their\n dimensions are given by *width* and *height*. The vertical baseline\n is *bottom* (default 0).\n \n Each of *x*, *height*, *width*, and *bottom* may either be a scalar\n applying to all bars, or it may be a sequence of length N providing a\n separate value for each bar.\n \n Parameters\n ----------\n x : sequence of scalars\n The x coordinates of the bars. See also *align* for the\n alignment of the bars to the coordinates.\n \n height : scalar or sequence of scalars\n The height(s) of the bars.\n \n width : scalar or array-like, optional\n The width(s) of the bars (default: 0.8).\n \n bottom : scalar or array-like, optional\n The y coordinate(s) of the bars bases (default: 0).\n \n align : {'center', 'edge'}, optional, default: 'center'\n Alignment of the bars to the *x* coordinates:\n \n - 'center': Center the base on the *x* positions.\n - 'edge': Align the left edges of the bars with the *x* positions.\n \n To align the bars on the right edge pass a negative *width* and\n ``align='edge'``.\n \n Returns\n -------\n container : `.BarContainer`\n Container with all the bars and optionally errorbars.\n \n Other Parameters\n ----------------\n color : scalar or array-like, optional\n The colors of the bar faces.\n \n edgecolor : scalar or array-like, optional\n The colors of the bar edges.\n \n linewidth : scalar or array-like, optional\n Width of the bar edge(s). If 0, don't draw edges.\n \n tick_label : str or array-like, optional\n The tick labels of the bars.\n Default: None (Use default numeric labels.)\n \n xerr, yerr : scalar or array-like of shape(N,) or shape(2, N), optional\n If not *None*, add horizontal / vertical errorbars to the bar tips.\n The values are +/- sizes relative to the data:\n \n - scalar: symmetric +/- values for all bars\n - shape(N,): symmetric +/- values for each bar\n - shape(2, N): Separate - and + values for each bar. First row\n contains the lower errors, the second row contains the upper\n errors.\n - *None*: No errorbar. (Default)\n \n See :doc:`/gallery/statistics/errorbar_features`\n for an example on the usage of ``xerr`` and ``yerr``.\n \n ecolor : scalar or array-like, optional, default: 'black'\n The line color of the errorbars.\n \n capsize : scalar, optional\n The length of the error bar caps in points.\n Default: None, which will take the value from\n :rc:`errorbar.capsize`.\n \n error_kw : dict, optional\n Dictionary of kwargs to be passed to the `~.Axes.errorbar`\n method. Values of *ecolor* or *capsize* defined here take\n precedence over the independent kwargs.\n \n log : bool, optional, default: False\n If *True*, set the y-axis to be log scale.\n \n orientation : {'vertical', 'horizontal'}, optional\n *This is for internal use only.* Please use `barh` for\n horizontal bar plots. Default: 'vertical'.\n \n See also\n --------\n barh: Plot a horizontal bar plot.\n \n Notes\n -----\n The optional arguments *color*, *edgecolor*, *linewidth*,\n *xerr*, and *yerr* can be either scalars or sequences of\n length equal to the number of bars. This enables you to use\n bar as the basis for stacked bar charts, or candlestick plots.\n Detail: *xerr* and *yerr* are passed directly to\n :meth:`errorbar`, so they can also have shape 2xN for\n independent specification of lower and upper errors.\n \n Other optional kwargs:\n \n Properties:\n agg_filter: a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array\n alpha: float or None\n animated: bool\n antialiased or aa: unknown\n capstyle: {'butt', 'round', 'projecting'}\n clip_box: `.Bbox`\n clip_on: bool\n clip_path: Patch or (Path, Transform) or None\n color: color\n contains: callable\n edgecolor or ec: color or None or 'auto'\n facecolor or fc: color or None\n figure: `.Figure`\n fill: bool\n gid: str\n hatch: {'/', '\\\\', '|', '-', '+', 'x', 'o', 'O', '.', '*'}\n in_layout: bool\n joinstyle: {'miter', 'round', 'bevel'}\n label: object\n linestyle or ls: {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}\n linewidth or lw: float or None\n path_effects: `.AbstractPathEffect`\n picker: None or bool or float or callable\n rasterized: bool or None\n sketch_params: (scale: float, length: float, randomness: float)\n snap: bool or None\n transform: `.Transform`\n url: str\n visible: bool\n zorder: float\n \n .. note::\n In addition to the above described arguments, this function can take a\n **data** keyword argument. If such a **data** argument is given, the\n following arguments are replaced by **data[<arg>]**:\n \n * All positional and all keyword arguments.\n \n Objects passed as **data** must support item access (``data[<arg>]``) and\n membership test (``<arg> in data``).\n \n barbs(*args, data=None, **kw)\n Plot a 2D field of barbs.\n \n Call signature::\n \n barbs([X, Y], U, V, [C], **kw)\n \n Where *X*, *Y* define the barb locations, *U*, *V* define the barb\n directions, and *C* optionally sets the color.\n \n All arguments may be 1D or 2D. *U*, *V*, *C* may be masked arrays, but masked\n *X*, *Y* are not supported at present.\n \n Barbs are traditionally used in meteorology as a way to plot the speed\n and direction of wind observations, but can technically be used to\n plot any two dimensional vector quantity. As opposed to arrows, which\n give vector magnitude by the length of the arrow, the barbs give more\n quantitative information about the vector magnitude by putting slanted\n lines or a triangle for various increments in magnitude, as show\n schematically below::\n \n : /\\ \\\n : / \\ \\\n : / \\ \\ \\\n : / \\ \\ \\\n : ------------------------------\n \n \n The largest increment is given by a triangle (or \"flag\"). After those\n come full lines (barbs). The smallest increment is a half line. There\n is only, of course, ever at most 1 half line. If the magnitude is\n small and only needs a single half-line and no full lines or\n triangles, the half-line is offset from the end of the barb so that it\n can be easily distinguished from barbs with a single full line. The\n magnitude for the barb shown above would nominally be 65, using the\n standard increments of 50, 10, and 5.\n \n See also https://en.wikipedia.org/wiki/Wind_barb.\n \n \n \n Parameters\n ----------\n X, Y : 1D or 2D array-like, optional\n The x and y coordinates of the barb locations. See *pivot* for how the\n barbs are drawn to the x, y positions.\n \n If not given, they will be generated as a uniform integer meshgrid based\n on the dimensions of *U* and *V*.\n \n If *X* and *Y* are 1D but *U*, *V* are 2D, *X*, *Y* are expanded to 2D\n using ``X, Y = np.meshgrid(X, Y)``. In this case ``len(X)`` and ``len(Y)``\n must match the column and row dimensions of *U* and *V*.\n \n U, V : 1D or 2D array-like\n The x and y components of the barb shaft.\n \n C : 1D or 2D array-like, optional\n Numeric data that defines the barb colors by colormapping via *norm* and\n *cmap*.\n \n This does not support explicit colors. If you want to set colors directly,\n use *barbcolor* instead.\n \n length : float, default: 7\n Length of the barb in points; the other parts of the barb\n are scaled against this.\n \n pivot : {'tip', 'middle'} or float, default: 'tip'\n The part of the arrow that is anchored to the *X*, *Y* grid. The barb\n rotates about this point. This can also be a number, which shifts the\n start of the barb that many points away from grid point.\n \n barbcolor : color or color sequence\n Specifies the color of all parts of the barb except for the flags. This\n parameter is analogous to the *edgecolor* parameter for polygons,\n which can be used instead. However this parameter will override\n facecolor.\n \n flagcolor : color or color sequence\n Specifies the color of any flags on the barb. This parameter is\n analogous to the *facecolor* parameter for polygons, which can be\n used instead. However, this parameter will override facecolor. If\n this is not set (and *C* has not either) then *flagcolor* will be\n set to match *barbcolor* so that the barb has a uniform color. If\n *C* has been set, *flagcolor* has no effect.\n \n sizes : dict, optional\n A dictionary of coefficients specifying the ratio of a given\n feature to the length of the barb. Only those values one wishes to\n override need to be included. These features include:\n \n - 'spacing' - space between features (flags, full/half barbs)\n - 'height' - height (distance from shaft to top) of a flag or full barb\n - 'width' - width of a flag, twice the width of a full barb\n - 'emptybarb' - radius of the circle used for low magnitudes\n \n fill_empty : bool, default: False\n Whether the empty barbs (circles) that are drawn should be filled with\n the flag color. If they are not filled, the center is transparent.\n \n rounding : bool, default: True\n Whether the vector magnitude should be rounded when allocating barb\n components. If True, the magnitude is rounded to the nearest multiple\n of the half-barb increment. If False, the magnitude is simply truncated\n to the next lowest multiple.\n \n barb_increments : dict, optional\n A dictionary of increments specifying values to associate with\n different parts of the barb. Only those values one wishes to\n override need to be included.\n \n - 'half' - half barbs (Default is 5)\n - 'full' - full barbs (Default is 10)\n - 'flag' - flags (default is 50)\n \n flip_barb : bool or array-like of bool, default: False\n Whether the lines and flags should point opposite to normal.\n Normal behavior is for the barbs and lines to point right (comes from wind\n barbs having these features point towards low pressure in the Northern\n Hemisphere).\n \n A single value is applied to all barbs. Individual barbs can be flipped by\n passing a bool array of the same size as *U* and *V*.\n \n Returns\n -------\n barbs : `~matplotlib.quiver.Barbs`\n \n Other Parameters\n ----------------\n **kwargs\n The barbs can further be customized using `.PolyCollection` keyword\n arguments:\n \n Properties:\n agg_filter: a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array\n alpha: float or None\n animated: bool\n antialiased or aa or antialiaseds: bool or sequence of bools\n array: ndarray\n capstyle: {'butt', 'round', 'projecting'}\n clim: (vmin: float, vmax: float)\n clip_box: `.Bbox`\n clip_on: bool\n clip_path: Patch or (Path, Transform) or None\n cmap: colormap or registered colormap name\n color: color or sequence of rgba tuples\n contains: callable\n edgecolor or ec or edgecolors: color or sequence of colors or 'face'\n facecolor or facecolors or fc: color or sequence of colors\n figure: `.Figure`\n gid: str\n hatch: {'/', '\\\\', '|', '-', '+', 'x', 'o', 'O', '.', '*'}\n in_layout: bool\n joinstyle: {'miter', 'round', 'bevel'}\n label: object\n linestyle or dashes or linestyles or ls: {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}\n linewidth or linewidths or lw: float or sequence of floats\n norm: `.Normalize`\n offset_position: {'screen', 'data'}\n offsets: array-like (N, 2) or (2,)\n path_effects: `.AbstractPathEffect`\n picker: None or bool or float or callable\n pickradius: unknown\n rasterized: bool or None\n sketch_params: (scale: float, length: float, randomness: float)\n snap: bool or None\n transform: `.Transform`\n url: str\n urls: List[str] or None\n visible: bool\n zorder: float\n \n Notes\n -----\n \n \n .. note::\n In addition to the above described arguments, this function can take a\n **data** keyword argument. If such a **data** argument is given, the\n following arguments are replaced by **data[<arg>]**:\n \n * All positional and all keyword arguments.\n \n Objects passed as **data** must support item access (``data[<arg>]``) and\n membership test (``<arg> in data``).\n \n barh(y, width, height=0.8, left=None, *, align='center', **kwargs)\n Make a horizontal bar plot.\n \n The bars are positioned at *y* with the given *align*\\ment. Their\n dimensions are given by *width* and *height*. The horizontal baseline\n is *left* (default 0).\n \n Each of *y*, *width*, *height*, and *left* may either be a scalar\n applying to all bars, or it may be a sequence of length N providing a\n separate value for each bar.\n \n Parameters\n ----------\n y : scalar or array-like\n The y coordinates of the bars. See also *align* for the\n alignment of the bars to the coordinates.\n \n width : scalar or array-like\n The width(s) of the bars.\n \n height : sequence of scalars, optional, default: 0.8\n The heights of the bars.\n \n left : sequence of scalars\n The x coordinates of the left sides of the bars (default: 0).\n \n align : {'center', 'edge'}, optional, default: 'center'\n Alignment of the base to the *y* coordinates*:\n \n - 'center': Center the bars on the *y* positions.\n - 'edge': Align the bottom edges of the bars with the *y*\n positions.\n \n To align the bars on the top edge pass a negative *height* and\n ``align='edge'``.\n \n Returns\n -------\n container : `.BarContainer`\n Container with all the bars and optionally errorbars.\n \n Other Parameters\n ----------------\n color : scalar or array-like, optional\n The colors of the bar faces.\n \n edgecolor : scalar or array-like, optional\n The colors of the bar edges.\n \n linewidth : scalar or array-like, optional\n Width of the bar edge(s). If 0, don't draw edges.\n \n tick_label : str or array-like, optional\n The tick labels of the bars.\n Default: None (Use default numeric labels.)\n \n xerr, yerr : scalar or array-like of shape(N,) or shape(2, N), optional\n If not ``None``, add horizontal / vertical errorbars to the\n bar tips. The values are +/- sizes relative to the data:\n \n - scalar: symmetric +/- values for all bars\n - shape(N,): symmetric +/- values for each bar\n - shape(2, N): Separate - and + values for each bar. First row\n contains the lower errors, the second row contains the upper\n errors.\n - *None*: No errorbar. (default)\n \n See :doc:`/gallery/statistics/errorbar_features`\n for an example on the usage of ``xerr`` and ``yerr``.\n \n ecolor : scalar or array-like, optional, default: 'black'\n The line color of the errorbars.\n \n capsize : scalar, optional\n The length of the error bar caps in points.\n Default: None, which will take the value from\n :rc:`errorbar.capsize`.\n \n error_kw : dict, optional\n Dictionary of kwargs to be passed to the `~.Axes.errorbar`\n method. Values of *ecolor* or *capsize* defined here take\n precedence over the independent kwargs.\n \n log : bool, optional, default: False\n If ``True``, set the x-axis to be log scale.\n \n See also\n --------\n bar: Plot a vertical bar plot.\n \n Notes\n -----\n The optional arguments *color*, *edgecolor*, *linewidth*,\n *xerr*, and *yerr* can be either scalars or sequences of\n length equal to the number of bars. This enables you to use\n bar as the basis for stacked bar charts, or candlestick plots.\n Detail: *xerr* and *yerr* are passed directly to\n :meth:`errorbar`, so they can also have shape 2xN for\n independent specification of lower and upper errors.\n \n Other optional kwargs:\n \n Properties:\n agg_filter: a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array\n alpha: float or None\n animated: bool\n antialiased or aa: unknown\n capstyle: {'butt', 'round', 'projecting'}\n clip_box: `.Bbox`\n clip_on: bool\n clip_path: Patch or (Path, Transform) or None\n color: color\n contains: callable\n edgecolor or ec: color or None or 'auto'\n facecolor or fc: color or None\n figure: `.Figure`\n fill: bool\n gid: str\n hatch: {'/', '\\\\', '|', '-', '+', 'x', 'o', 'O', '.', '*'}\n in_layout: bool\n joinstyle: {'miter', 'round', 'bevel'}\n label: object\n linestyle or ls: {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}\n linewidth or lw: float or None\n path_effects: `.AbstractPathEffect`\n picker: None or bool or float or callable\n rasterized: bool or None\n sketch_params: (scale: float, length: float, randomness: float)\n snap: bool or None\n transform: `.Transform`\n url: str\n visible: bool\n zorder: float\n \n bone()\n Set the colormap to \"bone\".\n \n This changes the default colormap as well as the colormap of the current\n image if there is one. See ``help(colormaps)`` for more information.\n \n box(on=None)\n Turn the axes box on or off on the current axes.\n \n Parameters\n ----------\n on : bool or None\n The new `~matplotlib.axes.Axes` box state. If ``None``, toggle\n the state.\n \n See Also\n --------\n :meth:`matplotlib.axes.Axes.set_frame_on`\n :meth:`matplotlib.axes.Axes.get_frame_on`\n \n boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, patch_artist=None, bootstrap=None, usermedians=None, conf_intervals=None, meanline=None, showmeans=None, showcaps=None, showbox=None, showfliers=None, boxprops=None, labels=None, flierprops=None, medianprops=None, meanprops=None, capprops=None, whiskerprops=None, manage_ticks=True, autorange=False, zorder=None, *, data=None)\n Make a box and whisker plot.\n \n Make a box and whisker plot for each column of ``x`` or each\n vector in sequence ``x``. The box extends from the lower to\n upper quartile values of the data, with a line at the median.\n The whiskers extend from the box to show the range of the\n data. Flier points are those past the end of the whiskers.\n \n Parameters\n ----------\n x : Array or a sequence of vectors.\n The input data.\n \n notch : bool, optional (False)\n If `True`, will produce a notched box plot. Otherwise, a\n rectangular boxplot is produced. The notches represent the\n confidence interval (CI) around the median. See the entry\n for the ``bootstrap`` parameter for information regarding\n how the locations of the notches are computed.\n \n .. note::\n \n In cases where the values of the CI are less than the\n lower quartile or greater than the upper quartile, the\n notches will extend beyond the box, giving it a\n distinctive \"flipped\" appearance. This is expected\n behavior and consistent with other statistical\n visualization packages.\n \n sym : str, optional\n The default symbol for flier points. Enter an empty string\n ('') if you don't want to show fliers. If `None`, then the\n fliers default to 'b+' If you want more control use the\n flierprops kwarg.\n \n vert : bool, optional (True)\n If `True` (default), makes the boxes vertical. If `False`,\n everything is drawn horizontally.\n \n whis : float or (float, float) (default = 1.5)\n The position of the whiskers.\n \n If a float, the lower whisker is at the lowest datum above\n ``Q1 - whis*(Q3-Q1)``, and the upper whisker at the highest datum\n below ``Q3 + whis*(Q3-Q1)``, where Q1 and Q3 are the first and\n third quartiles. The default value of ``whis = 1.5`` corresponds\n to Tukey's original definition of boxplots.\n \n If a pair of floats, they indicate the percentiles at which to\n draw the whiskers (e.g., (5, 95)). In particular, setting this to\n (0, 100) results in whiskers covering the whole range of the data.\n \"range\" is a deprecated synonym for (0, 100).\n \n In the edge case where ``Q1 == Q3``, *whis* is automatically set\n to (0, 100) (cover the whole range of the data) if *autorange* is\n True.\n \n Beyond the whiskers, data are considered outliers and are plotted\n as individual points.\n \n bootstrap : int, optional\n Specifies whether to bootstrap the confidence intervals\n around the median for notched boxplots. If ``bootstrap`` is\n None, no bootstrapping is performed, and notches are\n calculated using a Gaussian-based asymptotic approximation\n (see McGill, R., Tukey, J.W., and Larsen, W.A., 1978, and\n Kendall and Stuart, 1967). Otherwise, bootstrap specifies\n the number of times to bootstrap the median to determine its\n 95% confidence intervals. Values between 1000 and 10000 are\n recommended.\n \n usermedians : array-like, optional\n An array or sequence whose first dimension (or length) is\n compatible with ``x``. This overrides the medians computed\n by matplotlib for each element of ``usermedians`` that is not\n `None`. When an element of ``usermedians`` is None, the median\n will be computed by matplotlib as normal.\n \n conf_intervals : array-like, optional\n Array or sequence whose first dimension (or length) is\n compatible with ``x`` and whose second dimension is 2. When\n the an element of ``conf_intervals`` is not None, the\n notch locations computed by matplotlib are overridden\n (provided ``notch`` is `True`). When an element of\n ``conf_intervals`` is `None`, the notches are computed by the\n method specified by the other kwargs (e.g., ``bootstrap``).\n \n positions : array-like, optional\n Sets the positions of the boxes. The ticks and limits are\n automatically set to match the positions. Defaults to\n `range(1, N+1)` where N is the number of boxes to be drawn.\n \n widths : scalar or array-like\n Sets the width of each box either with a scalar or a\n sequence. The default is 0.5, or ``0.15*(distance between\n extreme positions)``, if that is smaller.\n \n patch_artist : bool, optional (False)\n If `False` produces boxes with the Line2D artist. Otherwise,\n boxes and drawn with Patch artists.\n \n labels : sequence, optional\n Labels for each dataset. Length must be compatible with\n dimensions of ``x``.\n \n manage_ticks : bool, optional (True)\n If True, the tick locations and labels will be adjusted to match\n the boxplot positions.\n \n autorange : bool, optional (False)\n When `True` and the data are distributed such that the 25th and\n 75th percentiles are equal, ``whis`` is set to (0, 100) such\n that the whisker ends are at the minimum and maximum of the data.\n \n meanline : bool, optional (False)\n If `True` (and ``showmeans`` is `True`), will try to render\n the mean as a line spanning the full width of the box\n according to ``meanprops`` (see below). Not recommended if\n ``shownotches`` is also True. Otherwise, means will be shown\n as points.\n \n zorder : scalar, optional (None)\n Sets the zorder of the boxplot.\n \n Other Parameters\n ----------------\n showcaps : bool, optional (True)\n Show the caps on the ends of whiskers.\n showbox : bool, optional (True)\n Show the central box.\n showfliers : bool, optional (True)\n Show the outliers beyond the caps.\n showmeans : bool, optional (False)\n Show the arithmetic means.\n capprops : dict, optional (None)\n Specifies the style of the caps.\n boxprops : dict, optional (None)\n Specifies the style of the box.\n whiskerprops : dict, optional (None)\n Specifies the style of the whiskers.\n flierprops : dict, optional (None)\n Specifies the style of the fliers.\n medianprops : dict, optional (None)\n Specifies the style of the median.\n meanprops : dict, optional (None)\n Specifies the style of the mean.\n \n Returns\n -------\n result : dict\n A dictionary mapping each component of the boxplot to a list\n of the `.Line2D` instances created. That dictionary has the\n following keys (assuming vertical boxplots):\n \n - ``boxes``: the main body of the boxplot showing the\n quartiles and the median's confidence intervals if\n enabled.\n \n - ``medians``: horizontal lines at the median of each box.\n \n - ``whiskers``: the vertical lines extending to the most\n extreme, non-outlier data points.\n \n - ``caps``: the horizontal lines at the ends of the\n whiskers.\n \n - ``fliers``: points representing data that extend beyond\n the whiskers (fliers).\n \n - ``means``: points or lines representing the means.\n \n Notes\n -----\n \n \n .. note::\n In addition to the above described arguments, this function can take a\n **data** keyword argument. If such a **data** argument is given, the\n following arguments are replaced by **data[<arg>]**:\n \n * All positional and all keyword arguments.\n \n Objects passed as **data** must support item access (``data[<arg>]``) and\n membership test (``<arg> in data``).\n \n broken_barh(xranges, yrange, *, data=None, **kwargs)\n Plot a horizontal sequence of rectangles.\n \n A rectangle is drawn for each element of *xranges*. All rectangles\n have the same vertical position and size defined by *yrange*.\n \n This is a convenience function for instantiating a\n `.BrokenBarHCollection`, adding it to the axes and autoscaling the\n view.\n \n Parameters\n ----------\n xranges : sequence of tuples (*xmin*, *xwidth*)\n The x-positions and extends of the rectangles. For each tuple\n (*xmin*, *xwidth*) a rectangle is drawn from *xmin* to *xmin* +\n *xwidth*.\n yrange : (*ymin*, *yheight*)\n The y-position and extend for all the rectangles.\n \n Other Parameters\n ----------------\n **kwargs : :class:`.BrokenBarHCollection` properties\n \n Each *kwarg* can be either a single argument applying to all\n rectangles, e.g.::\n \n facecolors='black'\n \n or a sequence of arguments over which is cycled, e.g.::\n \n facecolors=('black', 'blue')\n \n would create interleaving black and blue rectangles.\n \n Supported keywords:\n \n Properties:\n agg_filter: a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array\n alpha: float or None\n animated: bool\n antialiased or aa or antialiaseds: bool or sequence of bools\n array: ndarray\n capstyle: {'butt', 'round', 'projecting'}\n clim: (vmin: float, vmax: float)\n clip_box: `.Bbox`\n clip_on: bool\n clip_path: Patch or (Path, Transform) or None\n cmap: colormap or registered colormap name\n color: color or sequence of rgba tuples\n contains: callable\n edgecolor or ec or edgecolors: color or sequence of colors or 'face'\n facecolor or facecolors or fc: color or sequence of colors\n figure: `.Figure`\n gid: str\n hatch: {'/', '\\\\', '|', '-', '+', 'x', 'o', 'O', '.', '*'}\n in_layout: bool\n joinstyle: {'miter', 'round', 'bevel'}\n label: object\n linestyle or dashes or linestyles or ls: {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}\n linewidth or linewidths or lw: float or sequence of floats\n norm: `.Normalize`\n offset_position: {'screen', 'data'}\n offsets: array-like (N, 2) or (2,)\n path_effects: `.AbstractPathEffect`\n picker: None or bool or float or callable\n pickradius: unknown\n rasterized: bool or None\n sketch_params: (scale: float, length: float, randomness: float)\n snap: bool or None\n transform: `.Transform`\n url: str\n urls: List[str] or None\n visible: bool\n zorder: float\n \n Returns\n -------\n collection : A :class:`~.collections.BrokenBarHCollection`\n \n Notes\n -----\n \n \n .. note::\n In addition to the above described arguments, this function can take a\n **data** keyword argument. If such a **data** argument is given, the\n following arguments are replaced by **data[<arg>]**:\n \n * All positional and all keyword arguments.\n \n Objects passed as **data** must support item access (``data[<arg>]``) and\n membership test (``<arg> in data``).\n \n cla()\n Clear the current axes.\n \n clabel(CS, *args, **kwargs)\n Label a contour plot.\n \n Adds labels to line contours in this `.ContourSet` (which inherits from\n this mixin class).\n \n Parameters\n ----------\n levels : array-like, optional\n A list of level values, that should be labeled. The list must be\n a subset of ``cs.levels``. If not given, all levels are labeled.\n \n fontsize : str or float, optional\n Size in points or relative size e.g., 'smaller', 'x-large'.\n See `.Text.set_size` for accepted string values.\n \n colors : color-spec, optional\n The label colors:\n \n - If *None*, the color of each label matches the color of\n the corresponding contour.\n \n - If one string color, e.g., *colors* = 'r' or *colors* =\n 'red', all labels will be plotted in this color.\n \n - If a tuple of matplotlib color args (string, float, rgb, etc),\n different labels will be plotted in different colors in the order\n specified.\n \n inline : bool, optional\n If ``True`` the underlying contour is removed where the label is\n placed. Default is ``True``.\n \n inline_spacing : float, optional\n Space in pixels to leave on each side of label when\n placing inline. Defaults to 5.\n \n This spacing will be exact for labels at locations where the\n contour is straight, less so for labels on curved contours.\n \n fmt : str or dict, optional\n A format string for the label. Default is '%1.3f'\n \n Alternatively, this can be a dictionary matching contour levels\n with arbitrary strings to use for each contour level (i.e.,\n fmt[level]=string), or it can be any callable, such as a\n `.Formatter` instance, that returns a string when called with a\n numeric contour level.\n \n manual : bool or iterable, optional\n If ``True``, contour labels will be placed manually using\n mouse clicks. Click the first button near a contour to\n add a label, click the second button (or potentially both\n mouse buttons at once) to finish adding labels. The third\n button can be used to remove the last label added, but\n only if labels are not inline. Alternatively, the keyboard\n can be used to select label locations (enter to end label\n placement, delete or backspace act like the third mouse button,\n and any other key will select a label location).\n \n *manual* can also be an iterable object of (x, y) tuples.\n Contour labels will be created as if mouse is clicked at each\n (x, y) position.\n \n rightside_up : bool, optional\n If ``True``, label rotations will always be plus\n or minus 90 degrees from level. Default is ``True``.\n \n use_clabeltext : bool, optional\n If ``True``, `.ClabelText` class (instead of `.Text`) is used to\n create labels. `ClabelText` recalculates rotation angles\n of texts during the drawing time, therefore this can be used if\n aspect of the axes changes. Default is ``False``.\n \n Returns\n -------\n labels\n A list of `.Text` instances for the labels.\n \n clf()\n Clear the current figure.\n \n clim(vmin=None, vmax=None)\n Set the color limits of the current image.\n \n If either *vmin* or *vmax* is None, the image min/max respectively\n will be used for color scaling.\n \n If you want to set the clim of multiple images, use\n `~.ScalarMappable.set_clim` on every image, for example::\n \n for im in gca().get_images():\n im.set_clim(0, 0.5)\n \n close(fig=None)\n Close a figure window.\n \n Parameters\n ----------\n fig : None or int or str or `.Figure`\n The figure to close. There are a number of ways to specify this:\n \n - *None*: the current figure\n - `.Figure`: the given `.Figure` instance\n - ``int``: a figure number\n - ``str``: a figure name\n - 'all': all figures\n \n cohere(x, y, NFFT=256, Fs=2, Fc=0, detrend=<function detrend_none at 0x7f4440ecac20>, window=<function window_hanning at 0x7f4440f49c20>, noverlap=0, pad_to=None, sides='default', scale_by_freq=None, *, data=None, **kwargs)\n Plot the coherence between *x* and *y*.\n \n Plot the coherence between *x* and *y*. Coherence is the\n normalized cross spectral density:\n \n .. math::\n \n C_{xy} = \\frac{|P_{xy}|^2}{P_{xx}P_{yy}}\n \n Parameters\n ----------\n Fs : scalar\n The sampling frequency (samples per time unit). It is used\n to calculate the Fourier frequencies, freqs, in cycles per time\n unit. The default value is 2.\n \n window : callable or ndarray\n A function or a vector of length *NFFT*. To create window vectors see\n `window_hanning`, `window_none`, `numpy.blackman`, `numpy.hamming`,\n `numpy.bartlett`, `scipy.signal`, `scipy.signal.get_window`, etc. The\n default is `window_hanning`. If a function is passed as the argument,\n it must take a data segment as an argument and return the windowed\n version of the segment.\n \n sides : {'default', 'onesided', 'twosided'}\n Specifies which sides of the spectrum to return. Default gives the\n default behavior, which returns one-sided for real data and both\n for complex data. 'onesided' forces the return of a one-sided\n spectrum, while 'twosided' forces two-sided.\n \n pad_to : int\n The number of points to which the data segment is padded when\n performing the FFT. This can be different from *NFFT*, which\n specifies the number of data points used. While not increasing\n the actual resolution of the spectrum (the minimum distance between\n resolvable peaks), this can give more points in the plot,\n allowing for more detail. This corresponds to the *n* parameter\n in the call to fft(). The default is None, which sets *pad_to*\n equal to *NFFT*\n \n NFFT : int\n The number of data points used in each block for the FFT.\n A power 2 is most efficient. The default value is 256.\n This should *NOT* be used to get zero padding, or the scaling of the\n result will be incorrect. Use *pad_to* for this instead.\n \n detrend : {'none', 'mean', 'linear'} or callable, default 'none'\n The function applied to each segment before fft-ing, designed to\n remove the mean or linear trend. Unlike in MATLAB, where the\n *detrend* parameter is a vector, in Matplotlib is it a function.\n The :mod:`~matplotlib.mlab` module defines `.detrend_none`,\n `.detrend_mean`, and `.detrend_linear`, but you can use a custom\n function as well. You can also use a string to choose one of the\n functions: 'none' calls `.detrend_none`. 'mean' calls `.detrend_mean`.\n 'linear' calls `.detrend_linear`.\n \n scale_by_freq : bool, optional\n Specifies whether the resulting density values should be scaled\n by the scaling frequency, which gives density in units of Hz^-1.\n This allows for integration over the returned frequency values.\n The default is True for MATLAB compatibility.\n \n noverlap : int\n The number of points of overlap between blocks. The\n default value is 0 (no overlap).\n \n Fc : int\n The center frequency of *x* (defaults to 0), which offsets\n the x extents of the plot to reflect the frequency range used\n when a signal is acquired and then filtered and downsampled to\n baseband.\n \n \n Returns\n -------\n Cxy : 1-D array\n The coherence vector.\n \n freqs : 1-D array\n The frequencies for the elements in *Cxy*.\n \n Other Parameters\n ----------------\n **kwargs\n Keyword arguments control the `.Line2D` properties:\n \n Properties:\n agg_filter: a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array\n alpha: float or None\n animated: bool\n antialiased or aa: bool\n clip_box: `.Bbox`\n clip_on: bool\n clip_path: Patch or (Path, Transform) or None\n color or c: color\n contains: callable\n dash_capstyle: {'butt', 'round', 'projecting'}\n dash_joinstyle: {'miter', 'round', 'bevel'}\n dashes: sequence of floats (on/off ink in points) or (None, None)\n data: (2, N) array or two 1D arrays\n drawstyle or ds: {'default', 'steps', 'steps-pre', 'steps-mid', 'steps-post'}, default: 'default'\n figure: `.Figure`\n fillstyle: {'full', 'left', 'right', 'bottom', 'top', 'none'}\n gid: str\n in_layout: bool\n label: object\n linestyle or ls: {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}\n linewidth or lw: float\n marker: marker style\n markeredgecolor or mec: color\n markeredgewidth or mew: float\n markerfacecolor or mfc: color\n markerfacecoloralt or mfcalt: color\n markersize or ms: float\n markevery: None or int or (int, int) or slice or List[int] or float or (float, float)\n path_effects: `.AbstractPathEffect`\n picker: float or callable[[Artist, Event], Tuple[bool, dict]]\n pickradius: float\n rasterized: bool or None\n sketch_params: (scale: float, length: float, randomness: float)\n snap: bool or None\n solid_capstyle: {'butt', 'round', 'projecting'}\n solid_joinstyle: {'miter', 'round', 'bevel'}\n transform: `matplotlib.transforms.Transform`\n url: str\n visible: bool\n xdata: 1D array\n ydata: 1D array\n zorder: float\n \n References\n ----------\n Bendat & Piersol -- Random Data: Analysis and Measurement Procedures,\n John Wiley & Sons (1986)\n \n Notes\n -----\n \n \n .. note::\n In addition to the above described arguments, this function can take a\n **data** keyword argument. If such a **data** argument is given, the\n following arguments are replaced by **data[<arg>]**:\n \n * All arguments with the following names: 'x', 'y'.\n \n Objects passed as **data** must support item access (``data[<arg>]``) and\n membership test (``<arg> in data``).\n \n colorbar(mappable=None, cax=None, ax=None, **kw)\n Add a colorbar to a plot.\n \n Function signatures for the :mod:`~matplotlib.pyplot` interface; all\n but the first are also method signatures for the\n :meth:`~matplotlib.figure.Figure.colorbar` method::\n \n colorbar(**kwargs)\n colorbar(mappable, **kwargs)\n colorbar(mappable, cax=cax, **kwargs)\n colorbar(mappable, ax=ax, **kwargs)\n \n Parameters\n ----------\n mappable\n The `matplotlib.cm.ScalarMappable` (i.e., `~matplotlib.image.Image`,\n `~matplotlib.contour.ContourSet`, etc.) described by this colorbar.\n This argument is mandatory for the `.Figure.colorbar` method but optional\n for the `.pyplot.colorbar` function, which sets the default to the current\n image.\n \n Note that one can create a `ScalarMappable` \"on-the-fly\" to generate\n colorbars not attached to a previously drawn artist, e.g. ::\n \n fig.colorbar(cm.ScalarMappable(norm=norm, cmap=cmap), ax=ax)\n \n cax : :class:`~matplotlib.axes.Axes` object, optional\n Axes into which the colorbar will be drawn.\n \n ax : :class:`~matplotlib.axes.Axes`, list of Axes, optional\n Parent axes from which space for a new colorbar axes will be stolen.\n If a list of axes is given they will all be resized to make room for the\n colorbar axes.\n \n use_gridspec : bool, optional\n If *cax* is ``None``, a new *cax* is created as an instance of Axes. If\n *ax* is an instance of Subplot and *use_gridspec* is ``True``, *cax* is\n created as an instance of Subplot using the :mod:`~.gridspec` module.\n \n Returns\n -------\n colorbar : `~matplotlib.colorbar.Colorbar`\n See also its base class, `~matplotlib.colorbar.ColorbarBase`.\n \n Notes\n -----\n Additional keyword arguments are of two kinds:\n \n axes properties:\n \n \n ============= ====================================================\n Property Description\n ============= ====================================================\n *orientation* vertical or horizontal\n *fraction* 0.15; fraction of original axes to use for colorbar\n *pad* 0.05 if vertical, 0.15 if horizontal; fraction\n of original axes between colorbar and new image axes\n *shrink* 1.0; fraction by which to multiply the size of the colorbar\n *aspect* 20; ratio of long to short dimensions\n *anchor* (0.0, 0.5) if vertical; (0.5, 1.0) if horizontal;\n the anchor point of the colorbar axes\n *panchor* (1.0, 0.5) if vertical; (0.5, 0.0) if horizontal;\n the anchor point of the colorbar parent axes. If\n False, the parent axes' anchor will be unchanged\n ============= ====================================================\n \n \n colorbar properties:\n \n \n ============ ====================================================\n Property Description\n ============ ====================================================\n *extend* {'neither', 'both', 'min', 'max'}\n If not 'neither', make pointed end(s) for out-of-\n range values. These are set for a given colormap\n using the colormap set_under and set_over methods.\n *extendfrac* {*None*, 'auto', length, lengths}\n If set to *None*, both the minimum and maximum\n triangular colorbar extensions with have a length of\n 5% of the interior colorbar length (this is the\n default setting). If set to 'auto', makes the\n triangular colorbar extensions the same lengths as\n the interior boxes (when *spacing* is set to\n 'uniform') or the same lengths as the respective\n adjacent interior boxes (when *spacing* is set to\n 'proportional'). If a scalar, indicates the length\n of both the minimum and maximum triangular colorbar\n extensions as a fraction of the interior colorbar\n length. A two-element sequence of fractions may also\n be given, indicating the lengths of the minimum and\n maximum colorbar extensions respectively as a\n fraction of the interior colorbar length.\n *extendrect* bool\n If *False* the minimum and maximum colorbar extensions\n will be triangular (the default). If *True* the\n extensions will be rectangular.\n *spacing* {'uniform', 'proportional'}\n Uniform spacing gives each discrete color the same\n space; proportional makes the space proportional to\n the data interval.\n *ticks* *None* or list of ticks or Locator\n If None, ticks are determined automatically from the\n input.\n *format* None or str or Formatter\n If None, the\n :class:`~matplotlib.ticker.ScalarFormatter` is used.\n If a format string is given, e.g., '%.3f', that is\n used. An alternative\n :class:`~matplotlib.ticker.Formatter` object may be\n given instead.\n *drawedges* bool\n Whether to draw lines at color boundaries.\n *label* str\n The label on the colorbar's long axis.\n ============ ====================================================\n \n The following will probably be useful only in the context of\n indexed colors (that is, when the mappable has norm=NoNorm()),\n or other unusual circumstances.\n \n ============ ===================================================\n Property Description\n ============ ===================================================\n *boundaries* None or a sequence\n *values* None or a sequence which must be of length 1 less\n than the sequence of *boundaries*. For each region\n delimited by adjacent entries in *boundaries*, the\n color mapped to the corresponding value in values\n will be used.\n ============ ===================================================\n \n \n \n If *mappable* is a :class:`~matplotlib.contours.ContourSet`, its *extend*\n kwarg is included automatically.\n \n The *shrink* kwarg provides a simple way to scale the colorbar with respect\n to the axes. Note that if *cax* is specified, it determines the size of the\n colorbar and *shrink* and *aspect* kwargs are ignored.\n \n For more precise control, you can manually specify the positions of\n the axes objects in which the mappable and the colorbar are drawn. In\n this case, do not use any of the axes properties kwargs.\n \n It is known that some vector graphics viewers (svg and pdf) renders white gaps\n between segments of the colorbar. This is due to bugs in the viewers, not\n Matplotlib. As a workaround, the colorbar can be rendered with overlapping\n segments::\n \n cbar = colorbar()\n cbar.solids.set_edgecolor(\"face\")\n draw()\n \n However this has negative consequences in other circumstances, e.g. with\n semi-transparent images (alpha < 1) and colorbar extensions; therefore, this\n workaround is not used by default (see issue #1188).\n \n colormaps()\n Matplotlib provides a number of colormaps, and others can be added using\n :func:`~matplotlib.cm.register_cmap`. This function documents the built-in\n colormaps, and will also return a list of all registered colormaps if\n called.\n \n You can set the colormap for an image, pcolor, scatter, etc,\n using a keyword argument::\n \n imshow(X, cmap=cm.hot)\n \n or using the :func:`set_cmap` function::\n \n imshow(X)\n pyplot.set_cmap('hot')\n pyplot.set_cmap('jet')\n \n In interactive mode, :func:`set_cmap` will update the colormap post-hoc,\n allowing you to see which one works best for your data.\n \n All built-in colormaps can be reversed by appending ``_r``: For instance,\n ``gray_r`` is the reverse of ``gray``.\n \n There are several common color schemes used in visualization:\n \n Sequential schemes\n for unipolar data that progresses from low to high\n Diverging schemes\n for bipolar data that emphasizes positive or negative deviations from a\n central value\n Cyclic schemes\n for plotting values that wrap around at the endpoints, such as phase\n angle, wind direction, or time of day\n Qualitative schemes\n for nominal data that has no inherent ordering, where color is used\n only to distinguish categories\n \n Matplotlib ships with 4 perceptually uniform color maps which are\n the recommended color maps for sequential data:\n \n ========= ===================================================\n Colormap Description\n ========= ===================================================\n inferno perceptually uniform shades of black-red-yellow\n magma perceptually uniform shades of black-red-white\n plasma perceptually uniform shades of blue-red-yellow\n viridis perceptually uniform shades of blue-green-yellow\n ========= ===================================================\n \n The following colormaps are based on the `ColorBrewer\n <http://colorbrewer2.org>`_ color specifications and designs developed by\n Cynthia Brewer:\n \n ColorBrewer Diverging (luminance is highest at the midpoint, and\n decreases towards differently-colored endpoints):\n \n ======== ===================================\n Colormap Description\n ======== ===================================\n BrBG brown, white, blue-green\n PiYG pink, white, yellow-green\n PRGn purple, white, green\n PuOr orange, white, purple\n RdBu red, white, blue\n RdGy red, white, gray\n RdYlBu red, yellow, blue\n RdYlGn red, yellow, green\n Spectral red, orange, yellow, green, blue\n ======== ===================================\n \n ColorBrewer Sequential (luminance decreases monotonically):\n \n ======== ====================================\n Colormap Description\n ======== ====================================\n Blues white to dark blue\n BuGn white, light blue, dark green\n BuPu white, light blue, dark purple\n GnBu white, light green, dark blue\n Greens white to dark green\n Greys white to black (not linear)\n Oranges white, orange, dark brown\n OrRd white, orange, dark red\n PuBu white, light purple, dark blue\n PuBuGn white, light purple, dark green\n PuRd white, light purple, dark red\n Purples white to dark purple\n RdPu white, pink, dark purple\n Reds white to dark red\n YlGn light yellow, dark green\n YlGnBu light yellow, light green, dark blue\n YlOrBr light yellow, orange, dark brown\n YlOrRd light yellow, orange, dark red\n ======== ====================================\n \n ColorBrewer Qualitative:\n \n (For plotting nominal data, :class:`ListedColormap` is used,\n not :class:`LinearSegmentedColormap`. Different sets of colors are\n recommended for different numbers of categories.)\n \n * Accent\n * Dark2\n * Paired\n * Pastel1\n * Pastel2\n * Set1\n * Set2\n * Set3\n \n A set of colormaps derived from those of the same name provided\n with Matlab are also included:\n \n ========= =======================================================\n Colormap Description\n ========= =======================================================\n autumn sequential linearly-increasing shades of red-orange-yellow\n bone sequential increasing black-white color map with\n a tinge of blue, to emulate X-ray film\n cool linearly-decreasing shades of cyan-magenta\n copper sequential increasing shades of black-copper\n flag repetitive red-white-blue-black pattern (not cyclic at\n endpoints)\n gray sequential linearly-increasing black-to-white\n grayscale\n hot sequential black-red-yellow-white, to emulate blackbody\n radiation from an object at increasing temperatures\n jet a spectral map with dark endpoints, blue-cyan-yellow-red;\n based on a fluid-jet simulation by NCSA [#]_\n pink sequential increasing pastel black-pink-white, meant\n for sepia tone colorization of photographs\n prism repetitive red-yellow-green-blue-purple-...-green pattern\n (not cyclic at endpoints)\n spring linearly-increasing shades of magenta-yellow\n summer sequential linearly-increasing shades of green-yellow\n winter linearly-increasing shades of blue-green\n ========= =======================================================\n \n A set of palettes from the `Yorick scientific visualisation\n package <https://dhmunro.github.io/yorick-doc/>`_, an evolution of\n the GIST package, both by David H. Munro are included:\n \n ============ =======================================================\n Colormap Description\n ============ =======================================================\n gist_earth mapmaker's colors from dark blue deep ocean to green\n lowlands to brown highlands to white mountains\n gist_heat sequential increasing black-red-orange-white, to emulate\n blackbody radiation from an iron bar as it grows hotter\n gist_ncar pseudo-spectral black-blue-green-yellow-red-purple-white\n colormap from National Center for Atmospheric\n Research [#]_\n gist_rainbow runs through the colors in spectral order from red to\n violet at full saturation (like *hsv* but not cyclic)\n gist_stern \"Stern special\" color table from Interactive Data\n Language software\n ============ =======================================================\n \n A set of cyclic color maps:\n \n ================ =================================================\n Colormap Description\n ================ =================================================\n hsv red-yellow-green-cyan-blue-magenta-red, formed by\n changing the hue component in the HSV color space\n twilight perceptually uniform shades of\n white-blue-black-red-white\n twilight_shifted perceptually uniform shades of\n black-blue-white-red-black\n ================ =================================================\n \n \n Other miscellaneous schemes:\n \n ============= =======================================================\n Colormap Description\n ============= =======================================================\n afmhot sequential black-orange-yellow-white blackbody\n spectrum, commonly used in atomic force microscopy\n brg blue-red-green\n bwr diverging blue-white-red\n coolwarm diverging blue-gray-red, meant to avoid issues with 3D\n shading, color blindness, and ordering of colors [#]_\n CMRmap \"Default colormaps on color images often reproduce to\n confusing grayscale images. The proposed colormap\n maintains an aesthetically pleasing color image that\n automatically reproduces to a monotonic grayscale with\n discrete, quantifiable saturation levels.\" [#]_\n cubehelix Unlike most other color schemes cubehelix was designed\n by D.A. Green to be monotonically increasing in terms\n of perceived brightness. Also, when printed on a black\n and white postscript printer, the scheme results in a\n greyscale with monotonically increasing brightness.\n This color scheme is named cubehelix because the (r, g, b)\n values produced can be visualised as a squashed helix\n around the diagonal in the (r, g, b) color cube.\n gnuplot gnuplot's traditional pm3d scheme\n (black-blue-red-yellow)\n gnuplot2 sequential color printable as gray\n (black-blue-violet-yellow-white)\n ocean green-blue-white\n rainbow spectral purple-blue-green-yellow-orange-red colormap\n with diverging luminance\n seismic diverging blue-white-red\n nipy_spectral black-purple-blue-green-yellow-red-white spectrum,\n originally from the Neuroimaging in Python project\n terrain mapmaker's colors, blue-green-yellow-brown-white,\n originally from IGOR Pro\n ============= =======================================================\n \n The following colormaps are redundant and may be removed in future\n versions. It's recommended to use the names in the descriptions\n instead, which produce identical output:\n \n ========= =======================================================\n Colormap Description\n ========= =======================================================\n gist_gray identical to *gray*\n gist_yarg identical to *gray_r*\n binary identical to *gray_r*\n ========= =======================================================\n \n .. rubric:: Footnotes\n \n .. [#] Rainbow colormaps, ``jet`` in particular, are considered a poor\n choice for scientific visualization by many researchers: `Rainbow Color\n Map (Still) Considered Harmful\n <http://ieeexplore.ieee.org/document/4118486/?arnumber=4118486>`_\n \n .. [#] Resembles \"BkBlAqGrYeOrReViWh200\" from NCAR Command\n Language. See `Color Table Gallery\n <https://www.ncl.ucar.edu/Document/Graphics/color_table_gallery.shtml>`_\n \n .. [#] See `Diverging Color Maps for Scientific Visualization\n <http://www.kennethmoreland.com/color-maps/>`_ by Kenneth Moreland.\n \n .. [#] See `A Color Map for Effective Black-and-White Rendering of\n Color-Scale Images\n <https://www.mathworks.com/matlabcentral/fileexchange/2662-cmrmap-m>`_\n by Carey Rappaport\n \n connect(s, func)\n Bind function *func* to event *s*.\n \n Parameters\n ----------\n s : str\n One of the following events ids:\n \n - 'button_press_event'\n - 'button_release_event'\n - 'draw_event'\n - 'key_press_event'\n - 'key_release_event'\n - 'motion_notify_event'\n - 'pick_event'\n - 'resize_event'\n - 'scroll_event'\n - 'figure_enter_event',\n - 'figure_leave_event',\n - 'axes_enter_event',\n - 'axes_leave_event'\n - 'close_event'.\n \n func : callable\n The callback function to be executed, which must have the\n signature::\n \n def func(event: Event) -> Any\n \n For the location events (button and key press/release), if the\n mouse is over the axes, the ``inaxes`` attribute of the event will\n be set to the `~matplotlib.axes.Axes` the event occurs is over, and\n additionally, the variables ``xdata`` and ``ydata`` attributes will\n be set to the mouse location in data coordinates. See `.KeyEvent`\n and `.MouseEvent` for more info.\n \n Returns\n -------\n cid\n A connection id that can be used with\n `.FigureCanvasBase.mpl_disconnect`.\n \n Examples\n --------\n ::\n \n def on_press(event):\n print('you pressed', event.button, event.xdata, event.ydata)\n \n cid = canvas.mpl_connect('button_press_event', on_press)\n \n contour(*args, data=None, **kwargs)\n Plot contours.\n \n Call signature::\n \n contour([X, Y,] Z, [levels], **kwargs)\n \n `.contour` and `.contourf` draw contour lines and filled contours,\n respectively. Except as noted, function signatures and return values\n are the same for both versions.\n \n Parameters\n ----------\n X, Y : array-like, optional\n The coordinates of the values in *Z*.\n \n *X* and *Y* must both be 2-D with the same shape as *Z* (e.g.\n created via `numpy.meshgrid`), or they must both be 1-D such\n that ``len(X) == M`` is the number of columns in *Z* and\n ``len(Y) == N`` is the number of rows in *Z*.\n \n If not given, they are assumed to be integer indices, i.e.\n ``X = range(M)``, ``Y = range(N)``.\n \n Z : array-like(N, M)\n The height values over which the contour is drawn.\n \n levels : int or array-like, optional\n Determines the number and positions of the contour lines / regions.\n \n If an int *n*, use *n* data intervals; i.e. draw *n+1* contour\n lines. The level heights are automatically chosen.\n \n If array-like, draw contour lines at the specified levels.\n The values must be in increasing order.\n \n Returns\n -------\n c : `~.contour.QuadContourSet`\n \n Other Parameters\n ----------------\n corner_mask : bool, optional\n Enable/disable corner masking, which only has an effect if *Z* is\n a masked array. If ``False``, any quad touching a masked point is\n masked out. If ``True``, only the triangular corners of quads\n nearest those points are always masked out, other triangular\n corners comprising three unmasked points are contoured as usual.\n \n Defaults to :rc:`contour.corner_mask`.\n \n colors : color string or sequence of colors, optional\n The colors of the levels, i.e. the lines for `.contour` and the\n areas for `.contourf`.\n \n The sequence is cycled for the levels in ascending order. If the\n sequence is shorter than the number of levels, it's repeated.\n \n As a shortcut, single color strings may be used in place of\n one-element lists, i.e. ``'red'`` instead of ``['red']`` to color\n all levels with the same color. This shortcut does only work for\n color strings, not for other ways of specifying colors.\n \n By default (value *None*), the colormap specified by *cmap*\n will be used.\n \n alpha : float, optional\n The alpha blending value, between 0 (transparent) and 1 (opaque).\n \n cmap : str or `.Colormap`, optional\n A `.Colormap` instance or registered colormap name. The colormap\n maps the level values to colors.\n Defaults to :rc:`image.cmap`.\n \n If both *colors* and *cmap* are given, an error is raised.\n \n norm : `~matplotlib.colors.Normalize`, optional\n If a colormap is used, the `.Normalize` instance scales the level\n values to the canonical colormap range [0, 1] for mapping to\n colors. If not given, the default linear scaling is used.\n \n vmin, vmax : float, optional\n If not *None*, either or both of these values will be supplied to\n the `.Normalize` instance, overriding the default color scaling\n based on *levels*.\n \n origin : {*None*, 'upper', 'lower', 'image'}, optional\n Determines the orientation and exact position of *Z* by specifying\n the position of ``Z[0, 0]``. This is only relevant, if *X*, *Y*\n are not given.\n \n - *None*: ``Z[0, 0]`` is at X=0, Y=0 in the lower left corner.\n - 'lower': ``Z[0, 0]`` is at X=0.5, Y=0.5 in the lower left corner.\n - 'upper': ``Z[0, 0]`` is at X=N+0.5, Y=0.5 in the upper left\n corner.\n - 'image': Use the value from :rc:`image.origin`.\n \n extent : (x0, x1, y0, y1), optional\n If *origin* is not *None*, then *extent* is interpreted as in\n `.imshow`: it gives the outer pixel boundaries. In this case, the\n position of Z[0, 0] is the center of the pixel, not a corner. If\n *origin* is *None*, then (*x0*, *y0*) is the position of Z[0, 0],\n and (*x1*, *y1*) is the position of Z[-1,-1].\n \n This argument is ignored if *X* and *Y* are specified in the call\n to contour.\n \n locator : ticker.Locator subclass, optional\n The locator is used to determine the contour levels if they\n are not given explicitly via *levels*.\n Defaults to `~.ticker.MaxNLocator`.\n \n extend : {'neither', 'both', 'min', 'max'}, optional, default: 'neither'\n Determines the ``contourf``-coloring of values that are outside the\n *levels* range.\n \n If 'neither', values outside the *levels* range are not colored.\n If 'min', 'max' or 'both', color the values below, above or below\n and above the *levels* range.\n \n Values below ``min(levels)`` and above ``max(levels)`` are mapped\n to the under/over values of the `.Colormap`. Note, that most\n colormaps do not have dedicated colors for these by default, so\n that the over and under values are the edge values of the colormap.\n You may want to set these values explicitly using\n `.Colormap.set_under` and `.Colormap.set_over`.\n \n .. note::\n \n An exising `.QuadContourSet` does not get notified if\n properties of its colormap are changed. Therefore, an explicit\n call `.QuadContourSet.changed()` is needed after modifying the\n colormap. The explicit call can be left out, if a colorbar is\n assigned to the `.QuadContourSet` because it internally calls\n `.QuadContourSet.changed()`.\n \n Example::\n \n x = np.arange(1, 10)\n y = x.reshape(-1, 1)\n h = x * y\n \n cs = plt.contourf(h, levels=[10, 30, 50],\n colors=['#808080', '#A0A0A0', '#C0C0C0'], extend='both')\n cs.cmap.set_over('red')\n cs.cmap.set_under('blue')\n cs.changed()\n \n xunits, yunits : registered units, optional\n Override axis units by specifying an instance of a\n :class:`matplotlib.units.ConversionInterface`.\n \n antialiased : bool, optional\n Enable antialiasing, overriding the defaults. For\n filled contours, the default is *True*. For line contours,\n it is taken from :rc:`lines.antialiased`.\n \n nchunk : int >= 0, optional\n If 0, no subdivision of the domain. Specify a positive integer to\n divide the domain into subdomains of *nchunk* by *nchunk* quads.\n Chunking reduces the maximum length of polygons generated by the\n contouring algorithm which reduces the rendering workload passed\n on to the backend and also requires slightly less RAM. It can\n however introduce rendering artifacts at chunk boundaries depending\n on the backend, the *antialiased* flag and value of *alpha*.\n \n linewidths : float or sequence of float, optional\n *Only applies to* `.contour`.\n \n The line width of the contour lines.\n \n If a number, all levels will be plotted with this linewidth.\n \n If a sequence, the levels in ascending order will be plotted with\n the linewidths in the order specified.\n \n Defaults to :rc:`lines.linewidth`.\n \n linestyles : {*None*, 'solid', 'dashed', 'dashdot', 'dotted'}, optional\n *Only applies to* `.contour`.\n \n If *linestyles* is *None*, the default is 'solid' unless the lines\n are monochrome. In that case, negative contours will take their\n linestyle from :rc:`contour.negative_linestyle` setting.\n \n *linestyles* can also be an iterable of the above strings\n specifying a set of linestyles to be used. If this\n iterable is shorter than the number of contour levels\n it will be repeated as necessary.\n \n hatches : List[str], optional\n *Only applies to* `.contourf`.\n \n A list of cross hatch patterns to use on the filled areas.\n If None, no hatching will be added to the contour.\n Hatching is supported in the PostScript, PDF, SVG and Agg\n backends only.\n \n Notes\n -----\n 1. `.contourf` differs from the MATLAB version in that it does not draw\n the polygon edges. To draw edges, add line contours with calls to\n `.contour`.\n \n 2. `.contourf` fills intervals that are closed at the top; that is, for\n boundaries *z1* and *z2*, the filled region is::\n \n z1 < Z <= z2\n \n except for the lowest interval, which is closed on both sides (i.e.\n it includes the lowest value).\n \n contourf(*args, data=None, **kwargs)\n Plot contours.\n \n Call signature::\n \n contour([X, Y,] Z, [levels], **kwargs)\n \n `.contour` and `.contourf` draw contour lines and filled contours,\n respectively. Except as noted, function signatures and return values\n are the same for both versions.\n \n Parameters\n ----------\n X, Y : array-like, optional\n The coordinates of the values in *Z*.\n \n *X* and *Y* must both be 2-D with the same shape as *Z* (e.g.\n created via `numpy.meshgrid`), or they must both be 1-D such\n that ``len(X) == M`` is the number of columns in *Z* and\n ``len(Y) == N`` is the number of rows in *Z*.\n \n If not given, they are assumed to be integer indices, i.e.\n ``X = range(M)``, ``Y = range(N)``.\n \n Z : array-like(N, M)\n The height values over which the contour is drawn.\n \n levels : int or array-like, optional\n Determines the number and positions of the contour lines / regions.\n \n If an int *n*, use *n* data intervals; i.e. draw *n+1* contour\n lines. The level heights are automatically chosen.\n \n If array-like, draw contour lines at the specified levels.\n The values must be in increasing order.\n \n Returns\n -------\n c : `~.contour.QuadContourSet`\n \n Other Parameters\n ----------------\n corner_mask : bool, optional\n Enable/disable corner masking, which only has an effect if *Z* is\n a masked array. If ``False``, any quad touching a masked point is\n masked out. If ``True``, only the triangular corners of quads\n nearest those points are always masked out, other triangular\n corners comprising three unmasked points are contoured as usual.\n \n Defaults to :rc:`contour.corner_mask`.\n \n colors : color string or sequence of colors, optional\n The colors of the levels, i.e. the lines for `.contour` and the\n areas for `.contourf`.\n \n The sequence is cycled for the levels in ascending order. If the\n sequence is shorter than the number of levels, it's repeated.\n \n As a shortcut, single color strings may be used in place of\n one-element lists, i.e. ``'red'`` instead of ``['red']`` to color\n all levels with the same color. This shortcut does only work for\n color strings, not for other ways of specifying colors.\n \n By default (value *None*), the colormap specified by *cmap*\n will be used.\n \n alpha : float, optional\n The alpha blending value, between 0 (transparent) and 1 (opaque).\n \n cmap : str or `.Colormap`, optional\n A `.Colormap` instance or registered colormap name. The colormap\n maps the level values to colors.\n Defaults to :rc:`image.cmap`.\n \n If both *colors* and *cmap* are given, an error is raised.\n \n norm : `~matplotlib.colors.Normalize`, optional\n If a colormap is used, the `.Normalize` instance scales the level\n values to the canonical colormap range [0, 1] for mapping to\n colors. If not given, the default linear scaling is used.\n \n vmin, vmax : float, optional\n If not *None*, either or both of these values will be supplied to\n the `.Normalize` instance, overriding the default color scaling\n based on *levels*.\n \n origin : {*None*, 'upper', 'lower', 'image'}, optional\n Determines the orientation and exact position of *Z* by specifying\n the position of ``Z[0, 0]``. This is only relevant, if *X*, *Y*\n are not given.\n \n - *None*: ``Z[0, 0]`` is at X=0, Y=0 in the lower left corner.\n - 'lower': ``Z[0, 0]`` is at X=0.5, Y=0.5 in the lower left corner.\n - 'upper': ``Z[0, 0]`` is at X=N+0.5, Y=0.5 in the upper left\n corner.\n - 'image': Use the value from :rc:`image.origin`.\n \n extent : (x0, x1, y0, y1), optional\n If *origin* is not *None*, then *extent* is interpreted as in\n `.imshow`: it gives the outer pixel boundaries. In this case, the\n position of Z[0, 0] is the center of the pixel, not a corner. If\n *origin* is *None*, then (*x0*, *y0*) is the position of Z[0, 0],\n and (*x1*, *y1*) is the position of Z[-1,-1].\n \n This argument is ignored if *X* and *Y* are specified in the call\n to contour.\n \n locator : ticker.Locator subclass, optional\n The locator is used to determine the contour levels if they\n are not given explicitly via *levels*.\n Defaults to `~.ticker.MaxNLocator`.\n \n extend : {'neither', 'both', 'min', 'max'}, optional, default: 'neither'\n Determines the ``contourf``-coloring of values that are outside the\n *levels* range.\n \n If 'neither', values outside the *levels* range are not colored.\n If 'min', 'max' or 'both', color the values below, above or below\n and above the *levels* range.\n \n Values below ``min(levels)`` and above ``max(levels)`` are mapped\n to the under/over values of the `.Colormap`. Note, that most\n colormaps do not have dedicated colors for these by default, so\n that the over and under values are the edge values of the colormap.\n You may want to set these values explicitly using\n `.Colormap.set_under` and `.Colormap.set_over`.\n \n .. note::\n \n An exising `.QuadContourSet` does not get notified if\n properties of its colormap are changed. Therefore, an explicit\n call `.QuadContourSet.changed()` is needed after modifying the\n colormap. The explicit call can be left out, if a colorbar is\n assigned to the `.QuadContourSet` because it internally calls\n `.QuadContourSet.changed()`.\n \n Example::\n \n x = np.arange(1, 10)\n y = x.reshape(-1, 1)\n h = x * y\n \n cs = plt.contourf(h, levels=[10, 30, 50],\n colors=['#808080', '#A0A0A0', '#C0C0C0'], extend='both')\n cs.cmap.set_over('red')\n cs.cmap.set_under('blue')\n cs.changed()\n \n xunits, yunits : registered units, optional\n Override axis units by specifying an instance of a\n :class:`matplotlib.units.ConversionInterface`.\n \n antialiased : bool, optional\n Enable antialiasing, overriding the defaults. For\n filled contours, the default is *True*. For line contours,\n it is taken from :rc:`lines.antialiased`.\n \n nchunk : int >= 0, optional\n If 0, no subdivision of the domain. Specify a positive integer to\n divide the domain into subdomains of *nchunk* by *nchunk* quads.\n Chunking reduces the maximum length of polygons generated by the\n contouring algorithm which reduces the rendering workload passed\n on to the backend and also requires slightly less RAM. It can\n however introduce rendering artifacts at chunk boundaries depending\n on the backend, the *antialiased* flag and value of *alpha*.\n \n linewidths : float or sequence of float, optional\n *Only applies to* `.contour`.\n \n The line width of the contour lines.\n \n If a number, all levels will be plotted with this linewidth.\n \n If a sequence, the levels in ascending order will be plotted with\n the linewidths in the order specified.\n \n Defaults to :rc:`lines.linewidth`.\n \n linestyles : {*None*, 'solid', 'dashed', 'dashdot', 'dotted'}, optional\n *Only applies to* `.contour`.\n \n If *linestyles* is *None*, the default is 'solid' unless the lines\n are monochrome. In that case, negative contours will take their\n linestyle from :rc:`contour.negative_linestyle` setting.\n \n *linestyles* can also be an iterable of the above strings\n specifying a set of linestyles to be used. If this\n iterable is shorter than the number of contour levels\n it will be repeated as necessary.\n \n hatches : List[str], optional\n *Only applies to* `.contourf`.\n \n A list of cross hatch patterns to use on the filled areas.\n If None, no hatching will be added to the contour.\n Hatching is supported in the PostScript, PDF, SVG and Agg\n backends only.\n \n Notes\n -----\n 1. `.contourf` differs from the MATLAB version in that it does not draw\n the polygon edges. To draw edges, add line contours with calls to\n `.contour`.\n \n 2. `.contourf` fills intervals that are closed at the top; that is, for\n boundaries *z1* and *z2*, the filled region is::\n \n z1 < Z <= z2\n \n except for the lowest interval, which is closed on both sides (i.e.\n it includes the lowest value).\n \n cool()\n Set the colormap to \"cool\".\n \n This changes the default colormap as well as the colormap of the current\n image if there is one. See ``help(colormaps)`` for more information.\n \n copper()\n Set the colormap to \"copper\".\n \n This changes the default colormap as well as the colormap of the current\n image if there is one. See ``help(colormaps)`` for more information.\n \n csd(x, y, NFFT=None, Fs=None, Fc=None, detrend=None, window=None, noverlap=None, pad_to=None, sides=None, scale_by_freq=None, return_line=None, *, data=None, **kwargs)\n Plot the cross-spectral density.\n \n The cross spectral density :math:`P_{xy}` by Welch's average\n periodogram method. The vectors *x* and *y* are divided into\n *NFFT* length segments. Each segment is detrended by function\n *detrend* and windowed by function *window*. *noverlap* gives\n the length of the overlap between segments. The product of\n the direct FFTs of *x* and *y* are averaged over each segment\n to compute :math:`P_{xy}`, with a scaling to correct for power\n loss due to windowing.\n \n If len(*x*) < *NFFT* or len(*y*) < *NFFT*, they will be zero\n padded to *NFFT*.\n \n Parameters\n ----------\n x, y : 1-D arrays or sequences\n Arrays or sequences containing the data.\n \n Fs : scalar\n The sampling frequency (samples per time unit). It is used\n to calculate the Fourier frequencies, freqs, in cycles per time\n unit. The default value is 2.\n \n window : callable or ndarray\n A function or a vector of length *NFFT*. To create window vectors see\n `window_hanning`, `window_none`, `numpy.blackman`, `numpy.hamming`,\n `numpy.bartlett`, `scipy.signal`, `scipy.signal.get_window`, etc. The\n default is `window_hanning`. If a function is passed as the argument,\n it must take a data segment as an argument and return the windowed\n version of the segment.\n \n sides : {'default', 'onesided', 'twosided'}\n Specifies which sides of the spectrum to return. Default gives the\n default behavior, which returns one-sided for real data and both\n for complex data. 'onesided' forces the return of a one-sided\n spectrum, while 'twosided' forces two-sided.\n \n pad_to : int\n The number of points to which the data segment is padded when\n performing the FFT. This can be different from *NFFT*, which\n specifies the number of data points used. While not increasing\n the actual resolution of the spectrum (the minimum distance between\n resolvable peaks), this can give more points in the plot,\n allowing for more detail. This corresponds to the *n* parameter\n in the call to fft(). The default is None, which sets *pad_to*\n equal to *NFFT*\n \n NFFT : int\n The number of data points used in each block for the FFT.\n A power 2 is most efficient. The default value is 256.\n This should *NOT* be used to get zero padding, or the scaling of the\n result will be incorrect. Use *pad_to* for this instead.\n \n detrend : {'none', 'mean', 'linear'} or callable, default 'none'\n The function applied to each segment before fft-ing, designed to\n remove the mean or linear trend. Unlike in MATLAB, where the\n *detrend* parameter is a vector, in Matplotlib is it a function.\n The :mod:`~matplotlib.mlab` module defines `.detrend_none`,\n `.detrend_mean`, and `.detrend_linear`, but you can use a custom\n function as well. You can also use a string to choose one of the\n functions: 'none' calls `.detrend_none`. 'mean' calls `.detrend_mean`.\n 'linear' calls `.detrend_linear`.\n \n scale_by_freq : bool, optional\n Specifies whether the resulting density values should be scaled\n by the scaling frequency, which gives density in units of Hz^-1.\n This allows for integration over the returned frequency values.\n The default is True for MATLAB compatibility.\n \n noverlap : int\n The number of points of overlap between segments.\n The default value is 0 (no overlap).\n \n Fc : int\n The center frequency of *x* (defaults to 0), which offsets\n the x extents of the plot to reflect the frequency range used\n when a signal is acquired and then filtered and downsampled to\n baseband.\n \n return_line : bool\n Whether to include the line object plotted in the returned values.\n Default is False.\n \n Returns\n -------\n Pxy : 1-D array\n The values for the cross spectrum `P_{xy}` before scaling\n (complex valued).\n \n freqs : 1-D array\n The frequencies corresponding to the elements in *Pxy*.\n \n line : `~matplotlib.lines.Line2D`\n The line created by this function.\n Only returned if *return_line* is True.\n \n Other Parameters\n ----------------\n **kwargs\n Keyword arguments control the `.Line2D` properties:\n \n Properties:\n agg_filter: a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array\n alpha: float or None\n animated: bool\n antialiased or aa: bool\n clip_box: `.Bbox`\n clip_on: bool\n clip_path: Patch or (Path, Transform) or None\n color or c: color\n contains: callable\n dash_capstyle: {'butt', 'round', 'projecting'}\n dash_joinstyle: {'miter', 'round', 'bevel'}\n dashes: sequence of floats (on/off ink in points) or (None, None)\n data: (2, N) array or two 1D arrays\n drawstyle or ds: {'default', 'steps', 'steps-pre', 'steps-mid', 'steps-post'}, default: 'default'\n figure: `.Figure`\n fillstyle: {'full', 'left', 'right', 'bottom', 'top', 'none'}\n gid: str\n in_layout: bool\n label: object\n linestyle or ls: {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}\n linewidth or lw: float\n marker: marker style\n markeredgecolor or mec: color\n markeredgewidth or mew: float\n markerfacecolor or mfc: color\n markerfacecoloralt or mfcalt: color\n markersize or ms: float\n markevery: None or int or (int, int) or slice or List[int] or float or (float, float)\n path_effects: `.AbstractPathEffect`\n picker: float or callable[[Artist, Event], Tuple[bool, dict]]\n pickradius: float\n rasterized: bool or None\n sketch_params: (scale: float, length: float, randomness: float)\n snap: bool or None\n solid_capstyle: {'butt', 'round', 'projecting'}\n solid_joinstyle: {'miter', 'round', 'bevel'}\n transform: `matplotlib.transforms.Transform`\n url: str\n visible: bool\n xdata: 1D array\n ydata: 1D array\n zorder: float\n \n See Also\n --------\n :func:`psd`\n :func:`psd` is the equivalent to setting y=x.\n \n Notes\n -----\n For plotting, the power is plotted as\n :math:`10 \\log_{10}(P_{xy})` for decibels, though `P_{xy}` itself\n is returned.\n \n References\n ----------\n Bendat & Piersol -- Random Data: Analysis and Measurement Procedures,\n John Wiley & Sons (1986)\n \n .. note::\n In addition to the above described arguments, this function can take a\n **data** keyword argument. If such a **data** argument is given, the\n following arguments are replaced by **data[<arg>]**:\n \n * All arguments with the following names: 'x', 'y'.\n \n Objects passed as **data** must support item access (``data[<arg>]``) and\n membership test (``<arg> in data``).\n \n delaxes(ax=None)\n Remove the `Axes` *ax* (defaulting to the current axes) from its figure.\n \n A KeyError is raised if the axes doesn't exist.\n \n disconnect(cid)\n Disconnect the callback with id *cid*.\n \n Examples\n --------\n ::\n \n cid = canvas.mpl_connect('button_press_event', on_press)\n # ... later\n canvas.mpl_disconnect(cid)\n \n draw()\n Redraw the current figure.\n \n This is used to update a figure that has been altered, but not\n automatically re-drawn. If interactive mode is on (via `.ion()`), this\n should be only rarely needed, but there may be ways to modify the state of\n a figure without marking it as \"stale\". Please report these cases as bugs.\n \n This is equivalent to calling ``fig.canvas.draw_idle()``, where ``fig`` is\n the current figure.\n \n errorbar(x, y, yerr=None, xerr=None, fmt='', ecolor=None, elinewidth=None, capsize=None, barsabove=False, lolims=False, uplims=False, xlolims=False, xuplims=False, errorevery=1, capthick=None, *, data=None, **kwargs)\n Plot y versus x as lines and/or markers with attached errorbars.\n \n *x*, *y* define the data locations, *xerr*, *yerr* define the errorbar\n sizes. By default, this draws the data markers/lines as well the\n errorbars. Use fmt='none' to draw errorbars without any data markers.\n \n Parameters\n ----------\n x, y : scalar or array-like\n The data positions.\n \n xerr, yerr : scalar or array-like, shape(N,) or shape(2, N), optional\n The errorbar sizes:\n \n - scalar: Symmetric +/- values for all data points.\n - shape(N,): Symmetric +/-values for each data point.\n - shape(2, N): Separate - and + values for each bar. First row\n contains the lower errors, the second row contains the upper\n errors.\n - *None*: No errorbar.\n \n Note that all error arrays should have *positive* values.\n \n See :doc:`/gallery/statistics/errorbar_features`\n for an example on the usage of ``xerr`` and ``yerr``.\n \n fmt : str, optional, default: ''\n The format for the data points / data lines. See `.plot` for\n details.\n \n Use 'none' (case insensitive) to plot errorbars without any data\n markers.\n \n ecolor : color, optional, default: None\n The color of the errorbar lines. If None, use the color of the\n line connecting the markers.\n \n elinewidth : scalar, optional, default: None\n The linewidth of the errorbar lines. If None, the linewidth of\n the current style is used.\n \n capsize : scalar, optional, default: None\n The length of the error bar caps in points. If None, it will take\n the value from :rc:`errorbar.capsize`.\n \n capthick : scalar, optional, default: None\n An alias to the keyword argument *markeredgewidth* (a.k.a. *mew*).\n This setting is a more sensible name for the property that\n controls the thickness of the error bar cap in points. For\n backwards compatibility, if *mew* or *markeredgewidth* are given,\n then they will over-ride *capthick*. This may change in future\n releases.\n \n barsabove : bool, optional, default: False\n If True, will plot the errorbars above the plot\n symbols. Default is below.\n \n lolims, uplims, xlolims, xuplims : bool, optional, default: False\n These arguments can be used to indicate that a value gives only\n upper/lower limits. In that case a caret symbol is used to\n indicate this. *lims*-arguments may be of the same type as *xerr*\n and *yerr*. To use limits with inverted axes, :meth:`set_xlim`\n or :meth:`set_ylim` must be called before :meth:`errorbar`.\n \n errorevery : int or (int, int), optional, default: 1\n draws error bars on a subset of the data. *errorevery* =N draws\n error bars on the points (x[::N], y[::N]).\n *errorevery* =(start, N) draws error bars on the points\n (x[start::N], y[start::N]). e.g. errorevery=(6, 3)\n adds error bars to the data at (x[6], x[9], x[12], x[15], ...).\n Used to avoid overlapping error bars when two series share x-axis\n values.\n \n Returns\n -------\n container : :class:`~.container.ErrorbarContainer`\n The container contains:\n \n - plotline: `.Line2D` instance of x, y plot markers and/or line.\n - caplines: A tuple of `.Line2D` instances of the error bar caps.\n - barlinecols: A tuple of\n :class:`~matplotlib.collections.LineCollection` with the\n horizontal and vertical error ranges.\n \n Other Parameters\n ----------------\n **kwargs\n All other keyword arguments are passed on to the plot\n command for the markers. For example, this code makes big red\n squares with thick green edges::\n \n x, y, yerr = rand(3, 10)\n errorbar(x, y, yerr, marker='s', mfc='red',\n mec='green', ms=20, mew=4)\n \n where *mfc*, *mec*, *ms* and *mew* are aliases for the longer\n property names, *markerfacecolor*, *markeredgecolor*, *markersize*\n and *markeredgewidth*.\n \n Valid kwargs for the marker properties are `.Lines2D` properties:\n \n Properties:\n agg_filter: a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array\n alpha: float or None\n animated: bool\n antialiased or aa: bool\n clip_box: `.Bbox`\n clip_on: bool\n clip_path: Patch or (Path, Transform) or None\n color or c: color\n contains: callable\n dash_capstyle: {'butt', 'round', 'projecting'}\n dash_joinstyle: {'miter', 'round', 'bevel'}\n dashes: sequence of floats (on/off ink in points) or (None, None)\n data: (2, N) array or two 1D arrays\n drawstyle or ds: {'default', 'steps', 'steps-pre', 'steps-mid', 'steps-post'}, default: 'default'\n figure: `.Figure`\n fillstyle: {'full', 'left', 'right', 'bottom', 'top', 'none'}\n gid: str\n in_layout: bool\n label: object\n linestyle or ls: {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}\n linewidth or lw: float\n marker: marker style\n markeredgecolor or mec: color\n markeredgewidth or mew: float\n markerfacecolor or mfc: color\n markerfacecoloralt or mfcalt: color\n markersize or ms: float\n markevery: None or int or (int, int) or slice or List[int] or float or (float, float)\n path_effects: `.AbstractPathEffect`\n picker: float or callable[[Artist, Event], Tuple[bool, dict]]\n pickradius: float\n rasterized: bool or None\n sketch_params: (scale: float, length: float, randomness: float)\n snap: bool or None\n solid_capstyle: {'butt', 'round', 'projecting'}\n solid_joinstyle: {'miter', 'round', 'bevel'}\n transform: `matplotlib.transforms.Transform`\n url: str\n visible: bool\n xdata: 1D array\n ydata: 1D array\n zorder: float\n \n Notes\n -----\n \n \n .. note::\n In addition to the above described arguments, this function can take a\n **data** keyword argument. If such a **data** argument is given, the\n following arguments are replaced by **data[<arg>]**:\n \n * All arguments with the following names: 'x', 'xerr', 'y', 'yerr'.\n \n Objects passed as **data** must support item access (``data[<arg>]``) and\n membership test (``<arg> in data``).\n \n eventplot(positions, orientation='horizontal', lineoffsets=1, linelengths=1, linewidths=None, colors=None, linestyles='solid', *, data=None, **kwargs)\n Plot identical parallel lines at the given positions.\n \n *positions* should be a 1D or 2D array-like object, with each row\n corresponding to a row or column of lines.\n \n This type of plot is commonly used in neuroscience for representing\n neural events, where it is usually called a spike raster, dot raster,\n or raster plot.\n \n However, it is useful in any situation where you wish to show the\n timing or position of multiple sets of discrete events, such as the\n arrival times of people to a business on each day of the month or the\n date of hurricanes each year of the last century.\n \n Parameters\n ----------\n positions : 1D or 2D array-like object\n Each value is an event. If *positions* is a 2D array-like, each\n row corresponds to a row or a column of lines (depending on the\n *orientation* parameter).\n \n orientation : {'horizontal', 'vertical'}, optional\n Controls the direction of the event collections:\n \n - 'horizontal' : the lines are arranged horizontally in rows,\n and are vertical.\n - 'vertical' : the lines are arranged vertically in columns,\n and are horizontal.\n \n lineoffsets : scalar or sequence of scalars, optional, default: 1\n The offset of the center of the lines from the origin, in the\n direction orthogonal to *orientation*.\n \n linelengths : scalar or sequence of scalars, optional, default: 1\n The total height of the lines (i.e. the lines stretches from\n ``lineoffset - linelength/2`` to ``lineoffset + linelength/2``).\n \n linewidths : scalar, scalar sequence or None, optional, default: None\n The line width(s) of the event lines, in points. If it is None,\n defaults to its rcParams setting.\n \n colors : color, sequence of colors or None, optional, default: None\n The color(s) of the event lines. If it is None, defaults to its\n rcParams setting.\n \n linestyles : str or tuple or a sequence of such values, optional\n Default is 'solid'. Valid strings are ['solid', 'dashed',\n 'dashdot', 'dotted', '-', '--', '-.', ':']. Dash tuples\n should be of the form::\n \n (offset, onoffseq),\n \n where *onoffseq* is an even length tuple of on and off ink\n in points.\n \n **kwargs : optional\n Other keyword arguments are line collection properties. See\n :class:`~matplotlib.collections.LineCollection` for a list of\n the valid properties.\n \n Returns\n -------\n list : A list of :class:`~.collections.EventCollection` objects.\n Contains the :class:`~.collections.EventCollection` that\n were added.\n \n Notes\n -----\n For *linelengths*, *linewidths*, *colors*, and *linestyles*, if only\n a single value is given, that value is applied to all lines. If an\n array-like is given, it must have the same length as *positions*, and\n each value will be applied to the corresponding row of the array.\n \n Examples\n --------\n .. plot:: gallery/lines_bars_and_markers/eventplot_demo.py\n \n .. note::\n In addition to the above described arguments, this function can take a\n **data** keyword argument. If such a **data** argument is given, the\n following arguments are replaced by **data[<arg>]**:\n \n * All arguments with the following names: 'colors', 'linelengths', 'lineoffsets', 'linestyles', 'linewidths', 'positions'.\n \n Objects passed as **data** must support item access (``data[<arg>]``) and\n membership test (``<arg> in data``).\n \n figimage(X, xo=0, yo=0, alpha=None, norm=None, cmap=None, vmin=None, vmax=None, origin=None, resize=False, **kwargs)\n Add a non-resampled image to the figure.\n \n The image is attached to the lower or upper left corner depending on\n *origin*.\n \n Parameters\n ----------\n X\n The image data. This is an array of one of the following shapes:\n \n - MxN: luminance (grayscale) values\n - MxNx3: RGB values\n - MxNx4: RGBA values\n \n xo, yo : int\n The *x*/*y* image offset in pixels.\n \n alpha : None or float\n The alpha blending value.\n \n norm : :class:`matplotlib.colors.Normalize`\n A :class:`.Normalize` instance to map the luminance to the\n interval [0, 1].\n \n cmap : str or :class:`matplotlib.colors.Colormap`\n The colormap to use. Default: :rc:`image.cmap`.\n \n vmin, vmax : scalar\n If *norm* is not given, these values set the data limits for the\n colormap.\n \n origin : {'upper', 'lower'}\n Indicates where the [0, 0] index of the array is in the upper left\n or lower left corner of the axes. Defaults to :rc:`image.origin`.\n \n resize : bool\n If *True*, resize the figure to match the given image size.\n \n Returns\n -------\n :class:`matplotlib.image.FigureImage`\n \n Other Parameters\n ----------------\n **kwargs\n Additional kwargs are `.Artist` kwargs passed on to `.FigureImage`.\n \n Notes\n -----\n figimage complements the axes image\n (:meth:`~matplotlib.axes.Axes.imshow`) which will be resampled\n to fit the current axes. If you want a resampled image to\n fill the entire figure, you can define an\n :class:`~matplotlib.axes.Axes` with extent [0, 0, 1, 1].\n \n \n Examples::\n \n f = plt.figure()\n nx = int(f.get_figwidth() * f.dpi)\n ny = int(f.get_figheight() * f.dpi)\n data = np.random.random((ny, nx))\n f.figimage(data)\n plt.show()\n \n figlegend(*args, **kwargs)\n Place a legend on the figure.\n \n To make a legend from existing artists on every axes::\n \n figlegend()\n \n To make a legend for a list of lines and labels::\n \n figlegend(\n (line1, line2, line3),\n ('label1', 'label2', 'label3'),\n loc='upper right')\n \n These can also be specified by keyword::\n \n figlegend(\n handles=(line1, line2, line3),\n labels=('label1', 'label2', 'label3'),\n loc='upper right')\n \n Parameters\n ----------\n handles : list of `.Artist`, optional\n A list of Artists (lines, patches) to be added to the legend.\n Use this together with *labels*, if you need full control on what\n is shown in the legend and the automatic mechanism described above\n is not sufficient.\n \n The length of handles and labels should be the same in this\n case. If they are not, they are truncated to the smaller length.\n \n labels : list of str, optional\n A list of labels to show next to the artists.\n Use this together with *handles*, if you need full control on what\n is shown in the legend and the automatic mechanism described above\n is not sufficient.\n \n Other Parameters\n ----------------\n \n loc : str or pair of floats, default: :rc:`legend.loc` ('best' for axes, 'upper right' for figures)\n The location of the legend.\n \n The strings\n ``'upper left', 'upper right', 'lower left', 'lower right'``\n place the legend at the corresponding corner of the axes/figure.\n \n The strings\n ``'upper center', 'lower center', 'center left', 'center right'``\n place the legend at the center of the corresponding edge of the\n axes/figure.\n \n The string ``'center'`` places the legend at the center of the axes/figure.\n \n The string ``'best'`` places the legend at the location, among the nine\n locations defined so far, with the minimum overlap with other drawn\n artists. This option can be quite slow for plots with large amounts of\n data; your plotting speed may benefit from providing a specific location.\n \n The location can also be a 2-tuple giving the coordinates of the lower-left\n corner of the legend in axes coordinates (in which case *bbox_to_anchor*\n will be ignored).\n \n For back-compatibility, ``'center right'`` (but no other location) can also\n be spelled ``'right'``, and each \"string\" locations can also be given as a\n numeric value:\n \n =============== =============\n Location String Location Code\n =============== =============\n 'best' 0\n 'upper right' 1\n 'upper left' 2\n 'lower left' 3\n 'lower right' 4\n 'right' 5\n 'center left' 6\n 'center right' 7\n 'lower center' 8\n 'upper center' 9\n 'center' 10\n =============== =============\n \n bbox_to_anchor : `.BboxBase`, 2-tuple, or 4-tuple of floats\n Box that is used to position the legend in conjunction with *loc*.\n Defaults to `axes.bbox` (if called as a method to `.Axes.legend`) or\n `figure.bbox` (if `.Figure.legend`). This argument allows arbitrary\n placement of the legend.\n \n Bbox coordinates are interpreted in the coordinate system given by\n `bbox_transform`, with the default transform\n Axes or Figure coordinates, depending on which ``legend`` is called.\n \n If a 4-tuple or `.BboxBase` is given, then it specifies the bbox\n ``(x, y, width, height)`` that the legend is placed in.\n To put the legend in the best location in the bottom right\n quadrant of the axes (or figure)::\n \n loc='best', bbox_to_anchor=(0.5, 0., 0.5, 0.5)\n \n A 2-tuple ``(x, y)`` places the corner of the legend specified by *loc* at\n x, y. For example, to put the legend's upper right-hand corner in the\n center of the axes (or figure) the following keywords can be used::\n \n loc='upper right', bbox_to_anchor=(0.5, 0.5)\n \n ncol : integer\n The number of columns that the legend has. Default is 1.\n \n prop : None or :class:`matplotlib.font_manager.FontProperties` or dict\n The font properties of the legend. If None (default), the current\n :data:`matplotlib.rcParams` will be used.\n \n fontsize : int or float or {'xx-small', 'x-small', 'small', 'medium', 'large', 'x-large', 'xx-large'}\n The font size of the legend. If the value is numeric the size will be the\n absolute font size in points. String values are relative to the current\n default font size. This argument is only used if *prop* is not specified.\n \n numpoints : None or int\n The number of marker points in the legend when creating a legend\n entry for a `.Line2D` (line).\n Default is ``None``, which means using :rc:`legend.numpoints`.\n \n scatterpoints : None or int\n The number of marker points in the legend when creating\n a legend entry for a `.PathCollection` (scatter plot).\n Default is ``None``, which means using :rc:`legend.scatterpoints`.\n \n scatteryoffsets : iterable of floats\n The vertical offset (relative to the font size) for the markers\n created for a scatter plot legend entry. 0.0 is at the base the\n legend text, and 1.0 is at the top. To draw all markers at the\n same height, set to ``[0.5]``. Default is ``[0.375, 0.5, 0.3125]``.\n \n markerscale : None or int or float\n The relative size of legend markers compared with the originally\n drawn ones.\n Default is ``None``, which means using :rc:`legend.markerscale`.\n \n markerfirst : bool\n If *True*, legend marker is placed to the left of the legend label.\n If *False*, legend marker is placed to the right of the legend\n label.\n Default is *True*.\n \n frameon : None or bool\n Whether the legend should be drawn on a patch (frame).\n Default is ``None``, which means using :rc:`legend.frameon`.\n \n fancybox : None or bool\n Whether round edges should be enabled around the `~.FancyBboxPatch` which\n makes up the legend's background.\n Default is ``None``, which means using :rc:`legend.fancybox`.\n \n shadow : None or bool\n Whether to draw a shadow behind the legend.\n Default is ``None``, which means using :rc:`legend.shadow`.\n \n framealpha : None or float\n The alpha transparency of the legend's background.\n Default is ``None``, which means using :rc:`legend.framealpha`.\n If *shadow* is activated and *framealpha* is ``None``, the default value is\n ignored.\n \n facecolor : None or \"inherit\" or color\n The legend's background color.\n Default is ``None``, which means using :rc:`legend.facecolor`.\n If ``\"inherit\"``, use :rc:`axes.facecolor`.\n \n edgecolor : None or \"inherit\" or color\n The legend's background patch edge color.\n Default is ``None``, which means using :rc:`legend.edgecolor`.\n If ``\"inherit\"``, use take :rc:`axes.edgecolor`.\n \n mode : {\"expand\", None}\n If *mode* is set to ``\"expand\"`` the legend will be horizontally\n expanded to fill the axes area (or `bbox_to_anchor` if defines\n the legend's size).\n \n bbox_transform : None or :class:`matplotlib.transforms.Transform`\n The transform for the bounding box (`bbox_to_anchor`). For a value\n of ``None`` (default) the Axes'\n :data:`~matplotlib.axes.Axes.transAxes` transform will be used.\n \n title : str or None\n The legend's title. Default is no title (``None``).\n \n title_fontsize: str or None\n The fontsize of the legend's title. Default is the default fontsize.\n \n borderpad : float or None\n The fractional whitespace inside the legend border, in font-size units.\n Default is ``None``, which means using :rc:`legend.borderpad`.\n \n labelspacing : float or None\n The vertical space between the legend entries, in font-size units.\n Default is ``None``, which means using :rc:`legend.labelspacing`.\n \n handlelength : float or None\n The length of the legend handles, in font-size units.\n Default is ``None``, which means using :rc:`legend.handlelength`.\n \n handletextpad : float or None\n The pad between the legend handle and text, in font-size units.\n Default is ``None``, which means using :rc:`legend.handletextpad`.\n \n borderaxespad : float or None\n The pad between the axes and legend border, in font-size units.\n Default is ``None``, which means using :rc:`legend.borderaxespad`.\n \n columnspacing : float or None\n The spacing between columns, in font-size units.\n Default is ``None``, which means using :rc:`legend.columnspacing`.\n \n handler_map : dict or None\n The custom dictionary mapping instances or types to a legend\n handler. This `handler_map` updates the default handler map\n found at :func:`matplotlib.legend.Legend.get_legend_handler_map`.\n \n \n \n Returns\n -------\n :class:`matplotlib.legend.Legend` instance\n \n Notes\n -----\n Not all kinds of artist are supported by the legend command. See\n :doc:`/tutorials/intermediate/legend_guide` for details.\n \n fignum_exists(num)\n Return whether the figure with the given id exists.\n \n figtext(x, y, s, fontdict=None, withdash=<deprecated parameter>, **kwargs)\n Add text to figure.\n \n Parameters\n ----------\n x, y : float\n The position to place the text. By default, this is in figure\n coordinates, floats in [0, 1]. The coordinate system can be changed\n using the *transform* keyword.\n \n s : str\n The text string.\n \n fontdict : dictionary, optional, default: None\n A dictionary to override the default text properties. If fontdict\n is None, the defaults are determined by your rc parameters. A\n property in *kwargs* override the same property in fontdict.\n \n withdash : boolean, optional, default: False\n Creates a `~matplotlib.text.TextWithDash` instance instead of a\n `~matplotlib.text.Text` instance.\n \n Other Parameters\n ----------------\n **kwargs : `~matplotlib.text.Text` properties\n Other miscellaneous text parameters.\n \n Properties:\n agg_filter: a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array\n alpha: float or None\n animated: bool\n backgroundcolor: color\n bbox: dict with properties for `.patches.FancyBboxPatch`\n clip_box: `.Bbox`\n clip_on: bool\n clip_path: Patch or (Path, Transform) or None\n color or c: color\n contains: callable\n figure: `.Figure`\n fontfamily or family: {FONTNAME, 'serif', 'sans-serif', 'cursive', 'fantasy', 'monospace'}\n fontproperties or font_properties: `.font_manager.FontProperties`\n fontsize or size: {size in points, 'xx-small', 'x-small', 'small', 'medium', 'large', 'x-large', 'xx-large'}\n fontstretch or stretch: {a numeric value in range 0-1000, 'ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded'}\n fontstyle or style: {'normal', 'italic', 'oblique'}\n fontvariant or variant: {'normal', 'small-caps'}\n fontweight or weight: {a numeric value in range 0-1000, 'ultralight', 'light', 'normal', 'regular', 'book', 'medium', 'roman', 'semibold', 'demibold', 'demi', 'bold', 'heavy', 'extra bold', 'black'}\n gid: str\n horizontalalignment or ha: {'center', 'right', 'left'}\n in_layout: bool\n label: object\n linespacing: float (multiple of font size)\n multialignment or ma: {'left', 'right', 'center'}\n path_effects: `.AbstractPathEffect`\n picker: None or bool or float or callable\n position: (float, float)\n rasterized: bool or None\n rotation: {angle in degrees, 'vertical', 'horizontal'}\n rotation_mode: {None, 'default', 'anchor'}\n sketch_params: (scale: float, length: float, randomness: float)\n snap: bool or None\n text: object\n transform: `.Transform`\n url: str\n usetex: bool or None\n verticalalignment or va: {'center', 'top', 'bottom', 'baseline', 'center_baseline'}\n visible: bool\n wrap: bool\n x: float\n y: float\n zorder: float\n \n Returns\n -------\n text : `~.text.Text`\n \n See Also\n --------\n .Axes.text\n .pyplot.text\n \n figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True, FigureClass=<class 'matplotlib.figure.Figure'>, clear=False, **kwargs)\n Create a new figure.\n \n Parameters\n ----------\n num : int or str, optional, default: None\n If not provided, a new figure will be created, and the figure number\n will be incremented. The figure objects holds this number in a `number`\n attribute.\n If num is provided, and a figure with this id already exists, make\n it active, and returns a reference to it. If this figure does not\n exists, create it and returns it.\n If num is a string, the window title will be set to this figure's\n *num*.\n \n figsize : (float, float), optional, default: None\n width, height in inches. If not provided, defaults to\n :rc:`figure.figsize` = ``[6.4, 4.8]``.\n \n dpi : integer, optional, default: None\n resolution of the figure. If not provided, defaults to\n :rc:`figure.dpi` = ``100``.\n \n facecolor : color\n the background color. If not provided, defaults to\n :rc:`figure.facecolor` = ``'w'``.\n \n edgecolor : color\n the border color. If not provided, defaults to\n :rc:`figure.edgecolor` = ``'w'``.\n \n frameon : bool, optional, default: True\n If False, suppress drawing the figure frame.\n \n FigureClass : subclass of `~matplotlib.figure.Figure`\n Optionally use a custom `.Figure` instance.\n \n clear : bool, optional, default: False\n If True and the figure already exists, then it is cleared.\n \n Returns\n -------\n figure : `~matplotlib.figure.Figure`\n The `.Figure` instance returned will also be passed to\n new_figure_manager in the backends, which allows to hook custom\n `.Figure` classes into the pyplot interface. Additional kwargs will be\n passed to the `.Figure` init function.\n \n Notes\n -----\n If you are creating many figures, make sure you explicitly call\n `.pyplot.close` on the figures you are not using, because this will\n enable pyplot to properly clean up the memory.\n \n `~matplotlib.rcParams` defines the default values, which can be modified\n in the matplotlibrc file.\n \n fill(*args, data=None, **kwargs)\n Plot filled polygons.\n \n Parameters\n ----------\n *args : sequence of x, y, [color]\n Each polygon is defined by the lists of *x* and *y* positions of\n its nodes, optionally followed by a *color* specifier. See\n :mod:`matplotlib.colors` for supported color specifiers. The\n standard color cycle is used for polygons without a color\n specifier.\n \n You can plot multiple polygons by providing multiple *x*, *y*,\n *[color]* groups.\n \n For example, each of the following is legal::\n \n ax.fill(x, y) # a polygon with default color\n ax.fill(x, y, \"b\") # a blue polygon\n ax.fill(x, y, x2, y2) # two polygons\n ax.fill(x, y, \"b\", x2, y2, \"r\") # a blue and a red polygon\n \n data : indexable object, optional\n An object with labelled data. If given, provide the label names to\n plot in *x* and *y*, e.g.::\n \n ax.fill(\"time\", \"signal\",\n data={\"time\": [0, 1, 2], \"signal\": [0, 1, 0]})\n \n Returns\n -------\n a list of :class:`~matplotlib.patches.Polygon`\n \n Other Parameters\n ----------------\n **kwargs : :class:`~matplotlib.patches.Polygon` properties\n \n Notes\n -----\n Use :meth:`fill_between` if you would like to fill the region between\n two curves.\n \n fill_between(x, y1, y2=0, where=None, interpolate=False, step=None, *, data=None, **kwargs)\n Fill the area between two horizontal curves.\n \n The curves are defined by the points (*x*, *y1*) and (*x*, *y2*). This\n creates one or multiple polygons describing the filled area.\n \n You may exclude some horizontal sections from filling using *where*.\n \n By default, the edges connect the given points directly. Use *step* if\n the filling should be a step function, i.e. constant in between *x*.\n \n \n Parameters\n ----------\n x : array (length N)\n The x coordinates of the nodes defining the curves.\n \n y1 : array (length N) or scalar\n The y coordinates of the nodes defining the first curve.\n \n y2 : array (length N) or scalar, optional, default: 0\n The y coordinates of the nodes defining the second curve.\n \n where : array of bool (length N), optional, default: None\n Define *where* to exclude some horizontal regions from being\n filled. The filled regions are defined by the coordinates\n ``x[where]``. More precisely, fill between ``x[i]`` and ``x[i+1]``\n if ``where[i] and where[i+1]``. Note that this definition implies\n that an isolated *True* value between two *False* values in\n *where* will not result in filling. Both sides of the *True*\n position remain unfilled due to the adjacent *False* values.\n \n interpolate : bool, optional\n This option is only relevant if *where* is used and the two curves\n are crossing each other.\n \n Semantically, *where* is often used for *y1* > *y2* or similar.\n By default, the nodes of the polygon defining the filled region\n will only be placed at the positions in the *x* array. Such a\n polygon cannot describe the above semantics close to the\n intersection. The x-sections containing the intersection are\n simply clipped.\n \n Setting *interpolate* to *True* will calculate the actual\n intersection point and extend the filled region up to this point.\n \n step : {'pre', 'post', 'mid'}, optional\n Define *step* if the filling should be a step function,\n i.e. constant in between *x*. The value determines where the\n step will occur:\n \n - 'pre': The y value is continued constantly to the left from\n every *x* position, i.e. the interval ``(x[i-1], x[i]]`` has the\n value ``y[i]``.\n - 'post': The y value is continued constantly to the right from\n every *x* position, i.e. the interval ``[x[i], x[i+1])`` has the\n value ``y[i]``.\n - 'mid': Steps occur half-way between the *x* positions.\n \n Other Parameters\n ----------------\n **kwargs\n All other keyword arguments are passed on to `.PolyCollection`.\n They control the `.Polygon` properties:\n \n Properties:\n agg_filter: a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array\n alpha: float or None\n animated: bool\n antialiased or aa or antialiaseds: bool or sequence of bools\n array: ndarray\n capstyle: {'butt', 'round', 'projecting'}\n clim: (vmin: float, vmax: float)\n clip_box: `.Bbox`\n clip_on: bool\n clip_path: Patch or (Path, Transform) or None\n cmap: colormap or registered colormap name\n color: color or sequence of rgba tuples\n contains: callable\n edgecolor or ec or edgecolors: color or sequence of colors or 'face'\n facecolor or facecolors or fc: color or sequence of colors\n figure: `.Figure`\n gid: str\n hatch: {'/', '\\\\', '|', '-', '+', 'x', 'o', 'O', '.', '*'}\n in_layout: bool\n joinstyle: {'miter', 'round', 'bevel'}\n label: object\n linestyle or dashes or linestyles or ls: {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}\n linewidth or linewidths or lw: float or sequence of floats\n norm: `.Normalize`\n offset_position: {'screen', 'data'}\n offsets: array-like (N, 2) or (2,)\n path_effects: `.AbstractPathEffect`\n picker: None or bool or float or callable\n pickradius: unknown\n rasterized: bool or None\n sketch_params: (scale: float, length: float, randomness: float)\n snap: bool or None\n transform: `.Transform`\n url: str\n urls: List[str] or None\n visible: bool\n zorder: float\n \n Returns\n -------\n `.PolyCollection`\n A `.PolyCollection` containing the plotted polygons.\n \n See Also\n --------\n fill_betweenx : Fill between two sets of x-values.\n \n Notes\n -----\n .. [notes section required to get data note injection right]\n \n .. note::\n In addition to the above described arguments, this function can take a\n **data** keyword argument. If such a **data** argument is given, the\n following arguments are replaced by **data[<arg>]**:\n \n * All arguments with the following names: 'where', 'x', 'y1', 'y2'.\n \n Objects passed as **data** must support item access (``data[<arg>]``) and\n membership test (``<arg> in data``).\n \n fill_betweenx(y, x1, x2=0, where=None, step=None, interpolate=False, *, data=None, **kwargs)\n Fill the area between two vertical curves.\n \n The curves are defined by the points (*x1*, *y*) and (*x2*, *y*). This\n creates one or multiple polygons describing the filled area.\n \n You may exclude some vertical sections from filling using *where*.\n \n By default, the edges connect the given points directly. Use *step* if\n the filling should be a step function, i.e. constant in between *y*.\n \n \n Parameters\n ----------\n y : array (length N)\n The y coordinates of the nodes defining the curves.\n \n x1 : array (length N) or scalar\n The x coordinates of the nodes defining the first curve.\n \n x2 : array (length N) or scalar, optional, default: 0\n The x coordinates of the nodes defining the second curve.\n \n where : array of bool (length N), optional, default: None\n Define *where* to exclude some vertical regions from being\n filled. The filled regions are defined by the coordinates\n ``y[where]``. More precisely, fill between ``y[i]`` and ``y[i+1]``\n if ``where[i] and where[i+1]``. Note that this definition implies\n that an isolated *True* value between two *False* values in\n *where* will not result in filling. Both sides of the *True*\n position remain unfilled due to the adjacent *False* values.\n \n interpolate : bool, optional\n This option is only relevant if *where* is used and the two curves\n are crossing each other.\n \n Semantically, *where* is often used for *x1* > *x2* or similar.\n By default, the nodes of the polygon defining the filled region\n will only be placed at the positions in the *y* array. Such a\n polygon cannot describe the above semantics close to the\n intersection. The y-sections containing the intersection are\n simply clipped.\n \n Setting *interpolate* to *True* will calculate the actual\n intersection point and extend the filled region up to this point.\n \n step : {'pre', 'post', 'mid'}, optional\n Define *step* if the filling should be a step function,\n i.e. constant in between *y*. The value determines where the\n step will occur:\n \n - 'pre': The y value is continued constantly to the left from\n every *x* position, i.e. the interval ``(x[i-1], x[i]]`` has the\n value ``y[i]``.\n - 'post': The y value is continued constantly to the right from\n every *x* position, i.e. the interval ``[x[i], x[i+1])`` has the\n value ``y[i]``.\n - 'mid': Steps occur half-way between the *x* positions.\n \n Other Parameters\n ----------------\n **kwargs\n All other keyword arguments are passed on to `.PolyCollection`.\n They control the `.Polygon` properties:\n \n Properties:\n agg_filter: a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array\n alpha: float or None\n animated: bool\n antialiased or aa or antialiaseds: bool or sequence of bools\n array: ndarray\n capstyle: {'butt', 'round', 'projecting'}\n clim: (vmin: float, vmax: float)\n clip_box: `.Bbox`\n clip_on: bool\n clip_path: Patch or (Path, Transform) or None\n cmap: colormap or registered colormap name\n color: color or sequence of rgba tuples\n contains: callable\n edgecolor or ec or edgecolors: color or sequence of colors or 'face'\n facecolor or facecolors or fc: color or sequence of colors\n figure: `.Figure`\n gid: str\n hatch: {'/', '\\\\', '|', '-', '+', 'x', 'o', 'O', '.', '*'}\n in_layout: bool\n joinstyle: {'miter', 'round', 'bevel'}\n label: object\n linestyle or dashes or linestyles or ls: {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}\n linewidth or linewidths or lw: float or sequence of floats\n norm: `.Normalize`\n offset_position: {'screen', 'data'}\n offsets: array-like (N, 2) or (2,)\n path_effects: `.AbstractPathEffect`\n picker: None or bool or float or callable\n pickradius: unknown\n rasterized: bool or None\n sketch_params: (scale: float, length: float, randomness: float)\n snap: bool or None\n transform: `.Transform`\n url: str\n urls: List[str] or None\n visible: bool\n zorder: float\n \n Returns\n -------\n `.PolyCollection`\n A `.PolyCollection` containing the plotted polygons.\n \n See Also\n --------\n fill_between : Fill between two sets of y-values.\n \n Notes\n -----\n .. [notes section required to get data note injection right]\n \n .. note::\n In addition to the above described arguments, this function can take a\n **data** keyword argument. If such a **data** argument is given, the\n following arguments are replaced by **data[<arg>]**:\n \n * All arguments with the following names: 'where', 'x1', 'x2', 'y'.\n \n Objects passed as **data** must support item access (``data[<arg>]``) and\n membership test (``<arg> in data``).\n \n findobj(o=None, match=None, include_self=True)\n Find artist objects.\n \n Recursively find all `.Artist` instances contained in the artist.\n \n Parameters\n ----------\n match\n A filter criterion for the matches. This can be\n \n - *None*: Return all objects contained in artist.\n - A function with signature ``def match(artist: Artist) -> bool``.\n The result will only contain artists for which the function\n returns *True*.\n - A class instance: e.g., `.Line2D`. The result will only contain\n artists of this class or its subclasses (``isinstance`` check).\n \n include_self : bool\n Include *self* in the list to be checked for a match.\n \n Returns\n -------\n artists : list of `.Artist`\n \n flag()\n Set the colormap to \"flag\".\n \n This changes the default colormap as well as the colormap of the current\n image if there is one. See ``help(colormaps)`` for more information.\n \n gca(**kwargs)\n Get the current :class:`~matplotlib.axes.Axes` instance on the\n current figure matching the given keyword args, or create one.\n \n Examples\n --------\n To get the current polar axes on the current figure::\n \n plt.gca(projection='polar')\n \n If the current axes doesn't exist, or isn't a polar one, the appropriate\n axes will be created and then returned.\n \n See Also\n --------\n matplotlib.figure.Figure.gca : The figure's gca method.\n \n gcf()\n Get the current figure.\n \n If no current figure exists, a new one is created using\n `~.pyplot.figure()`.\n \n gci()\n Get the current colorable artist.\n \n Specifically, returns the current `.ScalarMappable` instance (`.Image`\n created by `imshow` or `figimage`, `.Collection` created by `pcolor` or\n `scatter`, etc.), or *None* if no such instance has been defined.\n \n The current image is an attribute of the current axes, or the nearest\n earlier axes in the current figure that contains an image.\n \n Notes\n -----\n Historically, the only colorable artists were images; hence the name\n ``gci`` (get current image).\n \n get_current_fig_manager()\n Return the figure manager of the current figure.\n \n The figure manager is a container for the actual backend-depended window\n that displays the figure on screen.\n \n If if no current figure exists, a new one is created an its figure\n manager is returned.\n \n Returns\n -------\n manager : `.FigureManagerBase` or backend-dependent subclass thereof\n \n get_figlabels()\n Return a list of existing figure labels.\n \n get_fignums()\n Return a list of existing figure numbers.\n \n get_plot_commands()\n Get a sorted list of all of the plotting commands.\n \n ginput(n=1, timeout=30, show_clicks=True, mouse_add=1, mouse_pop=3, mouse_stop=2)\n Blocking call to interact with a figure.\n \n Wait until the user clicks *n* times on the figure, and return the\n coordinates of each click in a list.\n \n There are three possible interactions:\n \n - Add a point.\n - Remove the most recently added point.\n - Stop the interaction and return the points added so far.\n \n The actions are assigned to mouse buttons via the arguments\n *mouse_add*, *mouse_pop* and *mouse_stop*. Mouse buttons are defined\n by the numbers:\n \n - 1: left mouse button\n - 2: middle mouse button\n - 3: right mouse button\n - None: no mouse button\n \n Parameters\n ----------\n n : int, optional, default: 1\n Number of mouse clicks to accumulate. If negative, accumulate\n clicks until the input is terminated manually.\n timeout : scalar, optional, default: 30\n Number of seconds to wait before timing out. If zero or negative\n will never timeout.\n show_clicks : bool, optional, default: True\n If True, show a red cross at the location of each click.\n mouse_add : {1, 2, 3, None}, optional, default: 1 (left click)\n Mouse button used to add points.\n mouse_pop : {1, 2, 3, None}, optional, default: 3 (right click)\n Mouse button used to remove the most recently added point.\n mouse_stop : {1, 2, 3, None}, optional, default: 2 (middle click)\n Mouse button used to stop input.\n \n Returns\n -------\n points : list of tuples\n A list of the clicked (x, y) coordinates.\n \n Notes\n -----\n The keyboard can also be used to select points in case your mouse\n does not have one or more of the buttons. The delete and backspace\n keys act like right clicking (i.e., remove last point), the enter key\n terminates input and any other key (not already used by the window\n manager) selects a point.\n \n gray()\n Set the colormap to \"gray\".\n \n This changes the default colormap as well as the colormap of the current\n image if there is one. See ``help(colormaps)`` for more information.\n \n grid(b=None, which='major', axis='both', **kwargs)\n Configure the grid lines.\n \n Parameters\n ----------\n b : bool or None, optional\n Whether to show the grid lines. If any *kwargs* are supplied,\n it is assumed you want the grid on and *b* will be set to True.\n \n If *b* is *None* and there are no *kwargs*, this toggles the\n visibility of the lines.\n \n which : {'major', 'minor', 'both'}, optional\n The grid lines to apply the changes on.\n \n axis : {'both', 'x', 'y'}, optional\n The axis to apply the changes on.\n \n **kwargs : `.Line2D` properties\n Define the line properties of the grid, e.g.::\n \n grid(color='r', linestyle='-', linewidth=2)\n \n Valid keyword arguments are:\n \n Properties:\n agg_filter: a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array\n alpha: float or None\n animated: bool\n antialiased or aa: bool\n clip_box: `.Bbox`\n clip_on: bool\n clip_path: Patch or (Path, Transform) or None\n color or c: color\n contains: callable\n dash_capstyle: {'butt', 'round', 'projecting'}\n dash_joinstyle: {'miter', 'round', 'bevel'}\n dashes: sequence of floats (on/off ink in points) or (None, None)\n data: (2, N) array or two 1D arrays\n drawstyle or ds: {'default', 'steps', 'steps-pre', 'steps-mid', 'steps-post'}, default: 'default'\n figure: `.Figure`\n fillstyle: {'full', 'left', 'right', 'bottom', 'top', 'none'}\n gid: str\n in_layout: bool\n label: object\n linestyle or ls: {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}\n linewidth or lw: float\n marker: marker style\n markeredgecolor or mec: color\n markeredgewidth or mew: float\n markerfacecolor or mfc: color\n markerfacecoloralt or mfcalt: color\n markersize or ms: float\n markevery: None or int or (int, int) or slice or List[int] or float or (float, float)\n path_effects: `.AbstractPathEffect`\n picker: float or callable[[Artist, Event], Tuple[bool, dict]]\n pickradius: float\n rasterized: bool or None\n sketch_params: (scale: float, length: float, randomness: float)\n snap: bool or None\n solid_capstyle: {'butt', 'round', 'projecting'}\n solid_joinstyle: {'miter', 'round', 'bevel'}\n transform: `matplotlib.transforms.Transform`\n url: str\n visible: bool\n xdata: 1D array\n ydata: 1D array\n zorder: float\n \n Notes\n -----\n The axis is drawn as a unit, so the effective zorder for drawing the\n grid is determined by the zorder of each axis, not by the zorder of the\n `.Line2D` objects comprising the grid. Therefore, to set grid zorder,\n use `.set_axisbelow` or, for more control, call the\n `~matplotlib.axis.Axis.set_zorder` method of each axis.\n \n hexbin(x, y, C=None, gridsize=100, bins=None, xscale='linear', yscale='linear', extent=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, edgecolors='face', reduce_C_function=<function mean at 0x7f445c0c4b00>, mincnt=None, marginals=False, *, data=None, **kwargs)\n Make a 2D hexagonal binning plot of points *x*, *y*.\n \n If *C* is *None*, the value of the hexagon is determined by the number\n of points in the hexagon. Otherwise, *C* specifies values at the\n coordinate (x[i], y[i]). For each hexagon, these values are reduced\n using *reduce_C_function*.\n \n Parameters\n ----------\n x, y : array-like\n The data positions. *x* and *y* must be of the same length.\n \n C : array-like, optional\n If given, these values are accumulated in the bins. Otherwise,\n every point has a value of 1. Must be of the same length as *x*\n and *y*.\n \n gridsize : int or (int, int), default: 100\n If a single int, the number of hexagons in the *x*-direction.\n The number of hexagons in the *y*-direction is chosen such that\n the hexagons are approximately regular.\n \n Alternatively, if a tuple (*nx*, *ny*), the number of hexagons\n in the *x*-direction and the *y*-direction.\n \n bins : 'log' or int or sequence, default: *None*\n Discretization of the hexagon values.\n \n - If *None*, no binning is applied; the color of each hexagon\n directly corresponds to its count value.\n - If 'log', use a logarithmic scale for the color map.\n Internally, :math:`log_{10}(i+1)` is used to determine the\n hexagon color. This is equivalent to ``norm=LogNorm()``.\n - If an integer, divide the counts in the specified number\n of bins, and color the hexagons accordingly.\n - If a sequence of values, the values of the lower bound of\n the bins to be used.\n \n xscale : {'linear', 'log'}, default: 'linear'\n Use a linear or log10 scale on the horizontal axis.\n \n yscale : {'linear', 'log'}, default: 'linear'\n Use a linear or log10 scale on the vertical axis.\n \n mincnt : int > 0, default: *None*\n If not *None*, only display cells with more than *mincnt*\n number of points in the cell.\n \n marginals : bool, default: *False*\n If marginals is *True*, plot the marginal density as\n colormapped rectangles along the bottom of the x-axis and\n left of the y-axis.\n \n extent : float, default: *None*\n The limits of the bins. The default assigns the limits\n based on *gridsize*, *x*, *y*, *xscale* and *yscale*.\n \n If *xscale* or *yscale* is set to 'log', the limits are\n expected to be the exponent for a power of 10. E.g. for\n x-limits of 1 and 50 in 'linear' scale and y-limits\n of 10 and 1000 in 'log' scale, enter (1, 50, 1, 3).\n \n Order of scalars is (left, right, bottom, top).\n \n Other Parameters\n ----------------\n cmap : str or `~matplotlib.colors.Colormap`, optional\n The Colormap instance or registered colormap name used to map\n the bin values to colors. Defaults to :rc:`image.cmap`.\n \n norm : `~matplotlib.colors.Normalize`, optional\n The Normalize instance scales the bin values to the canonical\n colormap range [0, 1] for mapping to colors. By default, the data\n range is mapped to the colorbar range using linear scaling.\n \n vmin, vmax : float, optional, default: None\n The colorbar range. If *None*, suitable min/max values are\n automatically chosen by the `~.Normalize` instance (defaults to\n the respective min/max values of the bins in case of the default\n linear scaling). This is ignored if *norm* is given.\n \n alpha : float between 0 and 1, optional\n The alpha blending value, between 0 (transparent) and 1 (opaque).\n \n linewidths : float, default: *None*\n If *None*, defaults to 1.0.\n \n edgecolors : {'face', 'none', *None*} or color, default: 'face'\n The color of the hexagon edges. Possible values are:\n \n - 'face': Draw the edges in the same color as the fill color.\n - 'none': No edges are drawn. This can sometimes lead to unsightly\n unpainted pixels between the hexagons.\n - *None*: Draw outlines in the default color.\n - An explicit matplotlib color.\n \n reduce_C_function : callable, default is `numpy.mean`\n The function to aggregate *C* within the bins. It is ignored if\n *C* is not given. This must have the signature::\n \n def reduce_C_function(C: array) -> float\n \n Commonly used functions are:\n \n - `numpy.mean`: average of the points\n - `numpy.sum`: integral of the point values\n - `numpy.max`: value taken from the largest point\n \n **kwargs : `~matplotlib.collections.PolyCollection` properties\n All other keyword arguments are passed on to `.PolyCollection`:\n \n Properties:\n agg_filter: a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array\n alpha: float or None\n animated: bool\n antialiased or aa or antialiaseds: bool or sequence of bools\n array: ndarray\n capstyle: {'butt', 'round', 'projecting'}\n clim: (vmin: float, vmax: float)\n clip_box: `.Bbox`\n clip_on: bool\n clip_path: Patch or (Path, Transform) or None\n cmap: colormap or registered colormap name\n color: color or sequence of rgba tuples\n contains: callable\n edgecolor or ec or edgecolors: color or sequence of colors or 'face'\n facecolor or facecolors or fc: color or sequence of colors\n figure: `.Figure`\n gid: str\n hatch: {'/', '\\\\', '|', '-', '+', 'x', 'o', 'O', '.', '*'}\n in_layout: bool\n joinstyle: {'miter', 'round', 'bevel'}\n label: object\n linestyle or dashes or linestyles or ls: {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}\n linewidth or linewidths or lw: float or sequence of floats\n norm: `.Normalize`\n offset_position: {'screen', 'data'}\n offsets: array-like (N, 2) or (2,)\n path_effects: `.AbstractPathEffect`\n picker: None or bool or float or callable\n pickradius: unknown\n rasterized: bool or None\n sketch_params: (scale: float, length: float, randomness: float)\n snap: bool or None\n transform: `.Transform`\n url: str\n urls: List[str] or None\n visible: bool\n zorder: float\n \n Returns\n -------\n polycollection : `~matplotlib.collections.PolyCollection`\n A `.PolyCollection` defining the hexagonal bins.\n \n - `.PolyCollection.get_offset` contains a Mx2 array containing\n the x, y positions of the M hexagon centers.\n - `.PolyCollection.get_array` contains the values of the M\n hexagons.\n \n If *marginals* is *True*, horizontal\n bar and vertical bar (both PolyCollections) will be attached\n to the return collection as attributes *hbar* and *vbar*.\n \n Notes\n -----\n \n \n .. note::\n In addition to the above described arguments, this function can take a\n **data** keyword argument. If such a **data** argument is given, the\n following arguments are replaced by **data[<arg>]**:\n \n * All arguments with the following names: 'x', 'y'.\n \n Objects passed as **data** must support item access (``data[<arg>]``) and\n membership test (``<arg> in data``).\n \n hist(x, bins=None, range=None, density=False, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, *, data=None, **kwargs)\n Plot a histogram.\n \n Compute and draw the histogram of *x*. The return value is a tuple\n (*n*, *bins*, *patches*) or ([*n0*, *n1*, ...], *bins*, [*patches0*,\n *patches1*,...]) if the input contains multiple data. See the\n documentation of the *weights* parameter to draw a histogram of\n already-binned data.\n \n Multiple data can be provided via *x* as a list of datasets\n of potentially different length ([*x0*, *x1*, ...]), or as\n a 2-D ndarray in which each column is a dataset. Note that\n the ndarray form is transposed relative to the list form.\n \n Masked arrays are not supported.\n \n The *bins*, *range*, *weights*, and *density* parameters behave as in\n `numpy.histogram`.\n \n Parameters\n ----------\n x : (n,) array or sequence of (n,) arrays\n Input values, this takes either a single array or a sequence of\n arrays which are not required to be of the same length.\n \n bins : int or sequence or str, optional\n If *bins* is an integer, it defines the number of equal-width bins\n in the range.\n \n If *bins* is a sequence, it defines the bin edges, including the\n left edge of the first bin and the right edge of the last bin;\n in this case, bins may be unequally spaced. All but the last\n (righthand-most) bin is half-open. In other words, if *bins* is::\n \n [1, 2, 3, 4]\n \n then the first bin is ``[1, 2)`` (including 1, but excluding 2) and\n the second ``[2, 3)``. The last bin, however, is ``[3, 4]``, which\n *includes* 4.\n \n If *bins* is a string, it is one of the binning strategies\n supported by `numpy.histogram_bin_edges`: 'auto', 'fd', 'doane',\n 'scott', 'stone', 'rice', 'sturges', or 'sqrt'.\n \n The default is :rc:`hist.bins`.\n \n range : tuple or None, optional\n The lower and upper range of the bins. Lower and upper outliers\n are ignored. If not provided, *range* is ``(x.min(), x.max())``.\n Range has no effect if *bins* is a sequence.\n \n If *bins* is a sequence or *range* is specified, autoscaling\n is based on the specified bin range instead of the\n range of x.\n \n Default is ``None``\n \n density : bool, optional\n If ``True``, the first element of the return tuple will\n be the counts normalized to form a probability density, i.e.,\n the area (or integral) under the histogram will sum to 1.\n This is achieved by dividing the count by the number of\n observations times the bin width and not dividing by the total\n number of observations. If *stacked* is also ``True``, the sum of\n the histograms is normalized to 1.\n \n Default is ``False``.\n \n weights : (n, ) array-like or None, optional\n An array of weights, of the same shape as *x*. Each value in *x*\n only contributes its associated weight towards the bin count\n (instead of 1). If *normed* or *density* is ``True``,\n the weights are normalized, so that the integral of the density\n over the range remains 1.\n \n Default is ``None``.\n \n This parameter can be used to draw a histogram of data that has\n already been binned, e.g. using `np.histogram` (by treating each\n bin as a single point with a weight equal to its count) ::\n \n counts, bins = np.histogram(data)\n plt.hist(bins[:-1], bins, weights=counts)\n \n (or you may alternatively use `~.bar()`).\n \n cumulative : bool or -1, optional\n If ``True``, then a histogram is computed where each bin gives the\n counts in that bin plus all bins for smaller values. The last bin\n gives the total number of datapoints.\n \n If *density* is also ``True`` then the histogram is normalized such\n that the last bin equals 1.\n \n If *cumulative* is a number less than 0 (e.g., -1), the direction\n of accumulation is reversed. In this case, if *density* is also\n ``True``, then the histogram is normalized such that the first bin\n equals 1.\n \n bottom : array-like, scalar, or None, default: None\n Location of the bottom of each bin, ie. bins are drawn from\n ``bottom`` to ``bottom + hist(x, bins)`` If a scalar, the bottom\n of each bin is shifted by the same amount. If an array, each bin\n is shifted independently and the length of bottom must match the\n number of bins. If None, defaults to 0.\n \n histtype : {'bar', 'barstacked', 'step', 'stepfilled'}, optional\n The type of histogram to draw.\n \n - 'bar' is a traditional bar-type histogram. If multiple data\n are given the bars are arranged side by side.\n - 'barstacked' is a bar-type histogram where multiple\n data are stacked on top of each other.\n - 'step' generates a lineplot that is by default unfilled.\n - 'stepfilled' generates a lineplot that is by default filled.\n \n Default is 'bar'\n \n align : {'left', 'mid', 'right'}, optional\n Controls how the histogram is plotted.\n \n - 'left': bars are centered on the left bin edges.\n - 'mid': bars are centered between the bin edges.\n - 'right': bars are centered on the right bin edges.\n \n Default is 'mid'\n \n orientation : {'horizontal', 'vertical'}, optional\n If 'horizontal', `~matplotlib.pyplot.barh` will be used for\n bar-type histograms and the *bottom* kwarg will be the left edges.\n \n rwidth : scalar or None, optional\n The relative width of the bars as a fraction of the bin width. If\n ``None``, automatically compute the width.\n \n Ignored if *histtype* is 'step' or 'stepfilled'.\n \n Default is ``None``\n \n log : bool, optional\n If ``True``, the histogram axis will be set to a log scale. If\n *log* is ``True`` and *x* is a 1D array, empty bins will be\n filtered out and only the non-empty ``(n, bins, patches)``\n will be returned.\n \n Default is ``False``\n \n color : color or array-like of colors or None, optional\n Color or sequence of colors, one per dataset. Default (``None``)\n uses the standard line color sequence.\n \n Default is ``None``\n \n label : str or None, optional\n String, or sequence of strings to match multiple datasets. Bar\n charts yield multiple patches per dataset, but only the first gets\n the label, so that the legend command will work as expected.\n \n default is ``None``\n \n stacked : bool, optional\n If ``True``, multiple data are stacked on top of each other If\n ``False`` multiple data are arranged side by side if histtype is\n 'bar' or on top of each other if histtype is 'step'\n \n Default is ``False``\n \n Returns\n -------\n n : array or list of arrays\n The values of the histogram bins. See *density* and *weights* for a\n description of the possible semantics. If input *x* is an array,\n then this is an array of length *nbins*. If input is a sequence of\n arrays ``[data1, data2, ...]``, then this is a list of arrays with\n the values of the histograms for each of the arrays in the same\n order. The dtype of the array *n* (or of its element arrays) will\n always be float even if no weighting or normalization is used.\n \n bins : array\n The edges of the bins. Length nbins + 1 (nbins left edges and right\n edge of last bin). Always a single array even when multiple data\n sets are passed in.\n \n patches : list or list of lists\n Silent list of individual patches used to create the histogram\n or list of such list if multiple input datasets.\n \n Other Parameters\n ----------------\n **kwargs : `~matplotlib.patches.Patch` properties\n \n See also\n --------\n hist2d : 2D histograms\n \n Notes\n -----\n \n \n .. note::\n In addition to the above described arguments, this function can take a\n **data** keyword argument. If such a **data** argument is given, the\n following arguments are replaced by **data[<arg>]**:\n \n * All arguments with the following names: 'weights', 'x'.\n \n Objects passed as **data** must support item access (``data[<arg>]``) and\n membership test (``<arg> in data``).\n \n hist2d(x, y, bins=10, range=None, density=False, weights=None, cmin=None, cmax=None, *, data=None, **kwargs)\n Make a 2D histogram plot.\n \n Parameters\n ----------\n x, y : array-like, shape (n, )\n Input values\n \n bins : None or int or [int, int] or array-like or [array, array]\n \n The bin specification:\n \n - If int, the number of bins for the two dimensions\n (nx=ny=bins).\n - If ``[int, int]``, the number of bins in each dimension\n (nx, ny = bins).\n - If array-like, the bin edges for the two dimensions\n (x_edges=y_edges=bins).\n - If ``[array, array]``, the bin edges in each dimension\n (x_edges, y_edges = bins).\n \n The default value is 10.\n \n range : array-like shape(2, 2), optional, default: None\n The leftmost and rightmost edges of the bins along each dimension\n (if not specified explicitly in the bins parameters): ``[[xmin,\n xmax], [ymin, ymax]]``. All values outside of this range will be\n considered outliers and not tallied in the histogram.\n \n density : bool, optional, default: False\n Normalize histogram. *normed* is a deprecated synonym for this\n parameter.\n \n weights : array-like, shape (n, ), optional, default: None\n An array of values w_i weighing each sample (x_i, y_i).\n \n cmin : scalar, optional, default: None\n All bins that has count less than cmin will not be displayed (set\n to NaN before passing to imshow) and these count values in the\n return value count histogram will also be set to nan upon return.\n \n cmax : scalar, optional, default: None\n All bins that has count more than cmax will not be displayed (set\n to NaN before passing to imshow) and these count values in the\n return value count histogram will also be set to nan upon return.\n \n Returns\n -------\n h : 2D array\n The bi-dimensional histogram of samples x and y. Values in x are\n histogrammed along the first dimension and values in y are\n histogrammed along the second dimension.\n xedges : 1D array\n The bin edges along the x axis.\n yedges : 1D array\n The bin edges along the y axis.\n image : `~.matplotlib.collections.QuadMesh`\n \n Other Parameters\n ----------------\n cmap : Colormap or str, optional\n A `.colors.Colormap` instance. If not set, use rc settings.\n \n norm : Normalize, optional\n A `.colors.Normalize` instance is used to\n scale luminance data to ``[0, 1]``. If not set, defaults to\n `.colors.Normalize()`.\n \n vmin/vmax : None or scalar, optional\n Arguments passed to the `~.colors.Normalize` instance.\n \n alpha : ``0 <= scalar <= 1`` or ``None``, optional\n The alpha blending value.\n \n See also\n --------\n hist : 1D histogram plotting\n \n Notes\n -----\n - Currently ``hist2d`` calculates its own axis limits, and any limits\n previously set are ignored.\n - Rendering the histogram with a logarithmic color scale is\n accomplished by passing a `.colors.LogNorm` instance to the *norm*\n keyword argument. Likewise, power-law normalization (similar\n in effect to gamma correction) can be accomplished with\n `.colors.PowerNorm`.\n \n .. note::\n In addition to the above described arguments, this function can take a\n **data** keyword argument. If such a **data** argument is given, the\n following arguments are replaced by **data[<arg>]**:\n \n * All arguments with the following names: 'weights', 'x', 'y'.\n \n Objects passed as **data** must support item access (``data[<arg>]``) and\n membership test (``<arg> in data``).\n \n hlines(y, xmin, xmax, colors='k', linestyles='solid', label='', *, data=None, **kwargs)\n Plot horizontal lines at each *y* from *xmin* to *xmax*.\n \n Parameters\n ----------\n y : scalar or sequence of scalar\n y-indexes where to plot the lines.\n \n xmin, xmax : scalar or 1D array-like\n Respective beginning and end of each line. If scalars are\n provided, all lines will have same length.\n \n colors : array-like of colors, optional, default: 'k'\n \n linestyles : {'solid', 'dashed', 'dashdot', 'dotted'}, optional\n \n label : str, optional, default: ''\n \n Returns\n -------\n lines : `~matplotlib.collections.LineCollection`\n \n Other Parameters\n ----------------\n **kwargs : `~matplotlib.collections.LineCollection` properties.\n \n See also\n --------\n vlines : vertical lines\n axhline: horizontal line across the axes\n \n Notes\n -----\n \n \n .. note::\n In addition to the above described arguments, this function can take a\n **data** keyword argument. If such a **data** argument is given, the\n following arguments are replaced by **data[<arg>]**:\n \n * All arguments with the following names: 'colors', 'xmax', 'xmin', 'y'.\n \n Objects passed as **data** must support item access (``data[<arg>]``) and\n membership test (``<arg> in data``).\n \n hot()\n Set the colormap to \"hot\".\n \n This changes the default colormap as well as the colormap of the current\n image if there is one. See ``help(colormaps)`` for more information.\n \n hsv()\n Set the colormap to \"hsv\".\n \n This changes the default colormap as well as the colormap of the current\n image if there is one. See ``help(colormaps)`` for more information.\n \n imread(fname, format=None)\n Read an image from a file into an array.\n \n Parameters\n ----------\n fname : str or file-like\n The image file to read: a filename, a URL or a file-like object opened\n in read-binary mode.\n format : str, optional\n The image file format assumed for reading the data. If not\n given, the format is deduced from the filename. If nothing can\n be deduced, PNG is tried.\n \n Returns\n -------\n imagedata : :class:`numpy.array`\n The image data. The returned array has shape\n \n - (M, N) for grayscale images.\n - (M, N, 3) for RGB images.\n - (M, N, 4) for RGBA images.\n \n Notes\n -----\n Matplotlib can only read PNGs natively. Further image formats are\n supported via the optional dependency on Pillow. Note, URL strings\n are not compatible with Pillow. Check the `Pillow documentation`_\n for more information.\n \n .. _Pillow documentation: http://pillow.readthedocs.io/en/latest/\n \n imsave(fname, arr, **kwargs)\n Save an array as an image file.\n \n Parameters\n ----------\n fname : str or PathLike or file-like\n A path or a file-like object to store the image in.\n If *format* is not set, then the output format is inferred from the\n extension of *fname*, if any, and from :rc:`savefig.format` otherwise.\n If *format* is set, it determines the output format.\n arr : array-like\n The image data. The shape can be one of\n MxN (luminance), MxNx3 (RGB) or MxNx4 (RGBA).\n vmin, vmax : scalar, optional\n *vmin* and *vmax* set the color scaling for the image by fixing the\n values that map to the colormap color limits. If either *vmin*\n or *vmax* is None, that limit is determined from the *arr*\n min/max value.\n cmap : str or `~matplotlib.colors.Colormap`, optional\n A Colormap instance or registered colormap name. The colormap\n maps scalar data to colors. It is ignored for RGB(A) data.\n Defaults to :rc:`image.cmap` ('viridis').\n format : str, optional\n The file format, e.g. 'png', 'pdf', 'svg', ... The behavior when this\n is unset is documented under *fname*.\n origin : {'upper', 'lower'}, optional\n Indicates whether the ``(0, 0)`` index of the array is in the upper\n left or lower left corner of the axes. Defaults to :rc:`image.origin`\n ('upper').\n dpi : int\n The DPI to store in the metadata of the file. This does not affect the\n resolution of the output image.\n metadata : dict, optional\n Metadata in the image file. The supported keys depend on the output\n format, see the documentation of the respective backends for more\n information.\n pil_kwargs : dict, optional\n If set to a non-None value, always use Pillow to save the figure\n (regardless of the output format), and pass these keyword arguments to\n `PIL.Image.save`.\n \n If the 'pnginfo' key is present, it completely overrides\n *metadata*, including the default 'Software' key.\n \n imshow(X, cmap=None, norm=None, aspect=None, interpolation=None, alpha=None, vmin=None, vmax=None, origin=None, extent=None, shape=<deprecated parameter>, filternorm=1, filterrad=4.0, imlim=<deprecated parameter>, resample=None, url=None, *, data=None, **kwargs)\n Display data as an image; i.e. on a 2D regular raster.\n \n The input may either be actual RGB(A) data, or 2D scalar data, which\n will be rendered as a pseudocolor image. Note: For actually displaying\n a grayscale image set up the color mapping using the parameters\n ``cmap='gray', vmin=0, vmax=255``.\n \n Parameters\n ----------\n X : array-like or PIL image\n The image data. Supported array shapes are:\n \n - (M, N): an image with scalar data. The values are mapped to\n colors using normalization and a colormap. See parameters *norm*,\n *cmap*, *vmin*, *vmax*.\n - (M, N, 3): an image with RGB values (0-1 float or 0-255 int).\n - (M, N, 4): an image with RGBA values (0-1 float or 0-255 int),\n i.e. including transparency.\n \n The first two dimensions (M, N) define the rows and columns of\n the image.\n \n Out-of-range RGB(A) values are clipped.\n \n cmap : str or `~matplotlib.colors.Colormap`, optional\n The Colormap instance or registered colormap name used to map\n scalar data to colors. This parameter is ignored for RGB(A) data.\n Defaults to :rc:`image.cmap`.\n \n norm : `~matplotlib.colors.Normalize`, optional\n The `Normalize` instance used to scale scalar data to the [0, 1]\n range before mapping to colors using *cmap*. By default, a linear\n scaling mapping the lowest value to 0 and the highest to 1 is used.\n This parameter is ignored for RGB(A) data.\n \n aspect : {'equal', 'auto'} or float, optional\n Controls the aspect ratio of the axes. The aspect is of particular\n relevance for images since it may distort the image, i.e. pixel\n will not be square.\n \n This parameter is a shortcut for explicitly calling\n `.Axes.set_aspect`. See there for further details.\n \n - 'equal': Ensures an aspect ratio of 1. Pixels will be square\n (unless pixel sizes are explicitly made non-square in data\n coordinates using *extent*).\n - 'auto': The axes is kept fixed and the aspect is adjusted so\n that the data fit in the axes. In general, this will result in\n non-square pixels.\n \n If not given, use :rc:`image.aspect`.\n \n interpolation : str, optional\n The interpolation method used. If *None*, :rc:`image.interpolation`\n is used.\n \n Supported values are 'none', 'antialiased', 'nearest', 'bilinear',\n 'bicubic', 'spline16', 'spline36', 'hanning', 'hamming', 'hermite',\n 'kaiser', 'quadric', 'catrom', 'gaussian', 'bessel', 'mitchell',\n 'sinc', 'lanczos'.\n \n If *interpolation* is 'none', then no interpolation is performed\n on the Agg, ps, pdf and svg backends. Other backends will fall back\n to 'nearest'. Note that most SVG renders perform interpolation at\n rendering and that the default interpolation method they implement\n may differ.\n \n If *interpolation* is the default 'antialiased', then 'nearest'\n interpolation is used if the image is upsampled by more than a\n factor of three (i.e. the number of display pixels is at least\n three times the size of the data array). If the upsampling rate is\n smaller than 3, or the image is downsampled, then 'hanning'\n interpolation is used to act as an anti-aliasing filter, unless the\n image happens to be upsampled by exactly a factor of two or one.\n \n See\n :doc:`/gallery/images_contours_and_fields/interpolation_methods`\n for an overview of the supported interpolation methods, and\n :doc:`/gallery/images_contours_and_fields/image_antialiasing` for\n a discussion of image antialiasing.\n \n Some interpolation methods require an additional radius parameter,\n which can be set by *filterrad*. Additionally, the antigrain image\n resize filter is controlled by the parameter *filternorm*.\n \n alpha : scalar or array-like, optional\n The alpha blending value, between 0 (transparent) and 1 (opaque).\n If *alpha* is an array, the alpha blending values are applied pixel\n by pixel, and *alpha* must have the same shape as *X*.\n \n vmin, vmax : scalar, optional\n When using scalar data and no explicit *norm*, *vmin* and *vmax*\n define the data range that the colormap covers. By default,\n the colormap covers the complete value range of the supplied\n data. *vmin*, *vmax* are ignored if the *norm* parameter is used.\n \n origin : {'upper', 'lower'}, optional\n Place the [0, 0] index of the array in the upper left or lower left\n corner of the axes. The convention 'upper' is typically used for\n matrices and images.\n If not given, :rc:`image.origin` is used, defaulting to 'upper'.\n \n Note that the vertical axes points upward for 'lower'\n but downward for 'upper'.\n \n See the :doc:`/tutorials/intermediate/imshow_extent` tutorial for\n examples and a more detailed description.\n \n extent : scalars (left, right, bottom, top), optional\n The bounding box in data coordinates that the image will fill.\n The image is stretched individually along x and y to fill the box.\n \n The default extent is determined by the following conditions.\n Pixels have unit size in data coordinates. Their centers are on\n integer coordinates, and their center coordinates range from 0 to\n columns-1 horizontally and from 0 to rows-1 vertically.\n \n Note that the direction of the vertical axis and thus the default\n values for top and bottom depend on *origin*:\n \n - For ``origin == 'upper'`` the default is\n ``(-0.5, numcols-0.5, numrows-0.5, -0.5)``.\n - For ``origin == 'lower'`` the default is\n ``(-0.5, numcols-0.5, -0.5, numrows-0.5)``.\n \n See the :doc:`/tutorials/intermediate/imshow_extent` tutorial for\n examples and a more detailed description.\n \n filternorm : bool, optional, default: True\n A parameter for the antigrain image resize filter (see the\n antigrain documentation). If *filternorm* is set, the filter\n normalizes integer values and corrects the rounding errors. It\n doesn't do anything with the source floating point values, it\n corrects only integers according to the rule of 1.0 which means\n that any sum of pixel weights must be equal to 1.0. So, the\n filter function must produce a graph of the proper shape.\n \n filterrad : float > 0, optional, default: 4.0\n The filter radius for filters that have a radius parameter, i.e.\n when interpolation is one of: 'sinc', 'lanczos' or 'blackman'.\n \n resample : bool, optional\n When *True*, use a full resampling method. When *False*, only\n resample when the output image is larger than the input image.\n \n url : str, optional\n Set the url of the created `.AxesImage`. See `.Artist.set_url`.\n \n Returns\n -------\n image : `~matplotlib.image.AxesImage`\n \n Other Parameters\n ----------------\n **kwargs : `~matplotlib.artist.Artist` properties\n These parameters are passed on to the constructor of the\n `.AxesImage` artist.\n \n See also\n --------\n matshow : Plot a matrix or an array as an image.\n \n Notes\n -----\n Unless *extent* is used, pixel centers will be located at integer\n coordinates. In other words: the origin will coincide with the center\n of pixel (0, 0).\n \n There are two common representations for RGB images with an alpha\n channel:\n \n - Straight (unassociated) alpha: R, G, and B channels represent the\n color of the pixel, disregarding its opacity.\n - Premultiplied (associated) alpha: R, G, and B channels represent\n the color of the pixel, adjusted for its opacity by multiplication.\n \n `~matplotlib.pyplot.imshow` expects RGB images adopting the straight\n (unassociated) alpha representation.\n \n .. note::\n In addition to the above described arguments, this function can take a\n **data** keyword argument. If such a **data** argument is given, the\n following arguments are replaced by **data[<arg>]**:\n \n * All positional and all keyword arguments.\n \n Objects passed as **data** must support item access (``data[<arg>]``) and\n membership test (``<arg> in data``).\n \n inferno()\n Set the colormap to \"inferno\".\n \n This changes the default colormap as well as the colormap of the current\n image if there is one. See ``help(colormaps)`` for more information.\n \n install_repl_displayhook()\n Install a repl display hook so that any stale figure are automatically\n redrawn when control is returned to the repl.\n \n This works both with IPython and with vanilla python shells.\n \n ioff()\n Turn the interactive mode off.\n \n ion()\n Turn the interactive mode on.\n \n isinteractive()\n Return whether to redraw after every plotting command.\n \n jet()\n Set the colormap to \"jet\".\n \n This changes the default colormap as well as the colormap of the current\n image if there is one. See ``help(colormaps)`` for more information.\n \n legend(*args, **kwargs)\n Place a legend on the axes.\n \n Call signatures::\n \n legend()\n legend(labels)\n legend(handles, labels)\n \n The call signatures correspond to three different ways how to use\n this method.\n \n **1. Automatic detection of elements to be shown in the legend**\n \n The elements to be added to the legend are automatically determined,\n when you do not pass in any extra arguments.\n \n In this case, the labels are taken from the artist. You can specify\n them either at artist creation or by calling the\n :meth:`~.Artist.set_label` method on the artist::\n \n line, = ax.plot([1, 2, 3], label='Inline label')\n ax.legend()\n \n or::\n \n line, = ax.plot([1, 2, 3])\n line.set_label('Label via method')\n ax.legend()\n \n Specific lines can be excluded from the automatic legend element\n selection by defining a label starting with an underscore.\n This is default for all artists, so calling `Axes.legend` without\n any arguments and without setting the labels manually will result in\n no legend being drawn.\n \n \n **2. Labeling existing plot elements**\n \n To make a legend for lines which already exist on the axes\n (via plot for instance), simply call this function with an iterable\n of strings, one for each legend item. For example::\n \n ax.plot([1, 2, 3])\n ax.legend(['A simple line'])\n \n Note: This way of using is discouraged, because the relation between\n plot elements and labels is only implicit by their order and can\n easily be mixed up.\n \n \n **3. Explicitly defining the elements in the legend**\n \n For full control of which artists have a legend entry, it is possible\n to pass an iterable of legend artists followed by an iterable of\n legend labels respectively::\n \n legend((line1, line2, line3), ('label1', 'label2', 'label3'))\n \n Parameters\n ----------\n handles : sequence of `.Artist`, optional\n A list of Artists (lines, patches) to be added to the legend.\n Use this together with *labels*, if you need full control on what\n is shown in the legend and the automatic mechanism described above\n is not sufficient.\n \n The length of handles and labels should be the same in this\n case. If they are not, they are truncated to the smaller length.\n \n labels : list of str, optional\n A list of labels to show next to the artists.\n Use this together with *handles*, if you need full control on what\n is shown in the legend and the automatic mechanism described above\n is not sufficient.\n \n Other Parameters\n ----------------\n \n loc : str or pair of floats, default: :rc:`legend.loc` ('best' for axes, 'upper right' for figures)\n The location of the legend.\n \n The strings\n ``'upper left', 'upper right', 'lower left', 'lower right'``\n place the legend at the corresponding corner of the axes/figure.\n \n The strings\n ``'upper center', 'lower center', 'center left', 'center right'``\n place the legend at the center of the corresponding edge of the\n axes/figure.\n \n The string ``'center'`` places the legend at the center of the axes/figure.\n \n The string ``'best'`` places the legend at the location, among the nine\n locations defined so far, with the minimum overlap with other drawn\n artists. This option can be quite slow for plots with large amounts of\n data; your plotting speed may benefit from providing a specific location.\n \n The location can also be a 2-tuple giving the coordinates of the lower-left\n corner of the legend in axes coordinates (in which case *bbox_to_anchor*\n will be ignored).\n \n For back-compatibility, ``'center right'`` (but no other location) can also\n be spelled ``'right'``, and each \"string\" locations can also be given as a\n numeric value:\n \n =============== =============\n Location String Location Code\n =============== =============\n 'best' 0\n 'upper right' 1\n 'upper left' 2\n 'lower left' 3\n 'lower right' 4\n 'right' 5\n 'center left' 6\n 'center right' 7\n 'lower center' 8\n 'upper center' 9\n 'center' 10\n =============== =============\n \n bbox_to_anchor : `.BboxBase`, 2-tuple, or 4-tuple of floats\n Box that is used to position the legend in conjunction with *loc*.\n Defaults to `axes.bbox` (if called as a method to `.Axes.legend`) or\n `figure.bbox` (if `.Figure.legend`). This argument allows arbitrary\n placement of the legend.\n \n Bbox coordinates are interpreted in the coordinate system given by\n `bbox_transform`, with the default transform\n Axes or Figure coordinates, depending on which ``legend`` is called.\n \n If a 4-tuple or `.BboxBase` is given, then it specifies the bbox\n ``(x, y, width, height)`` that the legend is placed in.\n To put the legend in the best location in the bottom right\n quadrant of the axes (or figure)::\n \n loc='best', bbox_to_anchor=(0.5, 0., 0.5, 0.5)\n \n A 2-tuple ``(x, y)`` places the corner of the legend specified by *loc* at\n x, y. For example, to put the legend's upper right-hand corner in the\n center of the axes (or figure) the following keywords can be used::\n \n loc='upper right', bbox_to_anchor=(0.5, 0.5)\n \n ncol : integer\n The number of columns that the legend has. Default is 1.\n \n prop : None or :class:`matplotlib.font_manager.FontProperties` or dict\n The font properties of the legend. If None (default), the current\n :data:`matplotlib.rcParams` will be used.\n \n fontsize : int or float or {'xx-small', 'x-small', 'small', 'medium', 'large', 'x-large', 'xx-large'}\n The font size of the legend. If the value is numeric the size will be the\n absolute font size in points. String values are relative to the current\n default font size. This argument is only used if *prop* is not specified.\n \n numpoints : None or int\n The number of marker points in the legend when creating a legend\n entry for a `.Line2D` (line).\n Default is ``None``, which means using :rc:`legend.numpoints`.\n \n scatterpoints : None or int\n The number of marker points in the legend when creating\n a legend entry for a `.PathCollection` (scatter plot).\n Default is ``None``, which means using :rc:`legend.scatterpoints`.\n \n scatteryoffsets : iterable of floats\n The vertical offset (relative to the font size) for the markers\n created for a scatter plot legend entry. 0.0 is at the base the\n legend text, and 1.0 is at the top. To draw all markers at the\n same height, set to ``[0.5]``. Default is ``[0.375, 0.5, 0.3125]``.\n \n markerscale : None or int or float\n The relative size of legend markers compared with the originally\n drawn ones.\n Default is ``None``, which means using :rc:`legend.markerscale`.\n \n markerfirst : bool\n If *True*, legend marker is placed to the left of the legend label.\n If *False*, legend marker is placed to the right of the legend\n label.\n Default is *True*.\n \n frameon : None or bool\n Whether the legend should be drawn on a patch (frame).\n Default is ``None``, which means using :rc:`legend.frameon`.\n \n fancybox : None or bool\n Whether round edges should be enabled around the `~.FancyBboxPatch` which\n makes up the legend's background.\n Default is ``None``, which means using :rc:`legend.fancybox`.\n \n shadow : None or bool\n Whether to draw a shadow behind the legend.\n Default is ``None``, which means using :rc:`legend.shadow`.\n \n framealpha : None or float\n The alpha transparency of the legend's background.\n Default is ``None``, which means using :rc:`legend.framealpha`.\n If *shadow* is activated and *framealpha* is ``None``, the default value is\n ignored.\n \n facecolor : None or \"inherit\" or color\n The legend's background color.\n Default is ``None``, which means using :rc:`legend.facecolor`.\n If ``\"inherit\"``, use :rc:`axes.facecolor`.\n \n edgecolor : None or \"inherit\" or color\n The legend's background patch edge color.\n Default is ``None``, which means using :rc:`legend.edgecolor`.\n If ``\"inherit\"``, use take :rc:`axes.edgecolor`.\n \n mode : {\"expand\", None}\n If *mode* is set to ``\"expand\"`` the legend will be horizontally\n expanded to fill the axes area (or `bbox_to_anchor` if defines\n the legend's size).\n \n bbox_transform : None or :class:`matplotlib.transforms.Transform`\n The transform for the bounding box (`bbox_to_anchor`). For a value\n of ``None`` (default) the Axes'\n :data:`~matplotlib.axes.Axes.transAxes` transform will be used.\n \n title : str or None\n The legend's title. Default is no title (``None``).\n \n title_fontsize: str or None\n The fontsize of the legend's title. Default is the default fontsize.\n \n borderpad : float or None\n The fractional whitespace inside the legend border, in font-size units.\n Default is ``None``, which means using :rc:`legend.borderpad`.\n \n labelspacing : float or None\n The vertical space between the legend entries, in font-size units.\n Default is ``None``, which means using :rc:`legend.labelspacing`.\n \n handlelength : float or None\n The length of the legend handles, in font-size units.\n Default is ``None``, which means using :rc:`legend.handlelength`.\n \n handletextpad : float or None\n The pad between the legend handle and text, in font-size units.\n Default is ``None``, which means using :rc:`legend.handletextpad`.\n \n borderaxespad : float or None\n The pad between the axes and legend border, in font-size units.\n Default is ``None``, which means using :rc:`legend.borderaxespad`.\n \n columnspacing : float or None\n The spacing between columns, in font-size units.\n Default is ``None``, which means using :rc:`legend.columnspacing`.\n \n handler_map : dict or None\n The custom dictionary mapping instances or types to a legend\n handler. This `handler_map` updates the default handler map\n found at :func:`matplotlib.legend.Legend.get_legend_handler_map`.\n \n \n \n Returns\n -------\n legend : `~matplotlib.legend.Legend`\n \n Notes\n -----\n Not all kinds of artist are supported by the legend command. See\n :doc:`/tutorials/intermediate/legend_guide` for details.\n \n Examples\n --------\n .. plot:: gallery/text_labels_and_annotations/legend.py\n \n locator_params(axis='both', tight=None, **kwargs)\n Control behavior of major tick locators.\n \n Because the locator is involved in autoscaling, `~.Axes.autoscale_view`\n is called automatically after the parameters are changed.\n \n Parameters\n ----------\n axis : {'both', 'x', 'y'}, optional\n The axis on which to operate.\n \n tight : bool or None, optional\n Parameter passed to `~.Axes.autoscale_view`.\n Default is None, for no change.\n \n Other Parameters\n ----------------\n **kwargs\n Remaining keyword arguments are passed to directly to the\n ``set_params()`` method of the locator. Supported keywords depend\n on the type of the locator. See for example\n `~.ticker.MaxNLocator.set_params` for the `.ticker.MaxNLocator`\n used by default for linear axes.\n \n Examples\n --------\n When plotting small subplots, one might want to reduce the maximum\n number of ticks and use tight bounds, for example::\n \n ax.locator_params(tight=True, nbins=4)\n \n loglog(*args, **kwargs)\n Make a plot with log scaling on both the x and y axis.\n \n Call signatures::\n \n loglog([x], y, [fmt], data=None, **kwargs)\n loglog([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)\n \n This is just a thin wrapper around `.plot` which additionally changes\n both the x-axis and the y-axis to log scaling. All of the concepts and\n parameters of plot can be used here as well.\n \n The additional parameters *basex/y*, *subsx/y* and *nonposx/y* control\n the x/y-axis properties. They are just forwarded to `.Axes.set_xscale`\n and `.Axes.set_yscale`.\n \n Parameters\n ----------\n basex, basey : scalar, optional, default 10\n Base of the x/y logarithm.\n \n subsx, subsy : sequence, optional\n The location of the minor x/y ticks. If *None*, reasonable\n locations are automatically chosen depending on the number of\n decades in the plot.\n See `.Axes.set_xscale` / `.Axes.set_yscale` for details.\n \n nonposx, nonposy : {'mask', 'clip'}, optional, default 'mask'\n Non-positive values in x or y can be masked as invalid, or clipped\n to a very small positive number.\n \n Returns\n -------\n lines\n A list of `.Line2D` objects representing the plotted data.\n \n Other Parameters\n ----------------\n **kwargs\n All parameters supported by `.plot`.\n \n magma()\n Set the colormap to \"magma\".\n \n This changes the default colormap as well as the colormap of the current\n image if there is one. See ``help(colormaps)`` for more information.\n \n magnitude_spectrum(x, Fs=None, Fc=None, window=None, pad_to=None, sides=None, scale=None, *, data=None, **kwargs)\n Plot the magnitude spectrum.\n \n Compute the magnitude spectrum of *x*. Data is padded to a\n length of *pad_to* and the windowing function *window* is applied to\n the signal.\n \n Parameters\n ----------\n x : 1-D array or sequence\n Array or sequence containing the data.\n \n Fs : scalar\n The sampling frequency (samples per time unit). It is used\n to calculate the Fourier frequencies, freqs, in cycles per time\n unit. The default value is 2.\n \n window : callable or ndarray\n A function or a vector of length *NFFT*. To create window vectors see\n `window_hanning`, `window_none`, `numpy.blackman`, `numpy.hamming`,\n `numpy.bartlett`, `scipy.signal`, `scipy.signal.get_window`, etc. The\n default is `window_hanning`. If a function is passed as the argument,\n it must take a data segment as an argument and return the windowed\n version of the segment.\n \n sides : {'default', 'onesided', 'twosided'}\n Specifies which sides of the spectrum to return. Default gives the\n default behavior, which returns one-sided for real data and both\n for complex data. 'onesided' forces the return of a one-sided\n spectrum, while 'twosided' forces two-sided.\n \n pad_to : int\n The number of points to which the data segment is padded when\n performing the FFT. While not increasing the actual resolution of\n the spectrum (the minimum distance between resolvable peaks),\n this can give more points in the plot, allowing for more\n detail. This corresponds to the *n* parameter in the call to fft().\n The default is None, which sets *pad_to* equal to the length of the\n input signal (i.e. no padding).\n \n scale : {'default', 'linear', 'dB'}\n The scaling of the values in the *spec*. 'linear' is no scaling.\n 'dB' returns the values in dB scale, i.e., the dB amplitude\n (20 * log10). 'default' is 'linear'.\n \n Fc : int\n The center frequency of *x* (defaults to 0), which offsets\n the x extents of the plot to reflect the frequency range used\n when a signal is acquired and then filtered and downsampled to\n baseband.\n \n Returns\n -------\n spectrum : 1-D array\n The values for the magnitude spectrum before scaling (real valued).\n \n freqs : 1-D array\n The frequencies corresponding to the elements in *spectrum*.\n \n line : `~matplotlib.lines.Line2D`\n The line created by this function.\n \n Other Parameters\n ----------------\n **kwargs\n Keyword arguments control the `.Line2D` properties:\n \n Properties:\n agg_filter: a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array\n alpha: float or None\n animated: bool\n antialiased or aa: bool\n clip_box: `.Bbox`\n clip_on: bool\n clip_path: Patch or (Path, Transform) or None\n color or c: color\n contains: callable\n dash_capstyle: {'butt', 'round', 'projecting'}\n dash_joinstyle: {'miter', 'round', 'bevel'}\n dashes: sequence of floats (on/off ink in points) or (None, None)\n data: (2, N) array or two 1D arrays\n drawstyle or ds: {'default', 'steps', 'steps-pre', 'steps-mid', 'steps-post'}, default: 'default'\n figure: `.Figure`\n fillstyle: {'full', 'left', 'right', 'bottom', 'top', 'none'}\n gid: str\n in_layout: bool\n label: object\n linestyle or ls: {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}\n linewidth or lw: float\n marker: marker style\n markeredgecolor or mec: color\n markeredgewidth or mew: float\n markerfacecolor or mfc: color\n markerfacecoloralt or mfcalt: color\n markersize or ms: float\n markevery: None or int or (int, int) or slice or List[int] or float or (float, float)\n path_effects: `.AbstractPathEffect`\n picker: float or callable[[Artist, Event], Tuple[bool, dict]]\n pickradius: float\n rasterized: bool or None\n sketch_params: (scale: float, length: float, randomness: float)\n snap: bool or None\n solid_capstyle: {'butt', 'round', 'projecting'}\n solid_joinstyle: {'miter', 'round', 'bevel'}\n transform: `matplotlib.transforms.Transform`\n url: str\n visible: bool\n xdata: 1D array\n ydata: 1D array\n zorder: float\n \n See Also\n --------\n :func:`psd`\n :func:`psd` plots the power spectral density.`.\n \n :func:`angle_spectrum`\n :func:`angle_spectrum` plots the angles of the corresponding\n frequencies.\n \n :func:`phase_spectrum`\n :func:`phase_spectrum` plots the phase (unwrapped angle) of the\n corresponding frequencies.\n \n :func:`specgram`\n :func:`specgram` can plot the magnitude spectrum of segments within\n the signal in a colormap.\n \n Notes\n -----\n \n \n .. note::\n In addition to the above described arguments, this function can take a\n **data** keyword argument. If such a **data** argument is given, the\n following arguments are replaced by **data[<arg>]**:\n \n * All arguments with the following names: 'x'.\n \n Objects passed as **data** must support item access (``data[<arg>]``) and\n membership test (``<arg> in data``).\n \n margins(*margins, x=None, y=None, tight=True)\n Set or retrieve autoscaling margins.\n \n The padding added to each limit of the axes is the *margin*\n times the data interval. All input parameters must be floats\n within the range [0, 1]. Passing both positional and keyword\n arguments is invalid and will raise a TypeError. If no\n arguments (positional or otherwise) are provided, the current\n margins will remain in place and simply be returned.\n \n Specifying any margin changes only the autoscaling; for example,\n if *xmargin* is not None, then *xmargin* times the X data\n interval will be added to each end of that interval before\n it is used in autoscaling.\n \n Parameters\n ----------\n *margins : float, optional\n If a single positional argument is provided, it specifies\n both margins of the x-axis and y-axis limits. If two\n positional arguments are provided, they will be interpreted\n as *xmargin*, *ymargin*. If setting the margin on a single\n axis is desired, use the keyword arguments described below.\n \n x, y : float, optional\n Specific margin values for the x-axis and y-axis,\n respectively. These cannot be used with positional\n arguments, but can be used individually to alter on e.g.,\n only the y-axis.\n \n tight : bool or None, default is True\n The *tight* parameter is passed to :meth:`autoscale_view`,\n which is executed after a margin is changed; the default\n here is *True*, on the assumption that when margins are\n specified, no additional padding to match tick marks is\n usually desired. Set *tight* to *None* will preserve\n the previous setting.\n \n Returns\n -------\n xmargin, ymargin : float\n \n Notes\n -----\n If a previously used Axes method such as :meth:`pcolor` has set\n :attr:`use_sticky_edges` to `True`, only the limits not set by\n the \"sticky artists\" will be modified. To force all of the\n margins to be set, set :attr:`use_sticky_edges` to `False`\n before calling :meth:`margins`.\n \n matshow(A, fignum=None, **kwargs)\n Display an array as a matrix in a new figure window.\n \n The origin is set at the upper left hand corner and rows (first\n dimension of the array) are displayed horizontally. The aspect\n ratio of the figure window is that of the array, unless this would\n make an excessively short or narrow figure.\n \n Tick labels for the xaxis are placed on top.\n \n Parameters\n ----------\n A : array-like(M, N)\n The matrix to be displayed.\n \n fignum : None or int or False\n If *None*, create a new figure window with automatic numbering.\n \n If a nonzero integer, draw into the figure with the given number\n (create it if it does not exist).\n \n If 0, use the current axes (or create one if it does not exist).\n \n .. note::\n \n Because of how `.Axes.matshow` tries to set the figure aspect\n ratio to be the one of the array, strange things may happen if you\n reuse an existing figure.\n \n Returns\n -------\n image : `~matplotlib.image.AxesImage`\n \n Other Parameters\n ----------------\n **kwargs : `~matplotlib.axes.Axes.imshow` arguments\n \n minorticks_off()\n Remove minor ticks from the axes.\n \n minorticks_on()\n Display minor ticks on the axes.\n \n Displaying minor ticks may reduce performance; you may turn them off\n using `minorticks_off()` if drawing speed is a problem.\n \n nipy_spectral()\n Set the colormap to \"nipy_spectral\".\n \n This changes the default colormap as well as the colormap of the current\n image if there is one. See ``help(colormaps)`` for more information.\n \n pause(interval)\n Pause for *interval* seconds.\n \n If there is an active figure, it will be updated and displayed before the\n pause, and the GUI event loop (if any) will run during the pause.\n \n This can be used for crude animation. For more complex animation, see\n :mod:`matplotlib.animation`.\n \n Notes\n -----\n This function is experimental; its behavior may be changed or extended in a\n future release.\n \n pcolor(*args, alpha=None, norm=None, cmap=None, vmin=None, vmax=None, data=None, **kwargs)\n Create a pseudocolor plot with a non-regular rectangular grid.\n \n Call signature::\n \n pcolor([X, Y,] C, **kwargs)\n \n *X* and *Y* can be used to specify the corners of the quadrilaterals.\n \n .. hint::\n \n ``pcolor()`` can be very slow for large arrays. In most\n cases you should use the similar but much faster\n `~.Axes.pcolormesh` instead. See there for a discussion of the\n differences.\n \n Parameters\n ----------\n C : array-like\n A scalar 2-D array. The values will be color-mapped.\n \n X, Y : array-like, optional\n The coordinates of the quadrilateral corners. The quadrilateral\n for ``C[i, j]`` has corners at::\n \n (X[i+1, j], Y[i+1, j]) (X[i+1, j+1], Y[i+1, j+1])\n +---------+\n | C[i, j] |\n +---------+\n (X[i, j], Y[i, j]) (X[i, j+1], Y[i, j+1])\n \n Note that the column index corresponds to the\n x-coordinate, and the row index corresponds to y. For\n details, see the :ref:`Notes <axes-pcolor-grid-orientation>`\n section below.\n \n The dimensions of *X* and *Y* should be one greater than those of\n *C*. Alternatively, *X*, *Y* and *C* may have equal dimensions, in\n which case the last row and column of *C* will be ignored.\n \n If *X* and/or *Y* are 1-D arrays or column vectors they will be\n expanded as needed into the appropriate 2-D arrays, making a\n rectangular grid.\n \n cmap : str or `~matplotlib.colors.Colormap`, optional\n A Colormap instance or registered colormap name. The colormap\n maps the *C* values to colors. Defaults to :rc:`image.cmap`.\n \n norm : `~matplotlib.colors.Normalize`, optional\n The Normalize instance scales the data values to the canonical\n colormap range [0, 1] for mapping to colors. By default, the data\n range is mapped to the colorbar range using linear scaling.\n \n vmin, vmax : scalar, optional, default: None\n The colorbar range. If *None*, suitable min/max values are\n automatically chosen by the `~.Normalize` instance (defaults to\n the respective min/max values of *C* in case of the default linear\n scaling).\n \n edgecolors : {'none', None, 'face', color, color sequence}, optional\n The color of the edges. Defaults to 'none'. Possible values:\n \n - 'none' or '': No edge.\n - *None*: :rc:`patch.edgecolor` will be used. Note that currently\n :rc:`patch.force_edgecolor` has to be True for this to work.\n - 'face': Use the adjacent face color.\n - A color or sequence of colors will set the edge color.\n \n The singular form *edgecolor* works as an alias.\n \n alpha : scalar, optional, default: None\n The alpha blending value of the face color, between 0 (transparent)\n and 1 (opaque). Note: The edgecolor is currently not affected by\n this.\n \n snap : bool, optional, default: False\n Whether to snap the mesh to pixel boundaries.\n \n Returns\n -------\n collection : `matplotlib.collections.Collection`\n \n Other Parameters\n ----------------\n antialiaseds : bool, optional, default: False\n The default *antialiaseds* is False if the default\n *edgecolors*\\ =\"none\" is used. This eliminates artificial lines\n at patch boundaries, and works regardless of the value of alpha.\n If *edgecolors* is not \"none\", then the default *antialiaseds*\n is taken from :rc:`patch.antialiased`.\n Stroking the edges may be preferred if *alpha* is 1, but will\n cause artifacts otherwise.\n \n **kwargs\n Additionally, the following arguments are allowed. They are passed\n along to the `~matplotlib.collections.PolyCollection` constructor:\n \n Properties:\n agg_filter: a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array\n alpha: float or None\n animated: bool\n antialiased or aa or antialiaseds: bool or sequence of bools\n array: ndarray\n capstyle: {'butt', 'round', 'projecting'}\n clim: (vmin: float, vmax: float)\n clip_box: `.Bbox`\n clip_on: bool\n clip_path: Patch or (Path, Transform) or None\n cmap: colormap or registered colormap name\n color: color or sequence of rgba tuples\n contains: callable\n edgecolor or ec or edgecolors: color or sequence of colors or 'face'\n facecolor or facecolors or fc: color or sequence of colors\n figure: `.Figure`\n gid: str\n hatch: {'/', '\\\\', '|', '-', '+', 'x', 'o', 'O', '.', '*'}\n in_layout: bool\n joinstyle: {'miter', 'round', 'bevel'}\n label: object\n linestyle or dashes or linestyles or ls: {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}\n linewidth or linewidths or lw: float or sequence of floats\n norm: `.Normalize`\n offset_position: {'screen', 'data'}\n offsets: array-like (N, 2) or (2,)\n path_effects: `.AbstractPathEffect`\n picker: None or bool or float or callable\n pickradius: unknown\n rasterized: bool or None\n sketch_params: (scale: float, length: float, randomness: float)\n snap: bool or None\n transform: `.Transform`\n url: str\n urls: List[str] or None\n visible: bool\n zorder: float\n \n See Also\n --------\n pcolormesh : for an explanation of the differences between\n pcolor and pcolormesh.\n imshow : If *X* and *Y* are each equidistant, `~.Axes.imshow` can be a\n faster alternative.\n \n Notes\n -----\n **Masked arrays**\n \n *X*, *Y* and *C* may be masked arrays. If either ``C[i, j]``, or one\n of the vertices surrounding ``C[i, j]`` (*X* or *Y* at\n ``[i, j], [i+1, j], [i, j+1], [i+1, j+1]``) is masked, nothing is\n plotted.\n \n .. _axes-pcolor-grid-orientation:\n \n **Grid orientation**\n \n The grid orientation follows the standard matrix convention: An array\n *C* with shape (nrows, ncolumns) is plotted with the column number as\n *X* and the row number as *Y*.\n \n **Handling of pcolor() end-cases**\n \n ``pcolor()`` displays all columns of *C* if *X* and *Y* are not\n specified, or if *X* and *Y* have one more column than *C*.\n If *X* and *Y* have the same number of columns as *C* then the last\n column of *C* is dropped. Similarly for the rows.\n \n Note: This behavior is different from MATLAB's ``pcolor()``, which\n always discards the last row and column of *C*.\n \n .. note::\n In addition to the above described arguments, this function can take a\n **data** keyword argument. If such a **data** argument is given, the\n following arguments are replaced by **data[<arg>]**:\n \n * All positional and all keyword arguments.\n \n Objects passed as **data** must support item access (``data[<arg>]``) and\n membership test (``<arg> in data``).\n \n pcolormesh(*args, alpha=None, norm=None, cmap=None, vmin=None, vmax=None, shading='flat', antialiased=False, data=None, **kwargs)\n Create a pseudocolor plot with a non-regular rectangular grid.\n \n Call signature::\n \n pcolor([X, Y,] C, **kwargs)\n \n *X* and *Y* can be used to specify the corners of the quadrilaterals.\n \n .. note::\n \n `~Axes.pcolormesh` is similar to `~Axes.pcolor`. It's much faster\n and preferred in most cases. For a detailed discussion on the\n differences see :ref:`Differences between pcolor() and pcolormesh()\n <differences-pcolor-pcolormesh>`.\n \n Parameters\n ----------\n C : array-like\n A scalar 2-D array. The values will be color-mapped.\n \n X, Y : array-like, optional\n The coordinates of the quadrilateral corners. The quadrilateral\n for ``C[i, j]`` has corners at::\n \n (X[i+1, j], Y[i+1, j]) (X[i+1, j+1], Y[i+1, j+1])\n +---------+\n | C[i, j] |\n +---------+\n (X[i, j], Y[i, j]) (X[i, j+1], Y[i, j+1])\n \n Note that the column index corresponds to the\n x-coordinate, and the row index corresponds to y. For\n details, see the :ref:`Notes <axes-pcolormesh-grid-orientation>`\n section below.\n \n The dimensions of *X* and *Y* should be one greater than those of\n *C*. Alternatively, *X*, *Y* and *C* may have equal dimensions, in\n which case the last row and column of *C* will be ignored.\n \n If *X* and/or *Y* are 1-D arrays or column vectors they will be\n expanded as needed into the appropriate 2-D arrays, making a\n rectangular grid.\n \n cmap : str or `~matplotlib.colors.Colormap`, optional\n A Colormap instance or registered colormap name. The colormap\n maps the *C* values to colors. Defaults to :rc:`image.cmap`.\n \n norm : `~matplotlib.colors.Normalize`, optional\n The Normalize instance scales the data values to the canonical\n colormap range [0, 1] for mapping to colors. By default, the data\n range is mapped to the colorbar range using linear scaling.\n \n vmin, vmax : scalar, optional, default: None\n The colorbar range. If *None*, suitable min/max values are\n automatically chosen by the `~.Normalize` instance (defaults to\n the respective min/max values of *C* in case of the default linear\n scaling).\n \n edgecolors : {'none', None, 'face', color, color sequence}, optional\n The color of the edges. Defaults to 'none'. Possible values:\n \n - 'none' or '': No edge.\n - *None*: :rc:`patch.edgecolor` will be used. Note that currently\n :rc:`patch.force_edgecolor` has to be True for this to work.\n - 'face': Use the adjacent face color.\n - A color or sequence of colors will set the edge color.\n \n The singular form *edgecolor* works as an alias.\n \n alpha : scalar, optional, default: None\n The alpha blending value, between 0 (transparent) and 1 (opaque).\n \n shading : {'flat', 'gouraud'}, optional\n The fill style, Possible values:\n \n - 'flat': A solid color is used for each quad. The color of the\n quad (i, j), (i+1, j), (i, j+1), (i+1, j+1) is given by\n ``C[i, j]``.\n - 'gouraud': Each quad will be Gouraud shaded: The color of the\n corners (i', j') are given by ``C[i',j']``. The color values of\n the area in between is interpolated from the corner values.\n When Gouraud shading is used, *edgecolors* is ignored.\n \n snap : bool, optional, default: False\n Whether to snap the mesh to pixel boundaries.\n \n Returns\n -------\n mesh : `matplotlib.collections.QuadMesh`\n \n Other Parameters\n ----------------\n **kwargs\n Additionally, the following arguments are allowed. They are passed\n along to the `~matplotlib.collections.QuadMesh` constructor:\n \n Properties:\n agg_filter: a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array\n alpha: float or None\n animated: bool\n antialiased or aa or antialiaseds: bool or sequence of bools\n array: ndarray\n capstyle: {'butt', 'round', 'projecting'}\n clim: (vmin: float, vmax: float)\n clip_box: `.Bbox`\n clip_on: bool\n clip_path: Patch or (Path, Transform) or None\n cmap: colormap or registered colormap name\n color: color or sequence of rgba tuples\n contains: callable\n edgecolor or ec or edgecolors: color or sequence of colors or 'face'\n facecolor or facecolors or fc: color or sequence of colors\n figure: `.Figure`\n gid: str\n hatch: {'/', '\\\\', '|', '-', '+', 'x', 'o', 'O', '.', '*'}\n in_layout: bool\n joinstyle: {'miter', 'round', 'bevel'}\n label: object\n linestyle or dashes or linestyles or ls: {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}\n linewidth or linewidths or lw: float or sequence of floats\n norm: `.Normalize`\n offset_position: {'screen', 'data'}\n offsets: array-like (N, 2) or (2,)\n path_effects: `.AbstractPathEffect`\n picker: None or bool or float or callable\n pickradius: unknown\n rasterized: bool or None\n sketch_params: (scale: float, length: float, randomness: float)\n snap: bool or None\n transform: `.Transform`\n url: str\n urls: List[str] or None\n visible: bool\n zorder: float\n \n See Also\n --------\n pcolor : An alternative implementation with slightly different\n features. For a detailed discussion on the differences see\n :ref:`Differences between pcolor() and pcolormesh()\n <differences-pcolor-pcolormesh>`.\n imshow : If *X* and *Y* are each equidistant, `~.Axes.imshow` can be a\n faster alternative.\n \n Notes\n -----\n **Masked arrays**\n \n *C* may be a masked array. If ``C[i, j]`` is masked, the corresponding\n quadrilateral will be transparent. Masking of *X* and *Y* is not\n supported. Use `~.Axes.pcolor` if you need this functionality.\n \n .. _axes-pcolormesh-grid-orientation:\n \n **Grid orientation**\n \n The grid orientation follows the standard matrix convention: An array\n *C* with shape (nrows, ncolumns) is plotted with the column number as\n *X* and the row number as *Y*.\n \n .. _differences-pcolor-pcolormesh:\n \n **Differences between pcolor() and pcolormesh()**\n \n Both methods are used to create a pseudocolor plot of a 2-D array\n using quadrilaterals.\n \n The main difference lies in the created object and internal data\n handling:\n While `~.Axes.pcolor` returns a `.PolyCollection`, `~.Axes.pcolormesh`\n returns a `.QuadMesh`. The latter is more specialized for the given\n purpose and thus is faster. It should almost always be preferred.\n \n There is also a slight difference in the handling of masked arrays.\n Both `~.Axes.pcolor` and `~.Axes.pcolormesh` support masked arrays\n for *C*. However, only `~.Axes.pcolor` supports masked arrays for *X*\n and *Y*. The reason lies in the internal handling of the masked values.\n `~.Axes.pcolor` leaves out the respective polygons from the\n PolyCollection. `~.Axes.pcolormesh` sets the facecolor of the masked\n elements to transparent. You can see the difference when using\n edgecolors. While all edges are drawn irrespective of masking in a\n QuadMesh, the edge between two adjacent masked quadrilaterals in\n `~.Axes.pcolor` is not drawn as the corresponding polygons do not\n exist in the PolyCollection.\n \n Another difference is the support of Gouraud shading in\n `~.Axes.pcolormesh`, which is not available with `~.Axes.pcolor`.\n \n .. note::\n In addition to the above described arguments, this function can take a\n **data** keyword argument. If such a **data** argument is given, the\n following arguments are replaced by **data[<arg>]**:\n \n * All positional and all keyword arguments.\n \n Objects passed as **data** must support item access (``data[<arg>]``) and\n membership test (``<arg> in data``).\n \n phase_spectrum(x, Fs=None, Fc=None, window=None, pad_to=None, sides=None, *, data=None, **kwargs)\n Plot the phase spectrum.\n \n Compute the phase spectrum (unwrapped angle spectrum) of *x*.\n Data is padded to a length of *pad_to* and the windowing function\n *window* is applied to the signal.\n \n Parameters\n ----------\n x : 1-D array or sequence\n Array or sequence containing the data\n \n Fs : scalar\n The sampling frequency (samples per time unit). It is used\n to calculate the Fourier frequencies, freqs, in cycles per time\n unit. The default value is 2.\n \n window : callable or ndarray\n A function or a vector of length *NFFT*. To create window vectors see\n `window_hanning`, `window_none`, `numpy.blackman`, `numpy.hamming`,\n `numpy.bartlett`, `scipy.signal`, `scipy.signal.get_window`, etc. The\n default is `window_hanning`. If a function is passed as the argument,\n it must take a data segment as an argument and return the windowed\n version of the segment.\n \n sides : {'default', 'onesided', 'twosided'}\n Specifies which sides of the spectrum to return. Default gives the\n default behavior, which returns one-sided for real data and both\n for complex data. 'onesided' forces the return of a one-sided\n spectrum, while 'twosided' forces two-sided.\n \n pad_to : int\n The number of points to which the data segment is padded when\n performing the FFT. While not increasing the actual resolution of\n the spectrum (the minimum distance between resolvable peaks),\n this can give more points in the plot, allowing for more\n detail. This corresponds to the *n* parameter in the call to fft().\n The default is None, which sets *pad_to* equal to the length of the\n input signal (i.e. no padding).\n \n Fc : int\n The center frequency of *x* (defaults to 0), which offsets\n the x extents of the plot to reflect the frequency range used\n when a signal is acquired and then filtered and downsampled to\n baseband.\n \n Returns\n -------\n spectrum : 1-D array\n The values for the phase spectrum in radians (real valued).\n \n freqs : 1-D array\n The frequencies corresponding to the elements in *spectrum*.\n \n line : `~matplotlib.lines.Line2D`\n The line created by this function.\n \n Other Parameters\n ----------------\n **kwargs\n Keyword arguments control the `.Line2D` properties:\n \n Properties:\n agg_filter: a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array\n alpha: float or None\n animated: bool\n antialiased or aa: bool\n clip_box: `.Bbox`\n clip_on: bool\n clip_path: Patch or (Path, Transform) or None\n color or c: color\n contains: callable\n dash_capstyle: {'butt', 'round', 'projecting'}\n dash_joinstyle: {'miter', 'round', 'bevel'}\n dashes: sequence of floats (on/off ink in points) or (None, None)\n data: (2, N) array or two 1D arrays\n drawstyle or ds: {'default', 'steps', 'steps-pre', 'steps-mid', 'steps-post'}, default: 'default'\n figure: `.Figure`\n fillstyle: {'full', 'left', 'right', 'bottom', 'top', 'none'}\n gid: str\n in_layout: bool\n label: object\n linestyle or ls: {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}\n linewidth or lw: float\n marker: marker style\n markeredgecolor or mec: color\n markeredgewidth or mew: float\n markerfacecolor or mfc: color\n markerfacecoloralt or mfcalt: color\n markersize or ms: float\n markevery: None or int or (int, int) or slice or List[int] or float or (float, float)\n path_effects: `.AbstractPathEffect`\n picker: float or callable[[Artist, Event], Tuple[bool, dict]]\n pickradius: float\n rasterized: bool or None\n sketch_params: (scale: float, length: float, randomness: float)\n snap: bool or None\n solid_capstyle: {'butt', 'round', 'projecting'}\n solid_joinstyle: {'miter', 'round', 'bevel'}\n transform: `matplotlib.transforms.Transform`\n url: str\n visible: bool\n xdata: 1D array\n ydata: 1D array\n zorder: float\n \n See Also\n --------\n :func:`magnitude_spectrum`\n :func:`magnitude_spectrum` plots the magnitudes of the\n corresponding frequencies.\n \n :func:`angle_spectrum`\n :func:`angle_spectrum` plots the wrapped version of this function.\n \n :func:`specgram`\n :func:`specgram` can plot the phase spectrum of segments within the\n signal in a colormap.\n \n Notes\n -----\n \n \n .. note::\n In addition to the above described arguments, this function can take a\n **data** keyword argument. If such a **data** argument is given, the\n following arguments are replaced by **data[<arg>]**:\n \n * All arguments with the following names: 'x'.\n \n Objects passed as **data** must support item access (``data[<arg>]``) and\n membership test (``<arg> in data``).\n \n pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None, radius=None, counterclock=True, wedgeprops=None, textprops=None, center=(0, 0), frame=False, rotatelabels=False, *, data=None)\n Plot a pie chart.\n \n Make a pie chart of array *x*. The fractional area of each wedge is\n given by ``x/sum(x)``. If ``sum(x) < 1``, then the values of *x* give\n the fractional area directly and the array will not be normalized. The\n resulting pie will have an empty wedge of size ``1 - sum(x)``.\n \n The wedges are plotted counterclockwise, by default starting from the\n x-axis.\n \n Parameters\n ----------\n x : array-like\n The wedge sizes.\n \n explode : array-like, optional, default: None\n If not *None*, is a ``len(x)`` array which specifies the fraction\n of the radius with which to offset each wedge.\n \n labels : list, optional, default: None\n A sequence of strings providing the labels for each wedge\n \n colors : array-like, optional, default: None\n A sequence of matplotlib color args through which the pie chart\n will cycle. If *None*, will use the colors in the currently\n active cycle.\n \n autopct : None (default), str, or function, optional\n If not *None*, is a string or function used to label the wedges\n with their numeric value. The label will be placed inside the\n wedge. If it is a format string, the label will be ``fmt%pct``.\n If it is a function, it will be called.\n \n pctdistance : float, optional, default: 0.6\n The ratio between the center of each pie slice and the start of\n the text generated by *autopct*. Ignored if *autopct* is *None*.\n \n shadow : bool, optional, default: False\n Draw a shadow beneath the pie.\n \n labeldistance : float or None, optional, default: 1.1\n The radial distance at which the pie labels are drawn.\n If set to ``None``, label are not drawn, but are stored for use in\n ``legend()``\n \n startangle : float, optional, default: None\n If not *None*, rotates the start of the pie chart by *angle*\n degrees counterclockwise from the x-axis.\n \n radius : float, optional, default: None\n The radius of the pie, if *radius* is *None* it will be set to 1.\n \n counterclock : bool, optional, default: True\n Specify fractions direction, clockwise or counterclockwise.\n \n wedgeprops : dict, optional, default: None\n Dict of arguments passed to the wedge objects making the pie.\n For example, you can pass in ``wedgeprops = {'linewidth': 3}``\n to set the width of the wedge border lines equal to 3.\n For more details, look at the doc/arguments of the wedge object.\n By default ``clip_on=False``.\n \n textprops : dict, optional, default: None\n Dict of arguments to pass to the text objects.\n \n center : list of float, optional, default: (0, 0)\n Center position of the chart. Takes value (0, 0) or is a sequence\n of 2 scalars.\n \n frame : bool, optional, default: False\n Plot axes frame with the chart if true.\n \n rotatelabels : bool, optional, default: False\n Rotate each label to the angle of the corresponding slice if true.\n \n Returns\n -------\n patches : list\n A sequence of :class:`matplotlib.patches.Wedge` instances\n \n texts : list\n A list of the label :class:`matplotlib.text.Text` instances.\n \n autotexts : list\n A list of :class:`~matplotlib.text.Text` instances for the numeric\n labels. This will only be returned if the parameter *autopct* is\n not *None*.\n \n Notes\n -----\n The pie chart will probably look best if the figure and axes are\n square, or the Axes aspect is equal.\n This method sets the aspect ratio of the axis to \"equal\".\n The axes aspect ratio can be controlled with `Axes.set_aspect`.\n \n .. note::\n In addition to the above described arguments, this function can take a\n **data** keyword argument. If such a **data** argument is given, the\n following arguments are replaced by **data[<arg>]**:\n \n * All arguments with the following names: 'colors', 'explode', 'labels', 'x'.\n \n Objects passed as **data** must support item access (``data[<arg>]``) and\n membership test (``<arg> in data``).\n \n pink()\n Set the colormap to \"pink\".\n \n This changes the default colormap as well as the colormap of the current\n image if there is one. See ``help(colormaps)`` for more information.\n \n plasma()\n Set the colormap to \"plasma\".\n \n This changes the default colormap as well as the colormap of the current\n image if there is one. See ``help(colormaps)`` for more information.\n \n plot(*args, scalex=True, scaley=True, data=None, **kwargs)\n Plot y versus x as lines and/or markers.\n \n Call signatures::\n \n plot([x], y, [fmt], *, data=None, **kwargs)\n plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)\n \n The coordinates of the points or line nodes are given by *x*, *y*.\n \n The optional parameter *fmt* is a convenient way for defining basic\n formatting like color, marker and linestyle. It's a shortcut string\n notation described in the *Notes* section below.\n \n >>> plot(x, y) # plot x and y using default line style and color\n >>> plot(x, y, 'bo') # plot x and y using blue circle markers\n >>> plot(y) # plot y using x as index array 0..N-1\n >>> plot(y, 'r+') # ditto, but with red plusses\n \n You can use `.Line2D` properties as keyword arguments for more\n control on the appearance. Line properties and *fmt* can be mixed.\n The following two calls yield identical results:\n \n >>> plot(x, y, 'go--', linewidth=2, markersize=12)\n >>> plot(x, y, color='green', marker='o', linestyle='dashed',\n ... linewidth=2, markersize=12)\n \n When conflicting with *fmt*, keyword arguments take precedence.\n \n \n **Plotting labelled data**\n \n There's a convenient way for plotting objects with labelled data (i.e.\n data that can be accessed by index ``obj['y']``). Instead of giving\n the data in *x* and *y*, you can provide the object in the *data*\n parameter and just give the labels for *x* and *y*::\n \n >>> plot('xlabel', 'ylabel', data=obj)\n \n All indexable objects are supported. This could e.g. be a `dict`, a\n `pandas.DataFame` or a structured numpy array.\n \n \n **Plotting multiple sets of data**\n \n There are various ways to plot multiple sets of data.\n \n - The most straight forward way is just to call `plot` multiple times.\n Example:\n \n >>> plot(x1, y1, 'bo')\n >>> plot(x2, y2, 'go')\n \n - Alternatively, if your data is already a 2d array, you can pass it\n directly to *x*, *y*. A separate data set will be drawn for every\n column.\n \n Example: an array ``a`` where the first column represents the *x*\n values and the other columns are the *y* columns::\n \n >>> plot(a[0], a[1:])\n \n - The third way is to specify multiple sets of *[x]*, *y*, *[fmt]*\n groups::\n \n >>> plot(x1, y1, 'g^', x2, y2, 'g-')\n \n In this case, any additional keyword argument applies to all\n datasets. Also this syntax cannot be combined with the *data*\n parameter.\n \n By default, each line is assigned a different style specified by a\n 'style cycle'. The *fmt* and line property parameters are only\n necessary if you want explicit deviations from these defaults.\n Alternatively, you can also change the style cycle using\n :rc:`axes.prop_cycle`.\n \n \n Parameters\n ----------\n x, y : array-like or scalar\n The horizontal / vertical coordinates of the data points.\n *x* values are optional and default to `range(len(y))`.\n \n Commonly, these parameters are 1D arrays.\n \n They can also be scalars, or two-dimensional (in that case, the\n columns represent separate data sets).\n \n These arguments cannot be passed as keywords.\n \n fmt : str, optional\n A format string, e.g. 'ro' for red circles. See the *Notes*\n section for a full description of the format strings.\n \n Format strings are just an abbreviation for quickly setting\n basic line properties. All of these and more can also be\n controlled by keyword arguments.\n \n This argument cannot be passed as keyword.\n \n data : indexable object, optional\n An object with labelled data. If given, provide the label names to\n plot in *x* and *y*.\n \n .. note::\n Technically there's a slight ambiguity in calls where the\n second label is a valid *fmt*. `plot('n', 'o', data=obj)`\n could be `plt(x, y)` or `plt(y, fmt)`. In such cases,\n the former interpretation is chosen, but a warning is issued.\n You may suppress the warning by adding an empty format string\n `plot('n', 'o', '', data=obj)`.\n \n Other Parameters\n ----------------\n scalex, scaley : bool, optional, default: True\n These parameters determined if the view limits are adapted to\n the data limits. The values are passed on to `autoscale_view`.\n \n **kwargs : `.Line2D` properties, optional\n *kwargs* are used to specify properties like a line label (for\n auto legends), linewidth, antialiasing, marker face color.\n Example::\n \n >>> plot([1, 2, 3], [1, 2, 3], 'go-', label='line 1', linewidth=2)\n >>> plot([1, 2, 3], [1, 4, 9], 'rs', label='line 2')\n \n If you make multiple lines with one plot command, the kwargs\n apply to all those lines.\n \n Here is a list of available `.Line2D` properties:\n \n Properties:\n agg_filter: a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array\n alpha: float or None\n animated: bool\n antialiased or aa: bool\n clip_box: `.Bbox`\n clip_on: bool\n clip_path: Patch or (Path, Transform) or None\n color or c: color\n contains: callable\n dash_capstyle: {'butt', 'round', 'projecting'}\n dash_joinstyle: {'miter', 'round', 'bevel'}\n dashes: sequence of floats (on/off ink in points) or (None, None)\n data: (2, N) array or two 1D arrays\n drawstyle or ds: {'default', 'steps', 'steps-pre', 'steps-mid', 'steps-post'}, default: 'default'\n figure: `.Figure`\n fillstyle: {'full', 'left', 'right', 'bottom', 'top', 'none'}\n gid: str\n in_layout: bool\n label: object\n linestyle or ls: {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}\n linewidth or lw: float\n marker: marker style\n markeredgecolor or mec: color\n markeredgewidth or mew: float\n markerfacecolor or mfc: color\n markerfacecoloralt or mfcalt: color\n markersize or ms: float\n markevery: None or int or (int, int) or slice or List[int] or float or (float, float)\n path_effects: `.AbstractPathEffect`\n picker: float or callable[[Artist, Event], Tuple[bool, dict]]\n pickradius: float\n rasterized: bool or None\n sketch_params: (scale: float, length: float, randomness: float)\n snap: bool or None\n solid_capstyle: {'butt', 'round', 'projecting'}\n solid_joinstyle: {'miter', 'round', 'bevel'}\n transform: `matplotlib.transforms.Transform`\n url: str\n visible: bool\n xdata: 1D array\n ydata: 1D array\n zorder: float\n \n Returns\n -------\n lines\n A list of `.Line2D` objects representing the plotted data.\n \n See Also\n --------\n scatter : XY scatter plot with markers of varying size and/or color (\n sometimes also called bubble chart).\n \n Notes\n -----\n **Format Strings**\n \n A format string consists of a part for color, marker and line::\n \n fmt = '[marker][line][color]'\n \n Each of them is optional. If not provided, the value from the style\n cycle is used. Exception: If ``line`` is given, but no ``marker``,\n the data will be a line without markers.\n \n Other combinations such as ``[color][marker][line]`` are also\n supported, but note that their parsing may be ambiguous.\n \n **Markers**\n \n ============= ===============================\n character description\n ============= ===============================\n ``'.'`` point marker\n ``','`` pixel marker\n ``'o'`` circle marker\n ``'v'`` triangle_down marker\n ``'^'`` triangle_up marker\n ``'<'`` triangle_left marker\n ``'>'`` triangle_right marker\n ``'1'`` tri_down marker\n ``'2'`` tri_up marker\n ``'3'`` tri_left marker\n ``'4'`` tri_right marker\n ``'s'`` square marker\n ``'p'`` pentagon marker\n ``'*'`` star marker\n ``'h'`` hexagon1 marker\n ``'H'`` hexagon2 marker\n ``'+'`` plus marker\n ``'x'`` x marker\n ``'D'`` diamond marker\n ``'d'`` thin_diamond marker\n ``'|'`` vline marker\n ``'_'`` hline marker\n ============= ===============================\n \n **Line Styles**\n \n ============= ===============================\n character description\n ============= ===============================\n ``'-'`` solid line style\n ``'--'`` dashed line style\n ``'-.'`` dash-dot line style\n ``':'`` dotted line style\n ============= ===============================\n \n Example format strings::\n \n 'b' # blue markers with default shape\n 'or' # red circles\n '-g' # green solid line\n '--' # dashed line with default color\n '^k:' # black triangle_up markers connected by a dotted line\n \n **Colors**\n \n The supported color abbreviations are the single letter codes\n \n ============= ===============================\n character color\n ============= ===============================\n ``'b'`` blue\n ``'g'`` green\n ``'r'`` red\n ``'c'`` cyan\n ``'m'`` magenta\n ``'y'`` yellow\n ``'k'`` black\n ``'w'`` white\n ============= ===============================\n \n and the ``'CN'`` colors that index into the default property cycle.\n \n If the color is the only part of the format string, you can\n additionally use any `matplotlib.colors` spec, e.g. full names\n (``'green'``) or hex strings (``'#008000'``).\n \n plot_date(x, y, fmt='o', tz=None, xdate=True, ydate=False, *, data=None, **kwargs)\n Plot data that contains dates.\n \n Similar to `.plot`, this plots *y* vs. *x* as lines or markers.\n However, the axis labels are formatted as dates depending on *xdate*\n and *ydate*.\n \n Parameters\n ----------\n x, y : array-like\n The coordinates of the data points. If *xdate* or *ydate* is\n *True*, the respective values *x* or *y* are interpreted as\n :ref:`Matplotlib dates <date-format>`.\n \n fmt : str, optional\n The plot format string. For details, see the corresponding\n parameter in `.plot`.\n \n tz : timezone string or `tzinfo` or None\n The time zone to use in labeling dates. If *None*, defaults to\n :rc:`timezone`.\n \n xdate : bool, optional, default: True\n If *True*, the *x*-axis will be interpreted as Matplotlib dates.\n \n ydate : bool, optional, default: False\n If *True*, the *y*-axis will be interpreted as Matplotlib dates.\n \n \n Returns\n -------\n lines\n A list of `.Line2D` objects representing the plotted data.\n \n \n Other Parameters\n ----------------\n **kwargs\n Keyword arguments control the `.Line2D` properties:\n \n Properties:\n agg_filter: a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array\n alpha: float or None\n animated: bool\n antialiased or aa: bool\n clip_box: `.Bbox`\n clip_on: bool\n clip_path: Patch or (Path, Transform) or None\n color or c: color\n contains: callable\n dash_capstyle: {'butt', 'round', 'projecting'}\n dash_joinstyle: {'miter', 'round', 'bevel'}\n dashes: sequence of floats (on/off ink in points) or (None, None)\n data: (2, N) array or two 1D arrays\n drawstyle or ds: {'default', 'steps', 'steps-pre', 'steps-mid', 'steps-post'}, default: 'default'\n figure: `.Figure`\n fillstyle: {'full', 'left', 'right', 'bottom', 'top', 'none'}\n gid: str\n in_layout: bool\n label: object\n linestyle or ls: {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}\n linewidth or lw: float\n marker: marker style\n markeredgecolor or mec: color\n markeredgewidth or mew: float\n markerfacecolor or mfc: color\n markerfacecoloralt or mfcalt: color\n markersize or ms: float\n markevery: None or int or (int, int) or slice or List[int] or float or (float, float)\n path_effects: `.AbstractPathEffect`\n picker: float or callable[[Artist, Event], Tuple[bool, dict]]\n pickradius: float\n rasterized: bool or None\n sketch_params: (scale: float, length: float, randomness: float)\n snap: bool or None\n solid_capstyle: {'butt', 'round', 'projecting'}\n solid_joinstyle: {'miter', 'round', 'bevel'}\n transform: `matplotlib.transforms.Transform`\n url: str\n visible: bool\n xdata: 1D array\n ydata: 1D array\n zorder: float\n \n See Also\n --------\n matplotlib.dates : Helper functions on dates.\n matplotlib.dates.date2num : Convert dates to num.\n matplotlib.dates.num2date : Convert num to dates.\n matplotlib.dates.drange : Create an equally spaced sequence of dates.\n \n Notes\n -----\n If you are using custom date tickers and formatters, it may be\n necessary to set the formatters/locators after the call to\n `.plot_date`. `.plot_date` will set the default tick locator to\n `.AutoDateLocator` (if the tick locator is not already set to a\n `.DateLocator` instance) and the default tick formatter to\n `.AutoDateFormatter` (if the tick formatter is not already set to a\n `.DateFormatter` instance).\n \n .. note::\n In addition to the above described arguments, this function can take a\n **data** keyword argument. If such a **data** argument is given, the\n following arguments are replaced by **data[<arg>]**:\n \n * All arguments with the following names: 'x', 'y'.\n \n Objects passed as **data** must support item access (``data[<arg>]``) and\n membership test (``<arg> in data``).\n \n plotfile(fname, cols=(0,), plotfuncs=None, comments='#', skiprows=0, checkrows=5, delimiter=',', names=None, subplots=True, newfig=True, **kwargs)\n [*Deprecated*] Plot the data in a file.\n \n *cols* is a sequence of column identifiers to plot. An identifier\n is either an int or a string. If it is an int, it indicates the\n column number. If it is a string, it indicates the column header.\n matplotlib will make column headers lower case, replace spaces with\n underscores, and remove all illegal characters; so ``'Adj Close*'``\n will have name ``'adj_close'``.\n \n - If len(*cols*) == 1, only that column will be plotted on the *y* axis.\n \n - If len(*cols*) > 1, the first element will be an identifier for\n data for the *x* axis and the remaining elements will be the\n column indexes for multiple subplots if *subplots* is *True*\n (the default), or for lines in a single subplot if *subplots*\n is *False*.\n \n *plotfuncs*, if not *None*, is a dictionary mapping identifier to\n an :class:`~matplotlib.axes.Axes` plotting function as a string.\n Default is 'plot', other choices are 'semilogy', 'fill', 'bar',\n etc. You must use the same type of identifier in the *cols*\n vector as you use in the *plotfuncs* dictionary, e.g., integer\n column numbers in both or column names in both. If *subplots*\n is *False*, then including any function such as 'semilogy'\n that changes the axis scaling will set the scaling for all\n columns.\n \n - *comments*: the character used to indicate the start of a comment\n in the file, or *None* to switch off the removal of comments\n \n - *skiprows*: is the number of rows from the top to skip\n \n - *checkrows*: is the number of rows to check to validate the column\n data type. When set to zero all rows are validated.\n \n - *delimiter*: is the character(s) separating row items\n \n - *names*: if not None, is a list of header names. In this case, no\n header will be read from the file\n \n If *newfig* is *True*, the plot always will be made in a new figure;\n if *False*, it will be made in the current figure if one exists,\n else in a new figure.\n \n kwargs are passed on to plotting functions.\n \n Example usage::\n \n # plot the 2nd and 4th column against the 1st in two subplots\n plotfile(fname, (0, 1, 3))\n \n # plot using column names; specify an alternate plot type for volume\n plotfile(fname, ('date', 'volume', 'adj_close'),\n plotfuncs={'volume': 'semilogy'})\n \n Note: plotfile is intended as a convenience for quickly plotting\n data from flat files; it is not intended as an alternative\n interface to general plotting with pyplot or matplotlib.\n \n Notes\n -----\n .. deprecated:: 3.1\n \n plotting()\n ============================ =============================================================================================================================\n Function Description \n ============================ =============================================================================================================================\n `acorr` Plot the autocorrelation of *x*. \n `angle_spectrum` Plot the angle spectrum. \n `annotate` Annotate the point *xy* with text *text*. \n `arrow` Add an arrow to the axes. \n `autoscale` Autoscale the axis view to the data (toggle). \n `axes` Add an axes to the current figure and make it the current axes. \n `axhline` Add a horizontal line across the axis. \n `axhspan` Add a horizontal span (rectangle) across the axis. \n `axis` Convenience method to get or set some axis properties. \n `axvline` Add a vertical line across the axes. \n `axvspan` Add a vertical span (rectangle) across the axes. \n `bar` Make a bar plot. \n `barbs` Plot a 2D field of barbs. \n `barh` Make a horizontal bar plot. \n `box` Turn the axes box on or off on the current axes. \n `boxplot` Make a box and whisker plot. \n `broken_barh` Plot a horizontal sequence of rectangles. \n `cla` Clear the current axes. \n `clabel` Label a contour plot. \n `clf` Clear the current figure. \n `clim` Set the color limits of the current image. \n `close` Close a figure window. \n `cohere` Plot the coherence between *x* and *y*. \n `colorbar` Add a colorbar to a plot. \n `contour` Plot contours. \n `contourf` Plot contours. \n `csd` Plot the cross-spectral density. \n `delaxes` Remove the `Axes` *ax* (defaulting to the current axes) from its figure. \n `draw` Redraw the current figure. \n `errorbar` Plot y versus x as lines and/or markers with attached errorbars. \n `eventplot` Plot identical parallel lines at the given positions. \n `figimage` Add a non-resampled image to the figure. \n `figlegend` Place a legend on the figure. \n `fignum_exists` Return whether the figure with the given id exists. \n `figtext` Add text to figure. \n `figure` Create a new figure. \n `fill` Plot filled polygons. \n `fill_between` Fill the area between two horizontal curves. \n `fill_betweenx` Fill the area between two vertical curves. \n `findobj` Find artist objects. \n `gca` Get the current :class:`~matplotlib.axes.Axes` instance on the current figure matching the given keyword args, or create one.\n `gcf` Get the current figure. \n `gci` Get the current colorable artist. \n `get_figlabels` Return a list of existing figure labels. \n `get_fignums` Return a list of existing figure numbers. \n `grid` Configure the grid lines. \n `hexbin` Make a 2D hexagonal binning plot of points *x*, *y*. \n `hist` Plot a histogram. \n `hist2d` Make a 2D histogram plot. \n `hlines` Plot horizontal lines at each *y* from *xmin* to *xmax*. \n `imread` Read an image from a file into an array. \n `imsave` Save an array as an image file. \n `imshow` Display data as an image; i.e. \n `install_repl_displayhook` Install a repl display hook so that any stale figure are automatically redrawn when control is returned to the repl. \n `ioff` Turn the interactive mode off. \n `ion` Turn the interactive mode on. \n `isinteractive` Return whether to redraw after every plotting command. \n `legend` Place a legend on the axes. \n `locator_params` Control behavior of major tick locators. \n `loglog` Make a plot with log scaling on both the x and y axis. \n `magnitude_spectrum` Plot the magnitude spectrum. \n `margins` Set or retrieve autoscaling margins. \n `matshow` Display an array as a matrix in a new figure window. \n `minorticks_off` Remove minor ticks from the axes. \n `minorticks_on` Display minor ticks on the axes. \n `pause` Pause for *interval* seconds. \n `pcolor` Create a pseudocolor plot with a non-regular rectangular grid. \n `pcolormesh` Create a pseudocolor plot with a non-regular rectangular grid. \n `phase_spectrum` Plot the phase spectrum. \n `pie` Plot a pie chart. \n `plot` Plot y versus x as lines and/or markers. \n `plot_date` Plot data that contains dates. \n `plotfile` [*Deprecated*] Plot the data in a file. \n `polar` Make a polar plot. \n `psd` Plot the power spectral density. \n `quiver` Plot a 2D field of arrows. \n `quiverkey` Add a key to a quiver plot. \n `rc` Set the current rc params. \n `rc_context` Return a context manager for managing rc settings. \n `rcdefaults` Restore the rc params from Matplotlib's internal default style. \n `rgrids` Get or set the radial gridlines on the current polar plot. \n `savefig` Save the current figure. \n `sca` Set the current Axes instance to *ax*. \n `scatter` A scatter plot of *y* vs. \n `sci` Set the current image. \n `semilogx` Make a plot with log scaling on the x axis. \n `semilogy` Make a plot with log scaling on the y axis. \n `set_cmap` Set the default colormap, and applies it to the current image if any. \n `setp` Set a property on an artist object. \n `show` Display all figures. \n `specgram` Plot a spectrogram. \n `spy` Plot the sparsity pattern of a 2D array. \n `stackplot` Draw a stacked area plot. \n `stem` Create a stem plot. \n `step` Make a step plot. \n `streamplot` Draw streamlines of a vector flow. \n `subplot` Add a subplot to the current figure. \n `subplot2grid` Create an axis at specific location inside a regular grid. \n `subplot_tool` Launch a subplot tool window for a figure. \n `subplots` Create a figure and a set of subplots. \n `subplots_adjust` Tune the subplot layout. \n `suptitle` Add a centered title to the figure. \n `switch_backend` Close all open figures and set the Matplotlib backend. \n `table` Add a table to an `~.axes.Axes`. \n `text` Add text to the axes. \n `thetagrids` Get or set the theta gridlines on the current polar plot. \n `tick_params` Change the appearance of ticks, tick labels, and gridlines. \n `ticklabel_format` Change the `~matplotlib.ticker.ScalarFormatter` used by default for linear axes. \n `tight_layout` Automatically adjust subplot parameters to give specified padding. \n `title` Set a title for the axes. \n `tricontour` Draw contours on an unstructured triangular grid. \n `tricontourf` Draw contours on an unstructured triangular grid. \n `tripcolor` Create a pseudocolor plot of an unstructured triangular grid. \n `triplot` Draw a unstructured triangular grid as lines and/or markers. \n `twinx` Make and return a second axes that shares the *x*-axis. \n `twiny` Make and return a second axes that shares the *y*-axis. \n `uninstall_repl_displayhook` Uninstall the matplotlib display hook. \n `violinplot` Make a violin plot. \n `vlines` Plot vertical lines. \n `xcorr` Plot the cross correlation between *x* and *y*. \n `xkcd` Turn on `xkcd <https://xkcd.com/>`_ sketch-style drawing mode. \n `xlabel` Set the label for the x-axis. \n `xlim` Get or set the x limits of the current axes. \n `xscale` Set the x-axis scale. \n `xticks` Get or set the current tick locations and labels of the x-axis. \n `ylabel` Set the label for the y-axis. \n `ylim` Get or set the y-limits of the current axes. \n `yscale` Set the y-axis scale. \n `yticks` Get or set the current tick locations and labels of the y-axis. \n ============================ =============================================================================================================================\n \n polar(*args, **kwargs)\n Make a polar plot.\n \n call signature::\n \n polar(theta, r, **kwargs)\n \n Multiple *theta*, *r* arguments are supported, with format strings, as in\n `plot`.\n \n prism()\n Set the colormap to \"prism\".\n \n This changes the default colormap as well as the colormap of the current\n image if there is one. See ``help(colormaps)`` for more information.\n \n psd(x, NFFT=None, Fs=None, Fc=None, detrend=None, window=None, noverlap=None, pad_to=None, sides=None, scale_by_freq=None, return_line=None, *, data=None, **kwargs)\n Plot the power spectral density.\n \n The power spectral density :math:`P_{xx}` by Welch's average\n periodogram method. The vector *x* is divided into *NFFT* length\n segments. Each segment is detrended by function *detrend* and\n windowed by function *window*. *noverlap* gives the length of\n the overlap between segments. The :math:`|\\mathrm{fft}(i)|^2`\n of each segment :math:`i` are averaged to compute :math:`P_{xx}`,\n with a scaling to correct for power loss due to windowing.\n \n If len(*x*) < *NFFT*, it will be zero padded to *NFFT*.\n \n Parameters\n ----------\n x : 1-D array or sequence\n Array or sequence containing the data\n \n Fs : scalar\n The sampling frequency (samples per time unit). It is used\n to calculate the Fourier frequencies, freqs, in cycles per time\n unit. The default value is 2.\n \n window : callable or ndarray\n A function or a vector of length *NFFT*. To create window vectors see\n `window_hanning`, `window_none`, `numpy.blackman`, `numpy.hamming`,\n `numpy.bartlett`, `scipy.signal`, `scipy.signal.get_window`, etc. The\n default is `window_hanning`. If a function is passed as the argument,\n it must take a data segment as an argument and return the windowed\n version of the segment.\n \n sides : {'default', 'onesided', 'twosided'}\n Specifies which sides of the spectrum to return. Default gives the\n default behavior, which returns one-sided for real data and both\n for complex data. 'onesided' forces the return of a one-sided\n spectrum, while 'twosided' forces two-sided.\n \n pad_to : int\n The number of points to which the data segment is padded when\n performing the FFT. This can be different from *NFFT*, which\n specifies the number of data points used. While not increasing\n the actual resolution of the spectrum (the minimum distance between\n resolvable peaks), this can give more points in the plot,\n allowing for more detail. This corresponds to the *n* parameter\n in the call to fft(). The default is None, which sets *pad_to*\n equal to *NFFT*\n \n NFFT : int\n The number of data points used in each block for the FFT.\n A power 2 is most efficient. The default value is 256.\n This should *NOT* be used to get zero padding, or the scaling of the\n result will be incorrect. Use *pad_to* for this instead.\n \n detrend : {'none', 'mean', 'linear'} or callable, default 'none'\n The function applied to each segment before fft-ing, designed to\n remove the mean or linear trend. Unlike in MATLAB, where the\n *detrend* parameter is a vector, in Matplotlib is it a function.\n The :mod:`~matplotlib.mlab` module defines `.detrend_none`,\n `.detrend_mean`, and `.detrend_linear`, but you can use a custom\n function as well. You can also use a string to choose one of the\n functions: 'none' calls `.detrend_none`. 'mean' calls `.detrend_mean`.\n 'linear' calls `.detrend_linear`.\n \n scale_by_freq : bool, optional\n Specifies whether the resulting density values should be scaled\n by the scaling frequency, which gives density in units of Hz^-1.\n This allows for integration over the returned frequency values.\n The default is True for MATLAB compatibility.\n \n noverlap : int\n The number of points of overlap between segments.\n The default value is 0 (no overlap).\n \n Fc : int\n The center frequency of *x* (defaults to 0), which offsets\n the x extents of the plot to reflect the frequency range used\n when a signal is acquired and then filtered and downsampled to\n baseband.\n \n return_line : bool\n Whether to include the line object plotted in the returned values.\n Default is False.\n \n Returns\n -------\n Pxx : 1-D array\n The values for the power spectrum `P_{xx}` before scaling\n (real valued).\n \n freqs : 1-D array\n The frequencies corresponding to the elements in *Pxx*.\n \n line : `~matplotlib.lines.Line2D`\n The line created by this function.\n Only returned if *return_line* is True.\n \n Other Parameters\n ----------------\n **kwargs\n Keyword arguments control the `.Line2D` properties:\n \n Properties:\n agg_filter: a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array\n alpha: float or None\n animated: bool\n antialiased or aa: bool\n clip_box: `.Bbox`\n clip_on: bool\n clip_path: Patch or (Path, Transform) or None\n color or c: color\n contains: callable\n dash_capstyle: {'butt', 'round', 'projecting'}\n dash_joinstyle: {'miter', 'round', 'bevel'}\n dashes: sequence of floats (on/off ink in points) or (None, None)\n data: (2, N) array or two 1D arrays\n drawstyle or ds: {'default', 'steps', 'steps-pre', 'steps-mid', 'steps-post'}, default: 'default'\n figure: `.Figure`\n fillstyle: {'full', 'left', 'right', 'bottom', 'top', 'none'}\n gid: str\n in_layout: bool\n label: object\n linestyle or ls: {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}\n linewidth or lw: float\n marker: marker style\n markeredgecolor or mec: color\n markeredgewidth or mew: float\n markerfacecolor or mfc: color\n markerfacecoloralt or mfcalt: color\n markersize or ms: float\n markevery: None or int or (int, int) or slice or List[int] or float or (float, float)\n path_effects: `.AbstractPathEffect`\n picker: float or callable[[Artist, Event], Tuple[bool, dict]]\n pickradius: float\n rasterized: bool or None\n sketch_params: (scale: float, length: float, randomness: float)\n snap: bool or None\n solid_capstyle: {'butt', 'round', 'projecting'}\n solid_joinstyle: {'miter', 'round', 'bevel'}\n transform: `matplotlib.transforms.Transform`\n url: str\n visible: bool\n xdata: 1D array\n ydata: 1D array\n zorder: float\n \n See Also\n --------\n :func:`specgram`\n :func:`specgram` differs in the default overlap; in not returning\n the mean of the segment periodograms; in returning the times of the\n segments; and in plotting a colormap instead of a line.\n \n :func:`magnitude_spectrum`\n :func:`magnitude_spectrum` plots the magnitude spectrum.\n \n :func:`csd`\n :func:`csd` plots the spectral density between two signals.\n \n Notes\n -----\n For plotting, the power is plotted as\n :math:`10\\log_{10}(P_{xx})` for decibels, though *Pxx* itself\n is returned.\n \n References\n ----------\n Bendat & Piersol -- Random Data: Analysis and Measurement Procedures,\n John Wiley & Sons (1986)\n \n .. note::\n In addition to the above described arguments, this function can take a\n **data** keyword argument. If such a **data** argument is given, the\n following arguments are replaced by **data[<arg>]**:\n \n * All arguments with the following names: 'x'.\n \n Objects passed as **data** must support item access (``data[<arg>]``) and\n membership test (``<arg> in data``).\n \n quiver(*args, data=None, **kw)\n Plot a 2D field of arrows.\n \n Call signature::\n \n quiver([X, Y], U, V, [C], **kw)\n \n Where *X*, *Y* define the arrow locations, *U*, *V* define the arrow\n directions, and *C* optionally sets the color.\n \n **Arrow size**\n \n The default settings auto-scales the length of the arrows to a reasonable size.\n To change this behavior see the *scale* and *scale_units* parameters.\n \n **Arrow shape**\n \n The defaults give a slightly swept-back arrow; to make the head a\n triangle, make *headaxislength* the same as *headlength*. To make the\n arrow more pointed, reduce *headwidth* or increase *headlength* and\n *headaxislength*. To make the head smaller relative to the shaft,\n scale down all the head parameters. You will probably do best to leave\n minshaft alone.\n \n **Arrow outline**\n \n *linewidths* and *edgecolors* can be used to customize the arrow\n outlines.\n \n Parameters\n ----------\n X, Y : 1D or 2D array-like, optional\n The x and y coordinates of the arrow locations.\n \n If not given, they will be generated as a uniform integer meshgrid based\n on the dimensions of *U* and *V*.\n \n If *X* and *Y* are 1D but *U*, *V* are 2D, *X*, *Y* are expanded to 2D\n using ``X, Y = np.meshgrid(X, Y)``. In this case ``len(X)`` and ``len(Y)``\n must match the column and row dimensions of *U* and *V*.\n \n U, V : 1D or 2D array-like\n The x and y direction components of the arrow vectors.\n \n They must have the same number of elements, matching the number of arrow\n locations. *U* and *V* may be masked. Only locations unmasked in\n *U*, *V*, and *C* will be drawn.\n \n C : 1D or 2D array-like, optional\n Numeric data that defines the arrow colors by colormapping via *norm* and\n *cmap*.\n \n This does not support explicit colors. If you want to set colors directly,\n use *color* instead. The size of *C* must match the number of arrow\n locations.\n \n units : {'width', 'height', 'dots', 'inches', 'x', 'y' 'xy'}, default: 'width'\n The arrow dimensions (except for *length*) are measured in multiples of\n this unit.\n \n The following values are supported:\n \n - 'width', 'height': The width or height of the axis.\n - 'dots', 'inches': Pixels or inches based on the figure dpi.\n - 'x', 'y', 'xy': *X*, *Y* or :math:`\\sqrt{X^2 + Y^2}` in data units.\n \n The arrows scale differently depending on the units. For\n 'x' or 'y', the arrows get larger as one zooms in; for other\n units, the arrow size is independent of the zoom state. For\n 'width or 'height', the arrow size increases with the width and\n height of the axes, respectively, when the window is resized;\n for 'dots' or 'inches', resizing does not change the arrows.\n \n angles : {'uv', 'xy'} or array-like, optional, default: 'uv'\n Method for determining the angle of the arrows.\n \n - 'uv': The arrow axis aspect ratio is 1 so that\n if *U* == *V* the orientation of the arrow on the plot is 45 degrees\n counter-clockwise from the horizontal axis (positive to the right).\n \n Use this if the arrows symbolize a quantity that is not based on\n *X*, *Y* data coordinates.\n \n - 'xy': Arrows point from (x, y) to (x+u, y+v).\n Use this for plotting a gradient field, for example.\n \n - Alternatively, arbitrary angles may be specified explicitly as an array\n of values in degrees, counter-clockwise from the horizontal axis.\n \n In this case *U*, *V* is only used to determine the length of the\n arrows.\n \n Note: inverting a data axis will correspondingly invert the\n arrows only with ``angles='xy'``.\n \n scale : float, optional\n Number of data units per arrow length unit, e.g., m/s per plot width; a\n smaller scale parameter makes the arrow longer. Default is *None*.\n \n If *None*, a simple autoscaling algorithm is used, based on the average\n vector length and the number of vectors. The arrow length unit is given by\n the *scale_units* parameter.\n \n scale_units : {'width', 'height', 'dots', 'inches', 'x', 'y', 'xy'}, optional\n If the *scale* kwarg is *None*, the arrow length unit. Default is *None*.\n \n e.g. *scale_units* is 'inches', *scale* is 2.0, and ``(u, v) = (1, 0)``,\n then the vector will be 0.5 inches long.\n \n If *scale_units* is 'width' or 'height', then the vector will be half the\n width/height of the axes.\n \n If *scale_units* is 'x' then the vector will be 0.5 x-axis\n units. To plot vectors in the x-y plane, with u and v having\n the same units as x and y, use\n ``angles='xy', scale_units='xy', scale=1``.\n \n width : float, optional\n Shaft width in arrow units; default depends on choice of units,\n above, and number of vectors; a typical starting value is about\n 0.005 times the width of the plot.\n \n headwidth : float, optional, default: 3\n Head width as multiple of shaft width.\n \n headlength : float, optional, default: 5\n Head length as multiple of shaft width.\n \n headaxislength : float, optional, default: 4.5\n Head length at shaft intersection.\n \n minshaft : float, optional, default: 1\n Length below which arrow scales, in units of head length. Do not\n set this to less than 1, or small arrows will look terrible!\n \n minlength : float, optional, default: 1\n Minimum length as a multiple of shaft width; if an arrow length\n is less than this, plot a dot (hexagon) of this diameter instead.\n \n pivot : {'tail', 'mid', 'middle', 'tip'}, optional, default: 'tail'\n The part of the arrow that is anchored to the *X*, *Y* grid. The arrow\n rotates about this point.\n \n 'mid' is a synonym for 'middle'.\n \n color : color or color sequence, optional\n Explicit color(s) for the arrows. If *C* has been set, *color* has no\n effect.\n \n This is a synonym for the `~.PolyCollection` *facecolor* parameter.\n \n Other Parameters\n ----------------\n **kwargs : `~matplotlib.collections.PolyCollection` properties, optional\n All other keyword arguments are passed on to `.PolyCollection`:\n \n Properties:\n agg_filter: a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array\n alpha: float or None\n animated: bool\n antialiased or aa or antialiaseds: bool or sequence of bools\n array: ndarray\n capstyle: {'butt', 'round', 'projecting'}\n clim: (vmin: float, vmax: float)\n clip_box: `.Bbox`\n clip_on: bool\n clip_path: Patch or (Path, Transform) or None\n cmap: colormap or registered colormap name\n color: color or sequence of rgba tuples\n contains: callable\n edgecolor or ec or edgecolors: color or sequence of colors or 'face'\n facecolor or facecolors or fc: color or sequence of colors\n figure: `.Figure`\n gid: str\n hatch: {'/', '\\\\', '|', '-', '+', 'x', 'o', 'O', '.', '*'}\n in_layout: bool\n joinstyle: {'miter', 'round', 'bevel'}\n label: object\n linestyle or dashes or linestyles or ls: {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}\n linewidth or linewidths or lw: float or sequence of floats\n norm: `.Normalize`\n offset_position: {'screen', 'data'}\n offsets: array-like (N, 2) or (2,)\n path_effects: `.AbstractPathEffect`\n picker: None or bool or float or callable\n pickradius: unknown\n rasterized: bool or None\n sketch_params: (scale: float, length: float, randomness: float)\n snap: bool or None\n transform: `.Transform`\n url: str\n urls: List[str] or None\n visible: bool\n zorder: float\n \n See Also\n --------\n quiverkey : Add a key to a quiver plot.\n \n quiverkey(Q, X, Y, U, label, **kw)\n Add a key to a quiver plot.\n \n The positioning of the key depends on *X*, *Y*, *coordinates*, and\n *labelpos*. If *labelpos* is 'N' or 'S', *X*, *Y* give the position of\n the middle of the key arrow. If *labelpos* is 'E', *X*, *Y* positions\n the head, and if *labelpos* is 'W', *X*, *Y* positions the tail; in\n either of these two cases, *X*, *Y* is somewhere in the middle of the\n arrow+label key object.\n \n Parameters\n ----------\n Q : `matplotlib.quiver.Quiver`\n A `.Quiver` object as returned by a call to `~.Axes.quiver()`.\n X, Y : float\n The location of the key.\n U : float\n The length of the key.\n label : str\n The key label (e.g., length and units of the key).\n angle : float, default: 0\n The angle of the key arrow, in degrees anti-clockwise from the\n x-axis.\n coordinates : {'axes', 'figure', 'data', 'inches'}, default: 'axes'\n Coordinate system and units for *X*, *Y*: 'axes' and 'figure' are\n normalized coordinate systems with (0, 0) in the lower left and\n (1, 1) in the upper right; 'data' are the axes data coordinates\n (used for the locations of the vectors in the quiver plot itself);\n 'inches' is position in the figure in inches, with (0, 0) at the\n lower left corner.\n color : color\n Overrides face and edge colors from *Q*.\n labelpos : {'N', 'S', 'E', 'W'}\n Position the label above, below, to the right, to the left of the\n arrow, respectively.\n labelsep : float, default: 0.1\n Distance in inches between the arrow and the label.\n labelcolor : color, default: :rc:`text.color`\n Label color.\n fontproperties : dict, optional\n A dictionary with keyword arguments accepted by the\n `~matplotlib.font_manager.FontProperties` initializer:\n *family*, *style*, *variant*, *size*, *weight*.\n **kwargs\n Any additional keyword arguments are used to override vector\n properties taken from *Q*.\n \n rc(group, **kwargs)\n Set the current rc params. *group* is the grouping for the rc, e.g.,\n for ``lines.linewidth`` the group is ``lines``, for\n ``axes.facecolor``, the group is ``axes``, and so on. Group may\n also be a list or tuple of group names, e.g., (*xtick*, *ytick*).\n *kwargs* is a dictionary attribute name/value pairs, e.g.,::\n \n rc('lines', linewidth=2, color='r')\n \n sets the current rc params and is equivalent to::\n \n rcParams['lines.linewidth'] = 2\n rcParams['lines.color'] = 'r'\n \n The following aliases are available to save typing for interactive users:\n \n ===== =================\n Alias Property\n ===== =================\n 'lw' 'linewidth'\n 'ls' 'linestyle'\n 'c' 'color'\n 'fc' 'facecolor'\n 'ec' 'edgecolor'\n 'mew' 'markeredgewidth'\n 'aa' 'antialiased'\n ===== =================\n \n Thus you could abbreviate the above rc command as::\n \n rc('lines', lw=2, c='r')\n \n Note you can use python's kwargs dictionary facility to store\n dictionaries of default parameters. e.g., you can customize the\n font rc as follows::\n \n font = {'family' : 'monospace',\n 'weight' : 'bold',\n 'size' : 'larger'}\n rc('font', **font) # pass in the font dict as kwargs\n \n This enables you to easily switch between several configurations. Use\n ``matplotlib.style.use('default')`` or :func:`~matplotlib.rcdefaults` to\n restore the default rc params after changes.\n \n Notes\n -----\n Similar functionality is available by using the normal dict interface, i.e.\n ``rcParams.update({\"lines.linewidth\": 2, ...})`` (but ``rcParams.update``\n does not support abbreviations or grouping).\n \n rc_context(rc=None, fname=None)\n Return a context manager for managing rc settings.\n \n This allows one to do::\n \n with mpl.rc_context(fname='screen.rc'):\n plt.plot(x, a) # uses 'screen.rc'\n with mpl.rc_context(fname='print.rc'):\n plt.plot(x, b) # uses 'print.rc'\n plt.plot(x, c) # uses 'screen.rc'\n \n A dictionary can also be passed to the context manager::\n \n with mpl.rc_context(rc={'text.usetex': True}, fname='screen.rc'):\n plt.plot(x, a)\n \n The 'rc' dictionary takes precedence over the settings loaded from\n 'fname'. Passing a dictionary only is also valid. For example a\n common usage is::\n \n with mpl.rc_context(rc={'interactive': False}):\n fig, ax = plt.subplots()\n ax.plot(range(3), range(3))\n fig.savefig('A.png', format='png')\n plt.close(fig)\n \n rcdefaults()\n Restore the rc params from Matplotlib's internal default style.\n \n Style-blacklisted rc params (defined in\n `matplotlib.style.core.STYLE_BLACKLIST`) are not updated.\n \n See Also\n --------\n rc_file_defaults\n Restore the rc params from the rc file originally loaded by Matplotlib.\n matplotlib.style.use :\n Use a specific style file. Call ``style.use('default')`` to restore\n the default style.\n \n rgrids(*args, **kwargs)\n Get or set the radial gridlines on the current polar plot.\n \n Call signatures::\n \n lines, labels = rgrids()\n lines, labels = rgrids(radii, labels=None, angle=22.5, fmt=None, **kwargs)\n \n When called with no arguments, `.rgrids` simply returns the tuple\n (*lines*, *labels*). When called with arguments, the labels will\n appear at the specified radial distances and angle.\n \n Parameters\n ----------\n radii : tuple with floats\n The radii for the radial gridlines\n \n labels : tuple with strings or None\n The labels to use at each radial gridline. The\n `matplotlib.ticker.ScalarFormatter` will be used if None.\n \n angle : float\n The angular position of the radius labels in degrees.\n \n fmt : str or None\n Format string used in `matplotlib.ticker.FormatStrFormatter`.\n For example '%f'.\n \n Returns\n -------\n lines, labels : list of `.lines.Line2D`, list of `.text.Text`\n *lines* are the radial gridlines and *labels* are the tick labels.\n \n Other Parameters\n ----------------\n **kwargs\n *kwargs* are optional `~.Text` properties for the labels.\n \n Examples\n --------\n ::\n \n # set the locations of the radial gridlines\n lines, labels = rgrids( (0.25, 0.5, 1.0) )\n \n # set the locations and labels of the radial gridlines\n lines, labels = rgrids( (0.25, 0.5, 1.0), ('Tom', 'Dick', 'Harry' ))\n \n See Also\n --------\n .pyplot.thetagrids\n .projections.polar.PolarAxes.set_rgrids\n .Axis.get_gridlines\n .Axis.get_ticklabels\n \n savefig(*args, **kwargs)\n Save the current figure.\n \n Call signature::\n \n savefig(fname, dpi=None, facecolor='w', edgecolor='w',\n orientation='portrait', papertype=None, format=None,\n transparent=False, bbox_inches=None, pad_inches=0.1,\n frameon=None, metadata=None)\n \n The output formats available depend on the backend being used.\n \n Parameters\n ----------\n fname : str or PathLike or file-like object\n A path, or a Python file-like object, or\n possibly some backend-dependent object such as\n `matplotlib.backends.backend_pdf.PdfPages`.\n \n If *format* is not set, then the output format is inferred from\n the extension of *fname*, if any, and from :rc:`savefig.format`\n otherwise. If *format* is set, it determines the output format.\n \n Hence, if *fname* is not a path or has no extension, remember to\n specify *format* to ensure that the correct backend is used.\n \n Other Parameters\n ----------------\n dpi : [ *None* | scalar > 0 | 'figure' ]\n The resolution in dots per inch. If *None*, defaults to\n :rc:`savefig.dpi`. If 'figure', uses the figure's dpi value.\n \n quality : [ *None* | 1 <= scalar <= 100 ]\n The image quality, on a scale from 1 (worst) to 95 (best).\n Applicable only if *format* is jpg or jpeg, ignored otherwise.\n If *None*, defaults to :rc:`savefig.jpeg_quality`.\n Values above 95 should be avoided; 100 completely disables the\n JPEG quantization stage.\n \n optimize : bool\n If *True*, indicates that the JPEG encoder should make an extra\n pass over the image in order to select optimal encoder settings.\n Applicable only if *format* is jpg or jpeg, ignored otherwise.\n Is *False* by default.\n \n progressive : bool\n If *True*, indicates that this image should be stored as a\n progressive JPEG file. Applicable only if *format* is jpg or\n jpeg, ignored otherwise. Is *False* by default.\n \n facecolor : color or None, optional\n The facecolor of the figure; if *None*, defaults to\n :rc:`savefig.facecolor`.\n \n edgecolor : color or None, optional\n The edgecolor of the figure; if *None*, defaults to\n :rc:`savefig.edgecolor`\n \n orientation : {'landscape', 'portrait'}\n Currently only supported by the postscript backend.\n \n papertype : str\n One of 'letter', 'legal', 'executive', 'ledger', 'a0' through\n 'a10', 'b0' through 'b10'. Only supported for postscript\n output.\n \n format : str\n The file format, e.g. 'png', 'pdf', 'svg', ... The behavior when\n this is unset is documented under *fname*.\n \n transparent : bool\n If *True*, the axes patches will all be transparent; the\n figure patch will also be transparent unless facecolor\n and/or edgecolor are specified via kwargs.\n This is useful, for example, for displaying\n a plot on top of a colored background on a web page. The\n transparency of these patches will be restored to their\n original values upon exit of this function.\n \n bbox_inches : str or `~matplotlib.transforms.Bbox`, optional\n Bbox in inches. Only the given portion of the figure is\n saved. If 'tight', try to figure out the tight bbox of\n the figure. If None, use savefig.bbox\n \n pad_inches : scalar, optional\n Amount of padding around the figure when bbox_inches is\n 'tight'. If None, use savefig.pad_inches\n \n bbox_extra_artists : list of `~matplotlib.artist.Artist`, optional\n A list of extra artists that will be considered when the\n tight bbox is calculated.\n \n metadata : dict, optional\n Key/value pairs to store in the image metadata. The supported keys\n and defaults depend on the image format and backend:\n \n - 'png' with Agg backend: See the parameter ``metadata`` of\n `~.FigureCanvasAgg.print_png`.\n - 'pdf' with pdf backend: See the parameter ``metadata`` of\n `~.backend_pdf.PdfPages`.\n - 'eps' and 'ps' with PS backend: Only 'Creator' is supported.\n \n pil_kwargs : dict, optional\n Additional keyword arguments that are passed to `PIL.Image.save`\n when saving the figure. Only applicable for formats that are saved\n using Pillow, i.e. JPEG, TIFF, and (if the keyword is set to a\n non-None value) PNG.\n \n sca(ax)\n Set the current Axes instance to *ax*.\n \n The current Figure is updated to the parent of *ax*.\n \n scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=<deprecated parameter>, edgecolors=None, *, plotnonfinite=False, data=None, **kwargs)\n A scatter plot of *y* vs. *x* with varying marker size and/or color.\n \n Parameters\n ----------\n x, y : scalar or array-like, shape (n, )\n The data positions.\n \n s : scalar or array-like, shape (n, ), optional\n The marker size in points**2.\n Default is ``rcParams['lines.markersize'] ** 2``.\n \n c : array-like or list of colors or color, optional\n The marker colors. Possible values:\n \n - A scalar or sequence of n numbers to be mapped to colors using\n *cmap* and *norm*.\n - A 2-D array in which the rows are RGB or RGBA.\n - A sequence of colors of length n.\n - A single color format string.\n \n Note that *c* should not be a single numeric RGB or RGBA sequence\n because that is indistinguishable from an array of values to be\n colormapped. If you want to specify the same RGB or RGBA value for\n all points, use a 2-D array with a single row. Otherwise, value-\n matching will have precedence in case of a size matching with *x*\n and *y*.\n \n If you wish to specify a single color for all points\n prefer the *color* keyword argument.\n \n Defaults to `None`. In that case the marker color is determined\n by the value of *color*, *facecolor* or *facecolors*. In case\n those are not specified or `None`, the marker color is determined\n by the next color of the ``Axes``' current \"shape and fill\" color\n cycle. This cycle defaults to :rc:`axes.prop_cycle`.\n \n marker : `~matplotlib.markers.MarkerStyle`, optional\n The marker style. *marker* can be either an instance of the class\n or the text shorthand for a particular marker.\n Defaults to ``None``, in which case it takes the value of\n :rc:`scatter.marker` = 'o'.\n See `~matplotlib.markers` for more information about marker styles.\n \n cmap : `~matplotlib.colors.Colormap`, optional, default: None\n A `.Colormap` instance or registered colormap name. *cmap* is only\n used if *c* is an array of floats. If ``None``, defaults to rc\n ``image.cmap``.\n \n norm : `~matplotlib.colors.Normalize`, optional, default: None\n A `.Normalize` instance is used to scale luminance data to 0, 1.\n *norm* is only used if *c* is an array of floats. If *None*, use\n the default `.colors.Normalize`.\n \n vmin, vmax : scalar, optional, default: None\n *vmin* and *vmax* are used in conjunction with *norm* to normalize\n luminance data. If None, the respective min and max of the color\n array is used. *vmin* and *vmax* are ignored if you pass a *norm*\n instance.\n \n alpha : scalar, optional, default: None\n The alpha blending value, between 0 (transparent) and 1 (opaque).\n \n linewidths : scalar or array-like, optional, default: None\n The linewidth of the marker edges. Note: The default *edgecolors*\n is 'face'. You may want to change this as well.\n If *None*, defaults to :rc:`lines.linewidth`.\n \n edgecolors : {'face', 'none', *None*} or color or sequence of color, optional.\n The edge color of the marker. Possible values:\n \n - 'face': The edge color will always be the same as the face color.\n - 'none': No patch boundary will be drawn.\n - A Matplotlib color or sequence of color.\n \n Defaults to ``None``, in which case it takes the value of\n :rc:`scatter.edgecolors` = 'face'.\n \n For non-filled markers, the *edgecolors* kwarg is ignored and\n forced to 'face' internally.\n \n plotnonfinite : boolean, optional, default: False\n Set to plot points with nonfinite *c*, in conjunction with\n `~matplotlib.colors.Colormap.set_bad`.\n \n Returns\n -------\n paths : `~matplotlib.collections.PathCollection`\n \n Other Parameters\n ----------------\n **kwargs : `~matplotlib.collections.Collection` properties\n \n See Also\n --------\n plot : To plot scatter plots when markers are identical in size and\n color.\n \n Notes\n -----\n * The `.plot` function will be faster for scatterplots where markers\n don't vary in size or color.\n \n * Any or all of *x*, *y*, *s*, and *c* may be masked arrays, in which\n case all masks will be combined and only unmasked points will be\n plotted.\n \n * Fundamentally, scatter works with 1-D arrays; *x*, *y*, *s*, and *c*\n may be input as N-D arrays, but within scatter they will be\n flattened. The exception is *c*, which will be flattened only if its\n size matches the size of *x* and *y*.\n \n .. note::\n In addition to the above described arguments, this function can take a\n **data** keyword argument. If such a **data** argument is given, the\n following arguments are replaced by **data[<arg>]**:\n \n * All arguments with the following names: 'c', 'color', 'edgecolors', 'facecolor', 'facecolors', 'linewidths', 's', 'x', 'y'.\n \n Objects passed as **data** must support item access (``data[<arg>]``) and\n membership test (``<arg> in data``).\n \n sci(im)\n Set the current image.\n \n This image will be the target of colormap functions like\n `~.pyplot.viridis`, and other functions such as `~.pyplot.clim`. The\n current image is an attribute of the current axes.\n \n semilogx(*args, **kwargs)\n Make a plot with log scaling on the x axis.\n \n Call signatures::\n \n semilogx([x], y, [fmt], data=None, **kwargs)\n semilogx([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)\n \n This is just a thin wrapper around `.plot` which additionally changes\n the x-axis to log scaling. All of the concepts and parameters of plot\n can be used here as well.\n \n The additional parameters *basex*, *subsx* and *nonposx* control the\n x-axis properties. They are just forwarded to `.Axes.set_xscale`.\n \n Parameters\n ----------\n basex : scalar, optional, default 10\n Base of the x logarithm.\n \n subsx : array-like, optional\n The location of the minor xticks. If *None*, reasonable locations\n are automatically chosen depending on the number of decades in the\n plot. See `.Axes.set_xscale` for details.\n \n nonposx : {'mask', 'clip'}, optional, default 'mask'\n Non-positive values in x can be masked as invalid, or clipped to a\n very small positive number.\n \n Returns\n -------\n lines\n A list of `.Line2D` objects representing the plotted data.\n \n Other Parameters\n ----------------\n **kwargs\n All parameters supported by `.plot`.\n \n semilogy(*args, **kwargs)\n Make a plot with log scaling on the y axis.\n \n Call signatures::\n \n semilogy([x], y, [fmt], data=None, **kwargs)\n semilogy([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)\n \n This is just a thin wrapper around `.plot` which additionally changes\n the y-axis to log scaling. All of the concepts and parameters of plot\n can be used here as well.\n \n The additional parameters *basey*, *subsy* and *nonposy* control the\n y-axis properties. They are just forwarded to `.Axes.set_yscale`.\n \n Parameters\n ----------\n basey : scalar, optional, default 10\n Base of the y logarithm.\n \n subsy : array-like, optional\n The location of the minor yticks. If *None*, reasonable locations\n are automatically chosen depending on the number of decades in the\n plot. See `.Axes.set_yscale` for details.\n \n nonposy : {'mask', 'clip'}, optional, default 'mask'\n Non-positive values in y can be masked as invalid, or clipped to a\n very small positive number.\n \n Returns\n -------\n lines\n A list of `.Line2D` objects representing the plotted data.\n \n Other Parameters\n ----------------\n **kwargs\n All parameters supported by `.plot`.\n \n set_cmap(cmap)\n Set the default colormap, and applies it to the current image if any.\n \n Parameters\n ----------\n cmap : `~matplotib.colors.Colormap` or str\n A colormap instance or the name of a registered colormap.\n \n See Also\n --------\n colormaps\n matplotlib.cm.register_cmap\n matplotlib.cm.get_cmap\n \n setp(obj, *args, **kwargs)\n Set a property on an artist object.\n \n matplotlib supports the use of :func:`setp` (\"set property\") and\n :func:`getp` to set and get object properties, as well as to do\n introspection on the object. For example, to set the linestyle of a\n line to be dashed, you can do::\n \n >>> line, = plot([1, 2, 3])\n >>> setp(line, linestyle='--')\n \n If you want to know the valid types of arguments, you can provide\n the name of the property you want to set without a value::\n \n >>> setp(line, 'linestyle')\n linestyle: {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}\n \n If you want to see all the properties that can be set, and their\n possible values, you can do::\n \n >>> setp(line)\n ... long output listing omitted\n \n You may specify another output file to `setp` if `sys.stdout` is not\n acceptable for some reason using the *file* keyword-only argument::\n \n >>> with fopen('output.log') as f:\n >>> setp(line, file=f)\n \n :func:`setp` operates on a single instance or a iterable of\n instances. If you are in query mode introspecting the possible\n values, only the first instance in the sequence is used. When\n actually setting values, all the instances will be set. e.g.,\n suppose you have a list of two lines, the following will make both\n lines thicker and red::\n \n >>> x = arange(0, 1, 0.01)\n >>> y1 = sin(2*pi*x)\n >>> y2 = sin(4*pi*x)\n >>> lines = plot(x, y1, x, y2)\n >>> setp(lines, linewidth=2, color='r')\n \n :func:`setp` works with the MATLAB style string/value pairs or\n with python kwargs. For example, the following are equivalent::\n \n >>> setp(lines, 'linewidth', 2, 'color', 'r') # MATLAB style\n >>> setp(lines, linewidth=2, color='r') # python style\n \n show(*args, **kw)\n Display all figures.\n \n When running in ipython with its pylab mode, display all\n figures and return to the ipython prompt.\n \n In non-interactive mode, display all figures and block until\n the figures have been closed; in interactive mode it has no\n effect unless figures were created prior to a change from\n non-interactive to interactive mode (not recommended). In\n that case it displays the figures but does not block.\n \n Parameters\n ----------\n block : bool, optional\n This is experimental, and may be set to ``True`` or ``False`` to\n override the blocking behavior described above.\n \n specgram(x, NFFT=None, Fs=None, Fc=None, detrend=None, window=None, noverlap=None, cmap=None, xextent=None, pad_to=None, sides=None, scale_by_freq=None, mode=None, scale=None, vmin=None, vmax=None, *, data=None, **kwargs)\n Plot a spectrogram.\n \n Compute and plot a spectrogram of data in *x*. Data are split into\n *NFFT* length segments and the spectrum of each section is\n computed. The windowing function *window* is applied to each\n segment, and the amount of overlap of each segment is\n specified with *noverlap*. The spectrogram is plotted as a colormap\n (using imshow).\n \n Parameters\n ----------\n x : 1-D array or sequence\n Array or sequence containing the data.\n \n Fs : scalar\n The sampling frequency (samples per time unit). It is used\n to calculate the Fourier frequencies, freqs, in cycles per time\n unit. The default value is 2.\n \n window : callable or ndarray\n A function or a vector of length *NFFT*. To create window vectors see\n `window_hanning`, `window_none`, `numpy.blackman`, `numpy.hamming`,\n `numpy.bartlett`, `scipy.signal`, `scipy.signal.get_window`, etc. The\n default is `window_hanning`. If a function is passed as the argument,\n it must take a data segment as an argument and return the windowed\n version of the segment.\n \n sides : {'default', 'onesided', 'twosided'}\n Specifies which sides of the spectrum to return. Default gives the\n default behavior, which returns one-sided for real data and both\n for complex data. 'onesided' forces the return of a one-sided\n spectrum, while 'twosided' forces two-sided.\n \n pad_to : int\n The number of points to which the data segment is padded when\n performing the FFT. This can be different from *NFFT*, which\n specifies the number of data points used. While not increasing\n the actual resolution of the spectrum (the minimum distance between\n resolvable peaks), this can give more points in the plot,\n allowing for more detail. This corresponds to the *n* parameter\n in the call to fft(). The default is None, which sets *pad_to*\n equal to *NFFT*\n \n NFFT : int\n The number of data points used in each block for the FFT.\n A power 2 is most efficient. The default value is 256.\n This should *NOT* be used to get zero padding, or the scaling of the\n result will be incorrect. Use *pad_to* for this instead.\n \n detrend : {'none', 'mean', 'linear'} or callable, default 'none'\n The function applied to each segment before fft-ing, designed to\n remove the mean or linear trend. Unlike in MATLAB, where the\n *detrend* parameter is a vector, in Matplotlib is it a function.\n The :mod:`~matplotlib.mlab` module defines `.detrend_none`,\n `.detrend_mean`, and `.detrend_linear`, but you can use a custom\n function as well. You can also use a string to choose one of the\n functions: 'none' calls `.detrend_none`. 'mean' calls `.detrend_mean`.\n 'linear' calls `.detrend_linear`.\n \n scale_by_freq : bool, optional\n Specifies whether the resulting density values should be scaled\n by the scaling frequency, which gives density in units of Hz^-1.\n This allows for integration over the returned frequency values.\n The default is True for MATLAB compatibility.\n \n mode : {'default', 'psd', 'magnitude', 'angle', 'phase'}\n What sort of spectrum to use. Default is 'psd', which takes the\n power spectral density. 'magnitude' returns the magnitude\n spectrum. 'angle' returns the phase spectrum without unwrapping.\n 'phase' returns the phase spectrum with unwrapping.\n \n noverlap : int\n The number of points of overlap between blocks. The\n default value is 128.\n \n scale : {'default', 'linear', 'dB'}\n The scaling of the values in the *spec*. 'linear' is no scaling.\n 'dB' returns the values in dB scale. When *mode* is 'psd',\n this is dB power (10 * log10). Otherwise this is dB amplitude\n (20 * log10). 'default' is 'dB' if *mode* is 'psd' or\n 'magnitude' and 'linear' otherwise. This must be 'linear'\n if *mode* is 'angle' or 'phase'.\n \n Fc : int\n The center frequency of *x* (defaults to 0), which offsets\n the x extents of the plot to reflect the frequency range used\n when a signal is acquired and then filtered and downsampled to\n baseband.\n \n cmap\n A :class:`matplotlib.colors.Colormap` instance; if *None*, use\n default determined by rc\n \n xextent : *None* or (xmin, xmax)\n The image extent along the x-axis. The default sets *xmin* to the\n left border of the first bin (*spectrum* column) and *xmax* to the\n right border of the last bin. Note that for *noverlap>0* the width\n of the bins is smaller than those of the segments.\n \n **kwargs\n Additional keyword arguments are passed on to imshow which makes\n the specgram image.\n \n Returns\n -------\n spectrum : 2-D array\n Columns are the periodograms of successive segments.\n \n freqs : 1-D array\n The frequencies corresponding to the rows in *spectrum*.\n \n t : 1-D array\n The times corresponding to midpoints of segments (i.e., the columns\n in *spectrum*).\n \n im : instance of class :class:`~matplotlib.image.AxesImage`\n The image created by imshow containing the spectrogram\n \n See Also\n --------\n :func:`psd`\n :func:`psd` differs in the default overlap; in returning the mean\n of the segment periodograms; in not returning times; and in\n generating a line plot instead of colormap.\n \n :func:`magnitude_spectrum`\n A single spectrum, similar to having a single segment when *mode*\n is 'magnitude'. Plots a line instead of a colormap.\n \n :func:`angle_spectrum`\n A single spectrum, similar to having a single segment when *mode*\n is 'angle'. Plots a line instead of a colormap.\n \n :func:`phase_spectrum`\n A single spectrum, similar to having a single segment when *mode*\n is 'phase'. Plots a line instead of a colormap.\n \n Notes\n -----\n The parameters *detrend* and *scale_by_freq* do only apply when *mode*\n is set to 'psd'.\n \n .. note::\n In addition to the above described arguments, this function can take a\n **data** keyword argument. If such a **data** argument is given, the\n following arguments are replaced by **data[<arg>]**:\n \n * All arguments with the following names: 'x'.\n \n Objects passed as **data** must support item access (``data[<arg>]``) and\n membership test (``<arg> in data``).\n \n spring()\n Set the colormap to \"spring\".\n \n This changes the default colormap as well as the colormap of the current\n image if there is one. See ``help(colormaps)`` for more information.\n \n spy(Z, precision=0, marker=None, markersize=None, aspect='equal', origin='upper', **kwargs)\n Plot the sparsity pattern of a 2D array.\n \n This visualizes the non-zero values of the array.\n \n Two plotting styles are available: image and marker. Both\n are available for full arrays, but only the marker style\n works for `scipy.sparse.spmatrix` instances.\n \n **Image style**\n \n If *marker* and *markersize* are *None*, `~.Axes.imshow` is used. Any\n extra remaining keyword arguments are passed to this method.\n \n **Marker style**\n \n If *Z* is a `scipy.sparse.spmatrix` or *marker* or *markersize* are\n *None*, a `.Line2D` object will be returned with the value of marker\n determining the marker type, and any remaining keyword arguments\n passed to `~.Axes.plot`.\n \n Parameters\n ----------\n Z : array-like (M, N)\n The array to be plotted.\n \n precision : float or 'present', optional, default: 0\n If *precision* is 0, any non-zero value will be plotted. Otherwise,\n values of :math:`|Z| > precision` will be plotted.\n \n For :class:`scipy.sparse.spmatrix` instances, you can also\n pass 'present'. In this case any value present in the array\n will be plotted, even if it is identically zero.\n \n origin : {'upper', 'lower'}, optional\n Place the [0, 0] index of the array in the upper left or lower left\n corner of the axes. The convention 'upper' is typically used for\n matrices and images.\n If not given, :rc:`image.origin` is used, defaulting to 'upper'.\n \n \n aspect : {'equal', 'auto', None} or float, optional\n Controls the aspect ratio of the axes. The aspect is of particular\n relevance for images since it may distort the image, i.e. pixel\n will not be square.\n \n This parameter is a shortcut for explicitly calling\n `.Axes.set_aspect`. See there for further details.\n \n - 'equal': Ensures an aspect ratio of 1. Pixels will be square.\n - 'auto': The axes is kept fixed and the aspect is adjusted so\n that the data fit in the axes. In general, this will result in\n non-square pixels.\n - *None*: Use :rc:`image.aspect`.\n \n Default: 'equal'\n \n Returns\n -------\n ret : `~matplotlib.image.AxesImage` or `.Line2D`\n The return type depends on the plotting style (see above).\n \n Other Parameters\n ----------------\n **kwargs\n The supported additional parameters depend on the plotting style.\n \n For the image style, you can pass the following additional\n parameters of `~.Axes.imshow`:\n \n - *cmap*\n - *alpha*\n - *url*\n - any `.Artist` properties (passed on to the `.AxesImage`)\n \n For the marker style, you can pass any `.Line2D` property except\n for *linestyle*:\n \n Properties:\n agg_filter: a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array\n alpha: float or None\n animated: bool\n antialiased or aa: bool\n clip_box: `.Bbox`\n clip_on: bool\n clip_path: Patch or (Path, Transform) or None\n color or c: color\n contains: callable\n dash_capstyle: {'butt', 'round', 'projecting'}\n dash_joinstyle: {'miter', 'round', 'bevel'}\n dashes: sequence of floats (on/off ink in points) or (None, None)\n data: (2, N) array or two 1D arrays\n drawstyle or ds: {'default', 'steps', 'steps-pre', 'steps-mid', 'steps-post'}, default: 'default'\n figure: `.Figure`\n fillstyle: {'full', 'left', 'right', 'bottom', 'top', 'none'}\n gid: str\n in_layout: bool\n label: object\n linestyle or ls: {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}\n linewidth or lw: float\n marker: marker style\n markeredgecolor or mec: color\n markeredgewidth or mew: float\n markerfacecolor or mfc: color\n markerfacecoloralt or mfcalt: color\n markersize or ms: float\n markevery: None or int or (int, int) or slice or List[int] or float or (float, float)\n path_effects: `.AbstractPathEffect`\n picker: float or callable[[Artist, Event], Tuple[bool, dict]]\n pickradius: float\n rasterized: bool or None\n sketch_params: (scale: float, length: float, randomness: float)\n snap: bool or None\n solid_capstyle: {'butt', 'round', 'projecting'}\n solid_joinstyle: {'miter', 'round', 'bevel'}\n transform: `matplotlib.transforms.Transform`\n url: str\n visible: bool\n xdata: 1D array\n ydata: 1D array\n zorder: float\n \n stackplot(x, *args, labels=(), colors=None, baseline='zero', data=None, **kwargs)\n Draw a stacked area plot.\n \n Parameters\n ----------\n x : 1d array of dimension N\n \n y : 2d array (dimension MxN), or sequence of 1d arrays (each dimension 1xN)\n \n The data is assumed to be unstacked. Each of the following\n calls is legal::\n \n stackplot(x, y) # where y is MxN\n stackplot(x, y1, y2, y3, y4) # where y1, y2, y3, y4, are all 1xNm\n \n baseline : {'zero', 'sym', 'wiggle', 'weighted_wiggle'}\n Method used to calculate the baseline:\n \n - ``'zero'``: Constant zero baseline, i.e. a simple stacked plot.\n - ``'sym'``: Symmetric around zero and is sometimes called\n 'ThemeRiver'.\n - ``'wiggle'``: Minimizes the sum of the squared slopes.\n - ``'weighted_wiggle'``: Does the same but weights to account for\n size of each layer. It is also called 'Streamgraph'-layout. More\n details can be found at http://leebyron.com/streamgraph/.\n \n labels : Length N sequence of strings\n Labels to assign to each data series.\n \n colors : Length N sequence of colors\n A list or tuple of colors. These will be cycled through and used to\n colour the stacked areas.\n \n **kwargs\n All other keyword arguments are passed to `Axes.fill_between()`.\n \n \n Returns\n -------\n list : list of `.PolyCollection`\n A list of `.PolyCollection` instances, one for each element in the\n stacked area plot.\n \n Notes\n -----\n \n \n .. note::\n In addition to the above described arguments, this function can take a\n **data** keyword argument. If such a **data** argument is given, the\n following arguments are replaced by **data[<arg>]**:\n \n * All positional and all keyword arguments.\n \n Objects passed as **data** must support item access (``data[<arg>]``) and\n membership test (``<arg> in data``).\n \n stem(*args, linefmt=None, markerfmt=None, basefmt=None, bottom=0, label=None, use_line_collection=False, data=None)\n Create a stem plot.\n \n A stem plot plots vertical lines at each *x* location from the baseline\n to *y*, and places a marker there.\n \n Call signature::\n \n stem([x,] y, linefmt=None, markerfmt=None, basefmt=None)\n \n The x-positions are optional. The formats may be provided either as\n positional or as keyword-arguments.\n \n Parameters\n ----------\n x : array-like, optional\n The x-positions of the stems. Default: (0, 1, ..., len(y) - 1).\n \n y : array-like\n The y-values of the stem heads.\n \n linefmt : str, optional\n A string defining the properties of the vertical lines. Usually,\n this will be a color or a color and a linestyle:\n \n ========= =============\n Character Line Style\n ========= =============\n ``'-'`` solid line\n ``'--'`` dashed line\n ``'-.'`` dash-dot line\n ``':'`` dotted line\n ========= =============\n \n Default: 'C0-', i.e. solid line with the first color of the color\n cycle.\n \n Note: While it is technically possible to specify valid formats\n other than color or color and linestyle (e.g. 'rx' or '-.'), this\n is beyond the intention of the method and will most likely not\n result in a reasonable reasonable plot.\n \n markerfmt : str, optional\n A string defining the properties of the markers at the stem heads.\n Default: 'C0o', i.e. filled circles with the first color of the\n color cycle.\n \n basefmt : str, optional\n A format string defining the properties of the baseline.\n \n Default: 'C3-' ('C2-' in classic mode).\n \n bottom : float, optional, default: 0\n The y-position of the baseline.\n \n label : str, optional, default: None\n The label to use for the stems in legends.\n \n use_line_collection : bool, optional, default: False\n If ``True``, store and plot the stem lines as a\n `~.collections.LineCollection` instead of individual lines. This\n significantly increases performance, and will become the default\n option in Matplotlib 3.3. If ``False``, defaults to the old\n behavior of using a list of `.Line2D` objects.\n \n \n Returns\n -------\n container : :class:`~matplotlib.container.StemContainer`\n The container may be treated like a tuple\n (*markerline*, *stemlines*, *baseline*)\n \n \n Notes\n -----\n .. seealso::\n The MATLAB function\n `stem <http://www.mathworks.com/help/techdoc/ref/stem.html>`_\n which inspired this method.\n \n .. note::\n In addition to the above described arguments, this function can take a\n **data** keyword argument. If such a **data** argument is given, the\n following arguments are replaced by **data[<arg>]**:\n \n * All positional and all keyword arguments.\n \n Objects passed as **data** must support item access (``data[<arg>]``) and\n membership test (``<arg> in data``).\n \n step(x, y, *args, where='pre', data=None, **kwargs)\n Make a step plot.\n \n Call signatures::\n \n step(x, y, [fmt], *, data=None, where='pre', **kwargs)\n step(x, y, [fmt], x2, y2, [fmt2], ..., *, where='pre', **kwargs)\n \n This is just a thin wrapper around `.plot` which changes some\n formatting options. Most of the concepts and parameters of plot can be\n used here as well.\n \n Parameters\n ----------\n x : array-like\n 1-D sequence of x positions. It is assumed, but not checked, that\n it is uniformly increasing.\n \n y : array-like\n 1-D sequence of y levels.\n \n fmt : str, optional\n A format string, e.g. 'g' for a green line. See `.plot` for a more\n detailed description.\n \n Note: While full format strings are accepted, it is recommended to\n only specify the color. Line styles are currently ignored (use\n the keyword argument *linestyle* instead). Markers are accepted\n and plotted on the given positions, however, this is a rarely\n needed feature for step plots.\n \n data : indexable object, optional\n An object with labelled data. If given, provide the label names to\n plot in *x* and *y*.\n \n where : {'pre', 'post', 'mid'}, optional, default 'pre'\n Define where the steps should be placed:\n \n - 'pre': The y value is continued constantly to the left from\n every *x* position, i.e. the interval ``(x[i-1], x[i]]`` has the\n value ``y[i]``.\n - 'post': The y value is continued constantly to the right from\n every *x* position, i.e. the interval ``[x[i], x[i+1])`` has the\n value ``y[i]``.\n - 'mid': Steps occur half-way between the *x* positions.\n \n Returns\n -------\n lines\n A list of `.Line2D` objects representing the plotted data.\n \n Other Parameters\n ----------------\n **kwargs\n Additional parameters are the same as those for `.plot`.\n \n Notes\n -----\n .. [notes section required to get data note injection right]\n \n streamplot(x, y, u, v, density=1, linewidth=None, color=None, cmap=None, norm=None, arrowsize=1, arrowstyle='-|>', minlength=0.1, transform=None, zorder=None, start_points=None, maxlength=4.0, integration_direction='both', *, data=None)\n Draw streamlines of a vector flow.\n \n Parameters\n ----------\n x, y : 1D arrays\n An evenly spaced grid.\n u, v : 2D arrays\n *x* and *y*-velocities. The number of rows and columns must match\n the length of *y* and *x*, respectively.\n density : float or (float, float)\n Controls the closeness of streamlines. When ``density = 1``, the domain\n is divided into a 30x30 grid. *density* linearly scales this grid.\n Each cell in the grid can have, at most, one traversing streamline.\n For different densities in each direction, use a tuple\n (density_x, density_y).\n linewidth : float or 2D array\n The width of the stream lines. With a 2D array the line width can be\n varied across the grid. The array must have the same shape as *u*\n and *v*.\n color : matplotlib color code, or 2D array\n The streamline color. If given an array, its values are converted to\n colors using *cmap* and *norm*. The array must have the same shape\n as *u* and *v*.\n cmap : `~matplotlib.colors.Colormap`\n Colormap used to plot streamlines and arrows. This is only used if\n *color* is an array.\n norm : `~matplotlib.colors.Normalize`\n Normalize object used to scale luminance data to 0, 1. If ``None``,\n stretch (min, max) to (0, 1). This is only used if *color* is an array.\n arrowsize : float\n Scaling factor for the arrow size.\n arrowstyle : str\n Arrow style specification.\n See `~matplotlib.patches.FancyArrowPatch`.\n minlength : float\n Minimum length of streamline in axes coordinates.\n start_points : Nx2 array\n Coordinates of starting points for the streamlines in data coordinates\n (the same coordinates as the *x* and *y* arrays).\n zorder : int\n The zorder of the stream lines and arrows.\n Artists with lower zorder values are drawn first.\n maxlength : float\n Maximum length of streamline in axes coordinates.\n integration_direction : {'forward', 'backward', 'both'}\n Integrate the streamline in forward, backward or both directions.\n default is ``'both'``.\n \n Returns\n -------\n stream_container : StreamplotSet\n Container object with attributes\n \n - ``lines``: `.LineCollection` of streamlines\n \n - ``arrows``: `.PatchCollection` containing `.FancyArrowPatch`\n objects representing the arrows half-way along stream lines.\n \n This container will probably change in the future to allow changes\n to the colormap, alpha, etc. for both lines and arrows, but these\n changes should be backward compatible.\n \n Notes\n -----\n \n \n .. note::\n In addition to the above described arguments, this function can take a\n **data** keyword argument. If such a **data** argument is given, the\n following arguments are replaced by **data[<arg>]**:\n \n * All arguments with the following names: 'start_points', 'u', 'v', 'x', 'y'.\n \n Objects passed as **data** must support item access (``data[<arg>]``) and\n membership test (``<arg> in data``).\n \n subplot(*args, **kwargs)\n Add a subplot to the current figure.\n \n Wrapper of `.Figure.add_subplot` with a difference in behavior\n explained in the notes section.\n \n Call signatures::\n \n subplot(nrows, ncols, index, **kwargs)\n subplot(pos, **kwargs)\n subplot(ax)\n \n Parameters\n ----------\n *args\n Either a 3-digit integer or three separate integers\n describing the position of the subplot. If the three\n integers are *nrows*, *ncols*, and *index* in order, the\n subplot will take the *index* position on a grid with *nrows*\n rows and *ncols* columns. *index* starts at 1 in the upper left\n corner and increases to the right.\n \n *pos* is a three digit integer, where the first digit is the\n number of rows, the second the number of columns, and the third\n the index of the subplot. i.e. fig.add_subplot(235) is the same as\n fig.add_subplot(2, 3, 5). Note that all integers must be less than\n 10 for this form to work.\n \n projection : {None, 'aitoff', 'hammer', 'lambert', 'mollweide', 'polar', 'rectilinear', str}, optional\n The projection type of the subplot (`~.axes.Axes`). *str* is the name\n of a custom projection, see `~matplotlib.projections`. The default\n None results in a 'rectilinear' projection.\n \n polar : boolean, optional\n If True, equivalent to projection='polar'.\n \n sharex, sharey : `~.axes.Axes`, optional\n Share the x or y `~matplotlib.axis` with sharex and/or sharey. The\n axis will have the same limits, ticks, and scale as the axis of the\n shared axes.\n \n label : str\n A label for the returned axes.\n \n Other Parameters\n ----------------\n **kwargs\n This method also takes the keyword arguments for the returned axes\n base class; except for the *figure* argument. The keyword arguments\n for the rectilinear base class `~.axes.Axes` can be found in\n the following table but there might also be other keyword\n arguments if another projection is used.\n \n Properties:\n adjustable: {'box', 'datalim'}\n agg_filter: a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array\n alpha: float or None\n anchor: 2-tuple of floats or {'C', 'SW', 'S', 'SE', ...}\n animated: bool\n aspect: {'auto', 'equal'} or num\n autoscale_on: bool\n autoscalex_on: bool\n autoscaley_on: bool\n axes_locator: Callable[[Axes, Renderer], Bbox]\n axisbelow: bool or 'line'\n clip_box: `.Bbox`\n clip_on: bool\n clip_path: Patch or (Path, Transform) or None\n contains: callable\n facecolor: color\n fc: color\n figure: `.Figure`\n frame_on: bool\n gid: str\n in_layout: bool\n label: object\n navigate: bool\n navigate_mode: unknown\n path_effects: `.AbstractPathEffect`\n picker: None or bool or float or callable\n position: [left, bottom, width, height] or `~matplotlib.transforms.Bbox`\n prop_cycle: unknown\n rasterization_zorder: float or None\n rasterized: bool or None\n sketch_params: (scale: float, length: float, randomness: float)\n snap: bool or None\n title: str\n transform: `.Transform`\n url: str\n visible: bool\n xbound: unknown\n xlabel: str\n xlim: (bottom: float, top: float)\n xmargin: float greater than -0.5\n xscale: {\"linear\", \"log\", \"symlog\", \"logit\", ...}\n xticklabels: List[str]\n xticks: unknown\n ybound: unknown\n ylabel: str\n ylim: (bottom: float, top: float)\n ymargin: float greater than -0.5\n yscale: {\"linear\", \"log\", \"symlog\", \"logit\", ...}\n yticklabels: List[str]\n yticks: unknown\n zorder: float\n \n Returns\n -------\n axes : an `.axes.SubplotBase` subclass of `~.axes.Axes` (or a subclass of `~.axes.Axes`)\n \n The axes of the subplot. The returned axes base class depends on\n the projection used. It is `~.axes.Axes` if rectilinear projection\n are used and `.projections.polar.PolarAxes` if polar projection\n are used. The returned axes is then a subplot subclass of the\n base class.\n \n Notes\n -----\n Creating a subplot will delete any pre-existing subplot that overlaps\n with it beyond sharing a boundary::\n \n import matplotlib.pyplot as plt\n # plot a line, implicitly creating a subplot(111)\n plt.plot([1, 2, 3])\n # now create a subplot which represents the top plot of a grid\n # with 2 rows and 1 column. Since this subplot will overlap the\n # first, the plot (and its axes) previously created, will be removed\n plt.subplot(211)\n \n If you do not want this behavior, use the `.Figure.add_subplot` method\n or the `.pyplot.axes` function instead.\n \n If the figure already has a subplot with key (*args*,\n *kwargs*) then it will simply make that subplot current and\n return it. This behavior is deprecated. Meanwhile, if you do\n not want this behavior (i.e., you want to force the creation of a\n new subplot), you must use a unique set of args and kwargs. The axes\n *label* attribute has been exposed for this purpose: if you want\n two subplots that are otherwise identical to be added to the figure,\n make sure you give them unique labels.\n \n In rare circumstances, `.add_subplot` may be called with a single\n argument, a subplot axes instance already created in the\n present figure but not in the figure's list of axes.\n \n See Also\n --------\n .Figure.add_subplot\n .pyplot.subplots\n .pyplot.axes\n .Figure.subplots\n \n Examples\n --------\n ::\n \n plt.subplot(221)\n \n # equivalent but more general\n ax1=plt.subplot(2, 2, 1)\n \n # add a subplot with no frame\n ax2=plt.subplot(222, frameon=False)\n \n # add a polar subplot\n plt.subplot(223, projection='polar')\n \n # add a red subplot that shares the x-axis with ax1\n plt.subplot(224, sharex=ax1, facecolor='red')\n \n # delete ax2 from the figure\n plt.delaxes(ax2)\n \n # add ax2 to the figure again\n plt.subplot(ax2)\n \n subplot2grid(shape, loc, rowspan=1, colspan=1, fig=None, **kwargs)\n Create an axis at specific location inside a regular grid.\n \n Parameters\n ----------\n shape : sequence of 2 ints\n Shape of grid in which to place axis.\n First entry is number of rows, second entry is number of columns.\n \n loc : sequence of 2 ints\n Location to place axis within grid.\n First entry is row number, second entry is column number.\n \n rowspan : int\n Number of rows for the axis to span to the right.\n \n colspan : int\n Number of columns for the axis to span downwards.\n \n fig : `Figure`, optional\n Figure to place axis in. Defaults to current figure.\n \n **kwargs\n Additional keyword arguments are handed to `add_subplot`.\n \n \n Notes\n -----\n The following call ::\n \n subplot2grid(shape, loc, rowspan=1, colspan=1)\n \n is identical to ::\n \n gridspec=GridSpec(shape[0], shape[1])\n subplotspec=gridspec.new_subplotspec(loc, rowspan, colspan)\n subplot(subplotspec)\n \n subplot_tool(targetfig=None)\n Launch a subplot tool window for a figure.\n \n A :class:`matplotlib.widgets.SubplotTool` instance is returned.\n \n subplots(nrows=1, ncols=1, sharex=False, sharey=False, squeeze=True, subplot_kw=None, gridspec_kw=None, **fig_kw)\n Create a figure and a set of subplots.\n \n This utility wrapper makes it convenient to create common layouts of\n subplots, including the enclosing figure object, in a single call.\n \n Parameters\n ----------\n nrows, ncols : int, optional, default: 1\n Number of rows/columns of the subplot grid.\n \n sharex, sharey : bool or {'none', 'all', 'row', 'col'}, default: False\n Controls sharing of properties among x (`sharex`) or y (`sharey`)\n axes:\n \n - True or 'all': x- or y-axis will be shared among all subplots.\n - False or 'none': each subplot x- or y-axis will be independent.\n - 'row': each subplot row will share an x- or y-axis.\n - 'col': each subplot column will share an x- or y-axis.\n \n When subplots have a shared x-axis along a column, only the x tick\n labels of the bottom subplot are created. Similarly, when subplots\n have a shared y-axis along a row, only the y tick labels of the first\n column subplot are created. To later turn other subplots' ticklabels\n on, use `~matplotlib.axes.Axes.tick_params`.\n \n squeeze : bool, optional, default: True\n - If True, extra dimensions are squeezed out from the returned\n array of `~matplotlib.axes.Axes`:\n \n - if only one subplot is constructed (nrows=ncols=1), the\n resulting single Axes object is returned as a scalar.\n - for Nx1 or 1xM subplots, the returned object is a 1D numpy\n object array of Axes objects.\n - for NxM, subplots with N>1 and M>1 are returned as a 2D array.\n \n - If False, no squeezing at all is done: the returned Axes object is\n always a 2D array containing Axes instances, even if it ends up\n being 1x1.\n \n num : int or str, optional, default: None\n A `.pyplot.figure` keyword that sets the figure number or label.\n \n subplot_kw : dict, optional\n Dict with keywords passed to the\n `~matplotlib.figure.Figure.add_subplot` call used to create each\n subplot.\n \n gridspec_kw : dict, optional\n Dict with keywords passed to the `~matplotlib.gridspec.GridSpec`\n constructor used to create the grid the subplots are placed on.\n \n **fig_kw\n All additional keyword arguments are passed to the\n `.pyplot.figure` call.\n \n Returns\n -------\n fig : `~.figure.Figure`\n \n ax : `.axes.Axes` object or array of Axes objects.\n *ax* can be either a single `~matplotlib.axes.Axes` object or an\n array of Axes objects if more than one subplot was created. The\n dimensions of the resulting array can be controlled with the squeeze\n keyword, see above.\n \n Typical idioms for handling the return value are::\n \n # using the variable ax for single a Axes\n fig, ax = plt.subplots()\n \n # using the variable axs for multiple Axes\n fig, axs = plt.subplots(2, 2)\n \n # using tuple unpacking for multiple Axes\n fig, (ax1, ax2) = plt.subplot(1, 2)\n fig, ((ax1, ax2), (ax3, ax4)) = plt.subplot(2, 2)\n \n The names ``ax`` and pluralized ``axs`` are preferred over ``axes``\n because for the latter it's not clear if it refers to a single\n `~.axes.Axes` instance or a collection of these.\n \n Examples\n --------\n ::\n \n # First create some toy data:\n x = np.linspace(0, 2*np.pi, 400)\n y = np.sin(x**2)\n \n # Create just a figure and only one subplot\n fig, ax = plt.subplots()\n ax.plot(x, y)\n ax.set_title('Simple plot')\n \n # Create two subplots and unpack the output array immediately\n f, (ax1, ax2) = plt.subplots(1, 2, sharey=True)\n ax1.plot(x, y)\n ax1.set_title('Sharing Y axis')\n ax2.scatter(x, y)\n \n # Create four polar axes and access them through the returned array\n fig, axs = plt.subplots(2, 2, subplot_kw=dict(polar=True))\n axs[0, 0].plot(x, y)\n axs[1, 1].scatter(x, y)\n \n # Share a X axis with each column of subplots\n plt.subplots(2, 2, sharex='col')\n \n # Share a Y axis with each row of subplots\n plt.subplots(2, 2, sharey='row')\n \n # Share both X and Y axes with all subplots\n plt.subplots(2, 2, sharex='all', sharey='all')\n \n # Note that this is the same as\n plt.subplots(2, 2, sharex=True, sharey=True)\n \n # Create figure number 10 with a single subplot\n # and clears it if it already exists.\n fig, ax = plt.subplots(num=10, clear=True)\n \n See Also\n --------\n .pyplot.figure\n .pyplot.subplot\n .pyplot.axes\n .Figure.subplots\n .Figure.add_subplot\n \n subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=None)\n Tune the subplot layout.\n \n The parameter meanings (and suggested defaults) are::\n \n left = 0.125 # the left side of the subplots of the figure\n right = 0.9 # the right side of the subplots of the figure\n bottom = 0.1 # the bottom of the subplots of the figure\n top = 0.9 # the top of the subplots of the figure\n wspace = 0.2 # the amount of width reserved for space between subplots,\n # expressed as a fraction of the average axis width\n hspace = 0.2 # the amount of height reserved for space between subplots,\n # expressed as a fraction of the average axis height\n \n The actual defaults are controlled by the rc file\n \n summer()\n Set the colormap to \"summer\".\n \n This changes the default colormap as well as the colormap of the current\n image if there is one. See ``help(colormaps)`` for more information.\n \n suptitle(t, **kwargs)\n Add a centered title to the figure.\n \n Parameters\n ----------\n t : str\n The title text.\n \n x : float, default 0.5\n The x location of the text in figure coordinates.\n \n y : float, default 0.98\n The y location of the text in figure coordinates.\n \n horizontalalignment, ha : {'center', 'left', right'}, default: 'center'\n The horizontal alignment of the text relative to (*x*, *y*).\n \n verticalalignment, va : {'top', 'center', 'bottom', 'baseline'}, default: 'top'\n The vertical alignment of the text relative to (*x*, *y*).\n \n fontsize, size : default: :rc:`figure.titlesize`\n The font size of the text. See `.Text.set_size` for possible\n values.\n \n fontweight, weight : default: :rc:`figure.titleweight`\n The font weight of the text. See `.Text.set_weight` for possible\n values.\n \n \n Returns\n -------\n text\n The `.Text` instance of the title.\n \n \n Other Parameters\n ----------------\n fontproperties : None or dict, optional\n A dict of font properties. If *fontproperties* is given the\n default values for font size and weight are taken from the\n `FontProperties` defaults. :rc:`figure.titlesize` and\n :rc:`figure.titleweight` are ignored in this case.\n \n **kwargs\n Additional kwargs are :class:`matplotlib.text.Text` properties.\n \n \n Examples\n --------\n >>> fig.suptitle('This is the figure title', fontsize=12)\n \n switch_backend(newbackend)\n Close all open figures and set the Matplotlib backend.\n \n The argument is case-insensitive. Switching to an interactive backend is\n possible only if no event loop for another interactive backend has started.\n Switching to and from non-interactive backends is always possible.\n \n Parameters\n ----------\n newbackend : str\n The name of the backend to use.\n \n table(cellText=None, cellColours=None, cellLoc='right', colWidths=None, rowLabels=None, rowColours=None, rowLoc='left', colLabels=None, colColours=None, colLoc='center', loc='bottom', bbox=None, edges='closed', **kwargs)\n Add a table to an `~.axes.Axes`.\n \n At least one of *cellText* or *cellColours* must be specified. These\n parameters must be 2D lists, in which the outer lists define the rows and\n the inner list define the column values per row. Each row must have the\n same number of elements.\n \n The table can optionally have row and column headers, which are configured\n using *rowLabels*, *rowColours*, *rowLoc* and *colLabels*, *colColours*,\n *colLoc* respectively.\n \n For finer grained control over tables, use the `.Table` class and add it to\n the axes with `.Axes.add_table`.\n \n Parameters\n ----------\n cellText : 2D list of str, optional\n The texts to place into the table cells.\n \n *Note*: Line breaks in the strings are currently not accounted for and\n will result in the text exceeding the cell boundaries.\n \n cellColours : 2D list of colors, optional\n The background colors of the cells.\n \n cellLoc : {'left', 'center', 'right'}, default: 'right'\n The alignment of the text within the cells.\n \n colWidths : list of float, optional\n The column widths in units of the axes. If not given, all columns will\n have a width of *1 / ncols*.\n \n rowLabels : list of str, optional\n The text of the row header cells.\n \n rowColours : list of colors, optional\n The colors of the row header cells.\n \n rowLoc : {'left', 'center', 'right'}, optional, default: 'left'\n The text alignment of the row header cells.\n \n colLabels : list of str, optional\n The text of the column header cells.\n \n colColours : list of colors, optional\n The colors of the column header cells.\n \n colLoc : {'left', 'center', 'right'}, optional, default: 'left'\n The text alignment of the column header cells.\n \n loc : str, optional\n The position of the cell with respect to *ax*. This must be one of\n the `~.Table.codes`.\n \n bbox : `.Bbox`, optional\n A bounding box to draw the table into. If this is not *None*, this\n overrides *loc*.\n \n edges : substring of 'BRTL' or {'open', 'closed', 'horizontal', 'vertical'}\n The cell edges to be drawn with a line. See also\n `~.CustomCell.visible_edges`.\n \n Other Parameters\n ----------------\n **kwargs\n `.Table` properties.\n \n Properties:\n agg_filter: a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array\n alpha: float or None\n animated: bool\n clip_box: `.Bbox`\n clip_on: bool\n clip_path: Patch or (Path, Transform) or None\n contains: callable\n figure: `.Figure`\n fontsize: float\n gid: str\n in_layout: bool\n label: object\n path_effects: `.AbstractPathEffect`\n picker: None or bool or float or callable\n rasterized: bool or None\n sketch_params: (scale: float, length: float, randomness: float)\n snap: bool or None\n transform: `.Transform`\n url: str\n visible: bool\n zorder: float\n \n Returns\n -------\n table : `~matplotlib.table.Table`\n The created table.\n \n text(x, y, s, fontdict=None, withdash=<deprecated parameter>, **kwargs)\n Add text to the axes.\n \n Add the text *s* to the axes at location *x*, *y* in data coordinates.\n \n Parameters\n ----------\n x, y : scalars\n The position to place the text. By default, this is in data\n coordinates. The coordinate system can be changed using the\n *transform* parameter.\n \n s : str\n The text.\n \n fontdict : dictionary, optional, default: None\n A dictionary to override the default text properties. If fontdict\n is None, the defaults are determined by your rc parameters.\n \n withdash : boolean, optional, default: False\n Creates a `~matplotlib.text.TextWithDash` instance instead of a\n `~matplotlib.text.Text` instance.\n \n Returns\n -------\n text : `.Text`\n The created `.Text` instance.\n \n Other Parameters\n ----------------\n **kwargs : `~matplotlib.text.Text` properties.\n Other miscellaneous text parameters.\n \n Examples\n --------\n Individual keyword arguments can be used to override any given\n parameter::\n \n >>> text(x, y, s, fontsize=12)\n \n The default transform specifies that text is in data coords,\n alternatively, you can specify text in axis coords ((0, 0) is\n lower-left and (1, 1) is upper-right). The example below places\n text in the center of the axes::\n \n >>> text(0.5, 0.5, 'matplotlib', horizontalalignment='center',\n ... verticalalignment='center', transform=ax.transAxes)\n \n You can put a rectangular box around the text instance (e.g., to\n set a background color) by using the keyword *bbox*. *bbox* is\n a dictionary of `~matplotlib.patches.Rectangle`\n properties. For example::\n \n >>> text(x, y, s, bbox=dict(facecolor='red', alpha=0.5))\n \n thetagrids(*args, **kwargs)\n Get or set the theta gridlines on the current polar plot.\n \n Call signatures::\n \n lines, labels = thetagrids()\n lines, labels = thetagrids(angles, labels=None, fmt=None, **kwargs)\n \n When called with no arguments, `.thetagrids` simply returns the tuple\n (*lines*, *labels*). When called with arguments, the labels will\n appear at the specified angles.\n \n Parameters\n ----------\n angles : tuple with floats, degrees\n The angles of the theta gridlines.\n \n labels : tuple with strings or None\n The labels to use at each radial gridline. The\n `.projections.polar.ThetaFormatter` will be used if None.\n \n fmt : str or None\n Format string used in `matplotlib.ticker.FormatStrFormatter`.\n For example '%f'. Note that the angle in radians will be used.\n \n Returns\n -------\n lines, labels : list of `.lines.Line2D`, list of `.text.Text`\n *lines* are the theta gridlines and *labels* are the tick labels.\n \n Other Parameters\n ----------------\n **kwargs\n *kwargs* are optional `~.Text` properties for the labels.\n \n Examples\n --------\n ::\n \n # set the locations of the angular gridlines\n lines, labels = thetagrids(range(45, 360, 90))\n \n # set the locations and labels of the angular gridlines\n lines, labels = thetagrids(range(45, 360, 90), ('NE', 'NW', 'SW', 'SE'))\n \n See Also\n --------\n .pyplot.rgrids\n .projections.polar.PolarAxes.set_thetagrids\n .Axis.get_gridlines\n .Axis.get_ticklabels\n \n tick_params(axis='both', **kwargs)\n Change the appearance of ticks, tick labels, and gridlines.\n \n Parameters\n ----------\n axis : {'x', 'y', 'both'}, optional\n Which axis to apply the parameters to.\n \n Other Parameters\n ----------------\n axis : {'x', 'y', 'both'}\n Axis on which to operate; default is 'both'.\n reset : bool, default: False\n If *True*, set all parameters to defaults before processing other\n keyword arguments.\n which : {'major', 'minor', 'both'}\n Default is 'major'; apply arguments to *which* ticks.\n direction : {'in', 'out', 'inout'}\n Puts ticks inside the axes, outside the axes, or both.\n length : float\n Tick length in points.\n width : float\n Tick width in points.\n color : color\n Tick color.\n pad : float\n Distance in points between tick and label.\n labelsize : float or str\n Tick label font size in points or as a string (e.g., 'large').\n labelcolor : color\n Tick label color.\n colors : color\n Tick color and label color.\n zorder : float\n Tick and label zorder.\n bottom, top, left, right : bool\n Whether to draw the respective ticks.\n labelbottom, labeltop, labelleft, labelright : bool\n Whether to draw the respective tick labels.\n labelrotation : float\n Tick label rotation\n grid_color : color\n Gridline color.\n grid_alpha : float\n Transparency of gridlines: 0 (transparent) to 1 (opaque).\n grid_linewidth : float\n Width of gridlines in points.\n grid_linestyle : str\n Any valid `.Line2D` line style spec.\n \n Examples\n --------\n Usage ::\n \n ax.tick_params(direction='out', length=6, width=2, colors='r',\n grid_color='r', grid_alpha=0.5)\n \n This will make all major ticks be red, pointing out of the box,\n and with dimensions 6 points by 2 points. Tick labels will\n also be red. Gridlines will be red and translucent.\n \n ticklabel_format(*, axis='both', style='', scilimits=None, useOffset=None, useLocale=None, useMathText=None)\n Change the `~matplotlib.ticker.ScalarFormatter` used by\n default for linear axes.\n \n Optional keyword arguments:\n \n ============== =========================================\n Keyword Description\n ============== =========================================\n *axis* {'x', 'y', 'both'}\n *style* {'sci' (or 'scientific'), 'plain'}\n plain turns off scientific notation\n *scilimits* (m, n), pair of integers; if *style*\n is 'sci', scientific notation will\n be used for numbers outside the range\n 10\\ :sup:`m` to 10\\ :sup:`n`.\n Use (0, 0) to include all numbers.\n Use (m, m) where m != 0 to fix the order\n of magnitude to 10\\ :sup:`m`.\n *useOffset* bool or float\n If True, the offset will be calculated as\n needed; if False, no offset will be used;\n if a numeric offset is specified, it will\n be used.\n *useLocale* If True, format the number according to\n the current locale. This affects things\n such as the character used for the\n decimal separator. If False, use\n C-style (English) formatting. The\n default setting is controlled by the\n axes.formatter.use_locale rcparam.\n *useMathText* If True, render the offset and scientific\n notation in mathtext\n ============== =========================================\n \n Only the major ticks are affected.\n If the method is called when the `~matplotlib.ticker.ScalarFormatter`\n is not the `~matplotlib.ticker.Formatter` being used, an\n `AttributeError` will be raised.\n \n tight_layout(pad=1.08, h_pad=None, w_pad=None, rect=None)\n Automatically adjust subplot parameters to give specified padding.\n \n Parameters\n ----------\n pad : float\n Padding between the figure edge and the edges of subplots,\n as a fraction of the font size.\n h_pad, w_pad : float, optional\n Padding (height/width) between edges of adjacent subplots,\n as a fraction of the font size. Defaults to *pad*.\n rect : tuple (left, bottom, right, top), optional\n A rectangle (left, bottom, right, top) in the normalized\n figure coordinate that the whole subplots area (including\n labels) will fit into. Default is (0, 0, 1, 1).\n \n title(label, fontdict=None, loc=None, pad=None, **kwargs)\n Set a title for the axes.\n \n Set one of the three available axes titles. The available titles\n are positioned above the axes in the center, flush with the left\n edge, and flush with the right edge.\n \n Parameters\n ----------\n label : str\n Text to use for the title\n \n fontdict : dict\n A dictionary controlling the appearance of the title text,\n the default *fontdict* is::\n \n {'fontsize': rcParams['axes.titlesize'],\n 'fontweight' : rcParams['axes.titleweight'],\n 'color' : rcParams['axes.titlecolor'],\n 'verticalalignment': 'baseline',\n 'horizontalalignment': loc}\n \n loc : {'center', 'left', 'right'}, str, optional\n Which title to set.\n If *None*, defaults to :rc:`axes.titlelocation`.\n \n pad : float\n The offset of the title from the top of the axes, in points.\n If *None*, defaults to :rc:`axes.titlepad`.\n \n Returns\n -------\n text : :class:`~matplotlib.text.Text`\n The matplotlib text instance representing the title\n \n Other Parameters\n ----------------\n **kwargs : `~matplotlib.text.Text` properties\n Other keyword arguments are text properties, see\n :class:`~matplotlib.text.Text` for a list of valid text\n properties.\n \n tricontour(*args, **kwargs)\n Draw contours on an unstructured triangular grid.\n \n `.tricontour` and `.tricontourf` draw contour lines and filled contours,\n respectively. Except as noted, function signatures and return values are\n the same for both versions.\n \n The triangulation can be specified in one of two ways; either ::\n \n tricontour(triangulation, ...)\n \n where *triangulation* is a `matplotlib.tri.Triangulation` object, or ::\n \n tricontour(x, y, ...)\n tricontour(x, y, triangles, ...)\n tricontour(x, y, triangles=triangles, ...)\n tricontour(x, y, mask=mask, ...)\n tricontour(x, y, triangles, mask=mask, ...)\n \n in which case a `.Triangulation` object will be created. See that class'\n docstring for an explanation of these cases.\n \n The remaining arguments may be::\n \n tricontour(..., Z)\n \n where *Z* is the array of values to contour, one per point in the\n triangulation. The level values are chosen automatically.\n \n ::\n \n tricontour(..., Z, N)\n \n contour up to *N+1* automatically chosen contour levels (*N* intervals).\n \n ::\n \n tricontour(..., Z, V)\n \n draw contour lines at the values specified in sequence *V*,\n which must be in increasing order.\n \n ::\n \n tricontourf(..., Z, V)\n \n fill the (len(*V*)-1) regions between the values in *V*,\n which must be in increasing order.\n \n ::\n \n tricontour(Z, **kwargs)\n \n Use keyword args to control colors, linewidth, origin, cmap ... see\n below for more details.\n \n `.tricontour(...)` returns a `~matplotlib.contour.TriContourSet` object.\n \n Optional keyword arguments:\n \n *colors*: [ *None* | string | (mpl_colors) ]\n If *None*, the colormap specified by cmap will be used.\n \n If a string, like 'r' or 'red', all levels will be plotted in this\n color.\n \n If a tuple of matplotlib color args (string, float, rgb, etc),\n different levels will be plotted in different colors in the order\n specified.\n \n *alpha*: float\n The alpha blending value\n \n *cmap*: [ *None* | Colormap ]\n A cm :class:`~matplotlib.colors.Colormap` instance or\n *None*. If *cmap* is *None* and *colors* is *None*, a\n default Colormap is used.\n \n *norm*: [ *None* | Normalize ]\n A :class:`matplotlib.colors.Normalize` instance for\n scaling data values to colors. If *norm* is *None* and\n *colors* is *None*, the default linear scaling is used.\n \n *levels* [level0, level1, ..., leveln]\n A list of floating point numbers indicating the level\n curves to draw, in increasing order; e.g., to draw just\n the zero contour pass ``levels=[0]``\n \n *origin*: [ *None* | 'upper' | 'lower' | 'image' ]\n If *None*, the first value of *Z* will correspond to the\n lower left corner, location (0, 0). If 'image', the rc\n value for ``image.origin`` will be used.\n \n This keyword is not active if *X* and *Y* are specified in\n the call to contour.\n \n *extent*: [ *None* | (x0, x1, y0, y1) ]\n \n If *origin* is not *None*, then *extent* is interpreted as\n in :func:`matplotlib.pyplot.imshow`: it gives the outer\n pixel boundaries. In this case, the position of Z[0, 0]\n is the center of the pixel, not a corner. If *origin* is\n *None*, then (*x0*, *y0*) is the position of Z[0, 0], and\n (*x1*, *y1*) is the position of Z[-1,-1].\n \n This keyword is not active if *X* and *Y* are specified in\n the call to contour.\n \n *locator*: [ *None* | ticker.Locator subclass ]\n If *locator* is None, the default\n :class:`~matplotlib.ticker.MaxNLocator` is used. The\n locator is used to determine the contour levels if they\n are not given explicitly via the *V* argument.\n \n *extend*: [ 'neither' | 'both' | 'min' | 'max' ]\n Unless this is 'neither', contour levels are automatically\n added to one or both ends of the range so that all data\n are included. These added ranges are then mapped to the\n special colormap values which default to the ends of the\n colormap range, but can be set via\n :meth:`matplotlib.colors.Colormap.set_under` and\n :meth:`matplotlib.colors.Colormap.set_over` methods.\n \n *xunits*, *yunits*: [ *None* | registered units ]\n Override axis units by specifying an instance of a\n :class:`matplotlib.units.ConversionInterface`.\n \n tricontour-only keyword arguments:\n \n *linewidths*: [ *None* | number | tuple of numbers ]\n If *linewidths* is *None*, defaults to rc:`lines.linewidth`.\n \n If a number, all levels will be plotted with this linewidth.\n \n If a tuple, different levels will be plotted with different\n linewidths in the order specified\n \n *linestyles*: [ *None* | 'solid' | 'dashed' | 'dashdot' | 'dotted' ]\n If *linestyles* is *None*, the 'solid' is used.\n \n *linestyles* can also be an iterable of the above strings\n specifying a set of linestyles to be used. If this\n iterable is shorter than the number of contour levels\n it will be repeated as necessary.\n \n If contour is using a monochrome colormap and the contour\n level is less than 0, then the linestyle specified\n in :rc:`contour.negative_linestyle` will be used.\n \n tricontourf-only keyword arguments:\n \n *antialiased*: bool\n enable antialiasing\n \n Note: `.tricontourf` fills intervals that are closed at the top; that is,\n for boundaries *z1* and *z2*, the filled region is::\n \n z1 < Z <= z2\n \n except for the lowest interval, which is closed on both sides (i.e. it\n includes the lowest value).\n \n tricontourf(*args, **kwargs)\n Draw contours on an unstructured triangular grid.\n \n `.tricontour` and `.tricontourf` draw contour lines and filled contours,\n respectively. Except as noted, function signatures and return values are\n the same for both versions.\n \n The triangulation can be specified in one of two ways; either ::\n \n tricontour(triangulation, ...)\n \n where *triangulation* is a `matplotlib.tri.Triangulation` object, or ::\n \n tricontour(x, y, ...)\n tricontour(x, y, triangles, ...)\n tricontour(x, y, triangles=triangles, ...)\n tricontour(x, y, mask=mask, ...)\n tricontour(x, y, triangles, mask=mask, ...)\n \n in which case a `.Triangulation` object will be created. See that class'\n docstring for an explanation of these cases.\n \n The remaining arguments may be::\n \n tricontour(..., Z)\n \n where *Z* is the array of values to contour, one per point in the\n triangulation. The level values are chosen automatically.\n \n ::\n \n tricontour(..., Z, N)\n \n contour up to *N+1* automatically chosen contour levels (*N* intervals).\n \n ::\n \n tricontour(..., Z, V)\n \n draw contour lines at the values specified in sequence *V*,\n which must be in increasing order.\n \n ::\n \n tricontourf(..., Z, V)\n \n fill the (len(*V*)-1) regions between the values in *V*,\n which must be in increasing order.\n \n ::\n \n tricontour(Z, **kwargs)\n \n Use keyword args to control colors, linewidth, origin, cmap ... see\n below for more details.\n \n `.tricontour(...)` returns a `~matplotlib.contour.TriContourSet` object.\n \n Optional keyword arguments:\n \n *colors*: [ *None* | string | (mpl_colors) ]\n If *None*, the colormap specified by cmap will be used.\n \n If a string, like 'r' or 'red', all levels will be plotted in this\n color.\n \n If a tuple of matplotlib color args (string, float, rgb, etc),\n different levels will be plotted in different colors in the order\n specified.\n \n *alpha*: float\n The alpha blending value\n \n *cmap*: [ *None* | Colormap ]\n A cm :class:`~matplotlib.colors.Colormap` instance or\n *None*. If *cmap* is *None* and *colors* is *None*, a\n default Colormap is used.\n \n *norm*: [ *None* | Normalize ]\n A :class:`matplotlib.colors.Normalize` instance for\n scaling data values to colors. If *norm* is *None* and\n *colors* is *None*, the default linear scaling is used.\n \n *levels* [level0, level1, ..., leveln]\n A list of floating point numbers indicating the level\n curves to draw, in increasing order; e.g., to draw just\n the zero contour pass ``levels=[0]``\n \n *origin*: [ *None* | 'upper' | 'lower' | 'image' ]\n If *None*, the first value of *Z* will correspond to the\n lower left corner, location (0, 0). If 'image', the rc\n value for ``image.origin`` will be used.\n \n This keyword is not active if *X* and *Y* are specified in\n the call to contour.\n \n *extent*: [ *None* | (x0, x1, y0, y1) ]\n \n If *origin* is not *None*, then *extent* is interpreted as\n in :func:`matplotlib.pyplot.imshow`: it gives the outer\n pixel boundaries. In this case, the position of Z[0, 0]\n is the center of the pixel, not a corner. If *origin* is\n *None*, then (*x0*, *y0*) is the position of Z[0, 0], and\n (*x1*, *y1*) is the position of Z[-1,-1].\n \n This keyword is not active if *X* and *Y* are specified in\n the call to contour.\n \n *locator*: [ *None* | ticker.Locator subclass ]\n If *locator* is None, the default\n :class:`~matplotlib.ticker.MaxNLocator` is used. The\n locator is used to determine the contour levels if they\n are not given explicitly via the *V* argument.\n \n *extend*: [ 'neither' | 'both' | 'min' | 'max' ]\n Unless this is 'neither', contour levels are automatically\n added to one or both ends of the range so that all data\n are included. These added ranges are then mapped to the\n special colormap values which default to the ends of the\n colormap range, but can be set via\n :meth:`matplotlib.colors.Colormap.set_under` and\n :meth:`matplotlib.colors.Colormap.set_over` methods.\n \n *xunits*, *yunits*: [ *None* | registered units ]\n Override axis units by specifying an instance of a\n :class:`matplotlib.units.ConversionInterface`.\n \n tricontour-only keyword arguments:\n \n *linewidths*: [ *None* | number | tuple of numbers ]\n If *linewidths* is *None*, defaults to rc:`lines.linewidth`.\n \n If a number, all levels will be plotted with this linewidth.\n \n If a tuple, different levels will be plotted with different\n linewidths in the order specified\n \n *linestyles*: [ *None* | 'solid' | 'dashed' | 'dashdot' | 'dotted' ]\n If *linestyles* is *None*, the 'solid' is used.\n \n *linestyles* can also be an iterable of the above strings\n specifying a set of linestyles to be used. If this\n iterable is shorter than the number of contour levels\n it will be repeated as necessary.\n \n If contour is using a monochrome colormap and the contour\n level is less than 0, then the linestyle specified\n in :rc:`contour.negative_linestyle` will be used.\n \n tricontourf-only keyword arguments:\n \n *antialiased*: bool\n enable antialiasing\n \n Note: `.tricontourf` fills intervals that are closed at the top; that is,\n for boundaries *z1* and *z2*, the filled region is::\n \n z1 < Z <= z2\n \n except for the lowest interval, which is closed on both sides (i.e. it\n includes the lowest value).\n \n tripcolor(*args, alpha=1.0, norm=None, cmap=None, vmin=None, vmax=None, shading='flat', facecolors=None, **kwargs)\n Create a pseudocolor plot of an unstructured triangular grid.\n \n The triangulation can be specified in one of two ways; either::\n \n tripcolor(triangulation, ...)\n \n where triangulation is a :class:`matplotlib.tri.Triangulation`\n object, or\n \n ::\n \n tripcolor(x, y, ...)\n tripcolor(x, y, triangles, ...)\n tripcolor(x, y, triangles=triangles, ...)\n tripcolor(x, y, mask=mask, ...)\n tripcolor(x, y, triangles, mask=mask, ...)\n \n in which case a Triangulation object will be created. See\n :class:`~matplotlib.tri.Triangulation` for a explanation of these\n possibilities.\n \n The next argument must be *C*, the array of color values, either\n one per point in the triangulation if color values are defined at\n points, or one per triangle in the triangulation if color values\n are defined at triangles. If there are the same number of points\n and triangles in the triangulation it is assumed that color\n values are defined at points; to force the use of color values at\n triangles use the kwarg ``facecolors=C`` instead of just ``C``.\n \n *shading* may be 'flat' (the default) or 'gouraud'. If *shading*\n is 'flat' and C values are defined at points, the color values\n used for each triangle are from the mean C of the triangle's\n three points. If *shading* is 'gouraud' then color values must be\n defined at points.\n \n The remaining kwargs are the same as for\n :meth:`~matplotlib.axes.Axes.pcolor`.\n \n triplot(*args, **kwargs)\n Draw a unstructured triangular grid as lines and/or markers.\n \n The triangulation to plot can be specified in one of two ways;\n either::\n \n triplot(triangulation, ...)\n \n where triangulation is a :class:`matplotlib.tri.Triangulation`\n object, or\n \n ::\n \n triplot(x, y, ...)\n triplot(x, y, triangles, ...)\n triplot(x, y, triangles=triangles, ...)\n triplot(x, y, mask=mask, ...)\n triplot(x, y, triangles, mask=mask, ...)\n \n in which case a Triangulation object will be created. See\n :class:`~matplotlib.tri.Triangulation` for a explanation of these\n possibilities.\n \n The remaining args and kwargs are the same as for\n :meth:`~matplotlib.axes.Axes.plot`.\n \n Return a list of 2 :class:`~matplotlib.lines.Line2D` containing\n respectively:\n \n - the lines plotted for triangles edges\n - the markers plotted for triangles nodes\n \n twinx(ax=None)\n Make and return a second axes that shares the *x*-axis. The new axes will\n overlay *ax* (or the current axes if *ax* is *None*), and its ticks will be\n on the right.\n \n Examples\n --------\n :doc:`/gallery/subplots_axes_and_figures/two_scales`\n \n twiny(ax=None)\n Make and return a second axes that shares the *y*-axis. The new axes will\n overlay *ax* (or the current axes if *ax* is *None*), and its ticks will be\n on the top.\n \n Examples\n --------\n :doc:`/gallery/subplots_axes_and_figures/two_scales`\n \n uninstall_repl_displayhook()\n Uninstall the matplotlib display hook.\n \n .. warning::\n \n Need IPython >= 2 for this to work. For IPython < 2 will raise a\n ``NotImplementedError``\n \n .. warning::\n \n If you are using vanilla python and have installed another\n display hook this will reset ``sys.displayhook`` to what ever\n function was there when matplotlib installed it's displayhook,\n possibly discarding your changes.\n \n violinplot(dataset, positions=None, vert=True, widths=0.5, showmeans=False, showextrema=True, showmedians=False, quantiles=None, points=100, bw_method=None, *, data=None)\n Make a violin plot.\n \n Make a violin plot for each column of *dataset* or each vector in\n sequence *dataset*. Each filled area extends to represent the\n entire data range, with optional lines at the mean, the median,\n the minimum, the maximum, and user-specified quantiles.\n \n Parameters\n ----------\n dataset : Array or a sequence of vectors.\n The input data.\n \n positions : array-like, default = [1, 2, ..., n]\n Sets the positions of the violins. The ticks and limits are\n automatically set to match the positions.\n \n vert : bool, default = True.\n If true, creates a vertical violin plot.\n Otherwise, creates a horizontal violin plot.\n \n widths : array-like, default = 0.5\n Either a scalar or a vector that sets the maximal width of\n each violin. The default is 0.5, which uses about half of the\n available horizontal space.\n \n showmeans : bool, default = False\n If `True`, will toggle rendering of the means.\n \n showextrema : bool, default = True\n If `True`, will toggle rendering of the extrema.\n \n showmedians : bool, default = False\n If `True`, will toggle rendering of the medians.\n \n quantiles : array-like, default = None\n If not None, set a list of floats in interval [0, 1] for each violin,\n which stands for the quantiles that will be rendered for that\n violin.\n \n points : scalar, default = 100\n Defines the number of points to evaluate each of the\n gaussian kernel density estimations at.\n \n bw_method : str, scalar or callable, optional\n The method used to calculate the estimator bandwidth. This can be\n 'scott', 'silverman', a scalar constant or a callable. If a\n scalar, this will be used directly as `kde.factor`. If a\n callable, it should take a `GaussianKDE` instance as its only\n parameter and return a scalar. If None (default), 'scott' is used.\n \n Returns\n -------\n result : dict\n A dictionary mapping each component of the violinplot to a\n list of the corresponding collection instances created. The\n dictionary has the following keys:\n \n - ``bodies``: A list of the `~.collections.PolyCollection`\n instances containing the filled area of each violin.\n \n - ``cmeans``: A `~.collections.LineCollection` instance that marks\n the mean values of each of the violin's distribution.\n \n - ``cmins``: A `~.collections.LineCollection` instance that marks\n the bottom of each violin's distribution.\n \n - ``cmaxes``: A `~.collections.LineCollection` instance that marks\n the top of each violin's distribution.\n \n - ``cbars``: A `~.collections.LineCollection` instance that marks\n the centers of each violin's distribution.\n \n - ``cmedians``: A `~.collections.LineCollection` instance that\n marks the median values of each of the violin's distribution.\n \n - ``cquantiles``: A `~.collections.LineCollection` instance created\n to identify the quantile values of each of the violin's\n distribution.\n \n Notes\n -----\n \n \n .. note::\n In addition to the above described arguments, this function can take a\n **data** keyword argument. If such a **data** argument is given, the\n following arguments are replaced by **data[<arg>]**:\n \n * All arguments with the following names: 'dataset'.\n \n Objects passed as **data** must support item access (``data[<arg>]``) and\n membership test (``<arg> in data``).\n \n viridis()\n Set the colormap to \"viridis\".\n \n This changes the default colormap as well as the colormap of the current\n image if there is one. See ``help(colormaps)`` for more information.\n \n vlines(x, ymin, ymax, colors='k', linestyles='solid', label='', *, data=None, **kwargs)\n Plot vertical lines.\n \n Plot vertical lines at each *x* from *ymin* to *ymax*.\n \n Parameters\n ----------\n x : scalar or 1D array-like\n x-indexes where to plot the lines.\n \n ymin, ymax : scalar or 1D array-like\n Respective beginning and end of each line. If scalars are\n provided, all lines will have same length.\n \n colors : array-like of colors, optional, default: 'k'\n \n linestyles : {'solid', 'dashed', 'dashdot', 'dotted'}, optional\n \n label : str, optional, default: ''\n \n Returns\n -------\n lines : `~matplotlib.collections.LineCollection`\n \n Other Parameters\n ----------------\n **kwargs : `~matplotlib.collections.LineCollection` properties.\n \n See also\n --------\n hlines : horizontal lines\n axvline: vertical line across the axes\n \n Notes\n -----\n \n \n .. note::\n In addition to the above described arguments, this function can take a\n **data** keyword argument. If such a **data** argument is given, the\n following arguments are replaced by **data[<arg>]**:\n \n * All arguments with the following names: 'colors', 'x', 'ymax', 'ymin'.\n \n Objects passed as **data** must support item access (``data[<arg>]``) and\n membership test (``<arg> in data``).\n \n waitforbuttonpress(timeout=-1)\n Blocking call to interact with the figure.\n \n This will return True is a key was pressed, False if a mouse\n button was pressed and None if *timeout* was reached without\n either being pressed.\n \n If *timeout* is negative, does not timeout.\n \n winter()\n Set the colormap to \"winter\".\n \n This changes the default colormap as well as the colormap of the current\n image if there is one. See ``help(colormaps)`` for more information.\n \n xcorr(x, y, normed=True, detrend=<function detrend_none at 0x7f4440ecac20>, usevlines=True, maxlags=10, *, data=None, **kwargs)\n Plot the cross correlation between *x* and *y*.\n \n The correlation with lag k is defined as\n :math:`\\sum_n x[n+k] \\cdot y^*[n]`, where :math:`y^*` is the complex\n conjugate of :math:`y`.\n \n Parameters\n ----------\n x : array-like of length n\n \n y : array-like of length n\n \n detrend : callable, optional, default: `mlab.detrend_none`\n *x* and *y* are detrended by the *detrend* callable. This must be a\n function ``x = detrend(x)`` accepting and returning an\n `numpy.array`. Default is no normalization.\n \n normed : bool, optional, default: True\n If ``True``, input vectors are normalised to unit length.\n \n usevlines : bool, optional, default: True\n Determines the plot style.\n \n If ``True``, vertical lines are plotted from 0 to the xcorr value\n using `Axes.vlines`. Additionally, a horizontal line is plotted\n at y=0 using `Axes.axhline`.\n \n If ``False``, markers are plotted at the xcorr values using\n `Axes.plot`.\n \n maxlags : int, optional, default: 10\n Number of lags to show. If None, will return all ``2 * len(x) - 1``\n lags.\n \n Returns\n -------\n lags : array (length ``2*maxlags+1``)\n The lag vector.\n c : array (length ``2*maxlags+1``)\n The auto correlation vector.\n line : `.LineCollection` or `.Line2D`\n `.Artist` added to the axes of the correlation:\n \n - `.LineCollection` if *usevlines* is True.\n - `.Line2D` if *usevlines* is False.\n b : `.Line2D` or None\n Horizontal line at 0 if *usevlines* is True\n None *usevlines* is False.\n \n Other Parameters\n ----------------\n linestyle : `.Line2D` property, optional\n The linestyle for plotting the data points.\n Only used if *usevlines* is ``False``.\n \n marker : str, optional, default: 'o'\n The marker for plotting the data points.\n Only used if *usevlines* is ``False``.\n \n Notes\n -----\n The cross correlation is performed with :func:`numpy.correlate` with\n ``mode = \"full\"``.\n \n .. note::\n In addition to the above described arguments, this function can take a\n **data** keyword argument. If such a **data** argument is given, the\n following arguments are replaced by **data[<arg>]**:\n \n * All arguments with the following names: 'x', 'y'.\n \n Objects passed as **data** must support item access (``data[<arg>]``) and\n membership test (``<arg> in data``).\n \n xkcd(scale=1, length=100, randomness=2)\n Turn on `xkcd <https://xkcd.com/>`_ sketch-style drawing mode.\n This will only have effect on things drawn after this function is\n called.\n \n For best results, the \"Humor Sans\" font should be installed: it is\n not included with matplotlib.\n \n Parameters\n ----------\n scale : float, optional\n The amplitude of the wiggle perpendicular to the source line.\n length : float, optional\n The length of the wiggle along the line.\n randomness : float, optional\n The scale factor by which the length is shrunken or expanded.\n \n Notes\n -----\n This function works by a number of rcParams, so it will probably\n override others you have set before.\n \n If you want the effects of this function to be temporary, it can\n be used as a context manager, for example::\n \n with plt.xkcd():\n # This figure will be in XKCD-style\n fig1 = plt.figure()\n # ...\n \n # This figure will be in regular style\n fig2 = plt.figure()\n \n xlabel(xlabel, fontdict=None, labelpad=None, **kwargs)\n Set the label for the x-axis.\n \n Parameters\n ----------\n xlabel : str\n The label text.\n \n labelpad : scalar, optional, default: None\n Spacing in points from the axes bounding box including ticks\n and tick labels.\n \n Other Parameters\n ----------------\n **kwargs : `.Text` properties\n `.Text` properties control the appearance of the label.\n \n See also\n --------\n text : for information on how override and the optional args work\n \n xlim(*args, **kwargs)\n Get or set the x limits of the current axes.\n \n Call signatures::\n \n left, right = xlim() # return the current xlim\n xlim((left, right)) # set the xlim to left, right\n xlim(left, right) # set the xlim to left, right\n \n If you do not specify args, you can pass *left* or *right* as kwargs,\n i.e.::\n \n xlim(right=3) # adjust the right leaving left unchanged\n xlim(left=1) # adjust the left leaving right unchanged\n \n Setting limits turns autoscaling off for the x-axis.\n \n Returns\n -------\n left, right\n A tuple of the new x-axis limits.\n \n Notes\n -----\n Calling this function with no arguments (e.g. ``xlim()``) is the pyplot\n equivalent of calling `~.Axes.get_xlim` on the current axes.\n Calling this function with arguments is the pyplot equivalent of calling\n `~.Axes.set_xlim` on the current axes. All arguments are passed though.\n \n xscale(value, **kwargs)\n Set the x-axis scale.\n \n Parameters\n ----------\n value : {\"linear\", \"log\", \"symlog\", \"logit\", ...}\n The axis scale type to apply.\n \n **kwargs\n Different keyword arguments are accepted, depending on the scale.\n See the respective class keyword arguments:\n \n - `matplotlib.scale.LinearScale`\n - `matplotlib.scale.LogScale`\n - `matplotlib.scale.SymmetricalLogScale`\n - `matplotlib.scale.LogitScale`\n \n Notes\n -----\n By default, Matplotlib supports the above mentioned scales.\n Additionally, custom scales may be registered using\n `matplotlib.scale.register_scale`. These scales can then also\n be used here.\n \n xticks(ticks=None, labels=None, **kwargs)\n Get or set the current tick locations and labels of the x-axis.\n \n Pass no arguments to return the current values without modifying them.\n \n Parameters\n ----------\n ticks : array-like, optional\n The list of xtick locations. Passing an empty list removes all xticks.\n labels : array-like, optional\n The labels to place at the given *ticks* locations. This argument can\n only be passed if *ticks* is passed as well.\n **kwargs\n `.Text` properties can be used to control the appearance of the labels.\n \n Returns\n -------\n locs\n The list of xtick locations.\n labels\n The list of xlabel `.Text` objects.\n \n Notes\n -----\n Calling this function with no arguments (e.g. ``xticks()``) is the pyplot\n equivalent of calling `~.Axes.get_xticks` and `~.Axes.get_xticklabels` on\n the current axes.\n Calling this function with arguments is the pyplot equivalent of calling\n `~.Axes.set_xticks` and `~.Axes.set_xticklabels` on the current axes.\n \n Examples\n --------\n >>> locs, labels = xticks() # Get the current locations and labels.\n >>> xticks(np.arange(0, 1, step=0.2)) # Set label locations.\n >>> xticks(np.arange(3), ['Tom', 'Dick', 'Sue']) # Set text labels.\n >>> xticks([0, 1, 2], ['January', 'February', 'March'],\n ... rotation=20) # Set text labels and properties.\n >>> xticks([]) # Disable xticks.\n \n ylabel(ylabel, fontdict=None, labelpad=None, **kwargs)\n Set the label for the y-axis.\n \n Parameters\n ----------\n ylabel : str\n The label text.\n \n labelpad : scalar, optional, default: None\n Spacing in points from the axes bounding box including ticks\n and tick labels.\n \n Other Parameters\n ----------------\n **kwargs : `.Text` properties\n `.Text` properties control the appearance of the label.\n \n See also\n --------\n text : for information on how override and the optional args work\n \n ylim(*args, **kwargs)\n Get or set the y-limits of the current axes.\n \n Call signatures::\n \n bottom, top = ylim() # return the current ylim\n ylim((bottom, top)) # set the ylim to bottom, top\n ylim(bottom, top) # set the ylim to bottom, top\n \n If you do not specify args, you can alternatively pass *bottom* or\n *top* as kwargs, i.e.::\n \n ylim(top=3) # adjust the top leaving bottom unchanged\n ylim(bottom=1) # adjust the bottom leaving top unchanged\n \n Setting limits turns autoscaling off for the y-axis.\n \n Returns\n -------\n bottom, top\n A tuple of the new y-axis limits.\n \n Notes\n -----\n Calling this function with no arguments (e.g. ``ylim()``) is the pyplot\n equivalent of calling `~.Axes.get_ylim` on the current axes.\n Calling this function with arguments is the pyplot equivalent of calling\n `~.Axes.set_ylim` on the current axes. All arguments are passed though.\n \n yscale(value, **kwargs)\n Set the y-axis scale.\n \n Parameters\n ----------\n value : {\"linear\", \"log\", \"symlog\", \"logit\", ...}\n The axis scale type to apply.\n \n **kwargs\n Different keyword arguments are accepted, depending on the scale.\n See the respective class keyword arguments:\n \n - `matplotlib.scale.LinearScale`\n - `matplotlib.scale.LogScale`\n - `matplotlib.scale.SymmetricalLogScale`\n - `matplotlib.scale.LogitScale`\n \n Notes\n -----\n By default, Matplotlib supports the above mentioned scales.\n Additionally, custom scales may be registered using\n `matplotlib.scale.register_scale`. These scales can then also\n be used here.\n \n yticks(ticks=None, labels=None, **kwargs)\n Get or set the current tick locations and labels of the y-axis.\n \n Pass no arguments to return the current values without modifying them.\n \n Parameters\n ----------\n ticks : array-like, optional\n The list of ytick locations. Passing an empty list removes all yticks.\n labels : array-like, optional\n The labels to place at the given *ticks* locations. This argument can\n only be passed if *ticks* is passed as well.\n **kwargs\n `.Text` properties can be used to control the appearance of the labels.\n \n Returns\n -------\n locs\n The list of ytick locations.\n labels\n The list of ylabel `.Text` objects.\n \n Notes\n -----\n Calling this function with no arguments (e.g. ``yticks()``) is the pyplot\n equivalent of calling `~.Axes.get_yticks` and `~.Axes.get_yticklabels` on\n the current axes.\n Calling this function with arguments is the pyplot equivalent of calling\n `~.Axes.set_yticks` and `~.Axes.set_yticklabels` on the current axes.\n \n Examples\n --------\n >>> locs, labels = yticks() # Get the current locations and labels.\n >>> yticks(np.arange(0, 1, step=0.2)) # Set label locations.\n >>> yticks(np.arange(3), ['Tom', 'Dick', 'Sue']) # Set text labels.\n >>> yticks([0, 1, 2], ['January', 'February', 'March'],\n ... rotation=45) # Set text labels and properties.\n >>> yticks([]) # Disable yticks.\n\nDATA\n rcParams = RcParams({'_internal.classic_mode': False,\n ...nor.widt...\n rcParamsDefault = RcParams({'_internal.classic_mode': False,\n ...n...\n rcParamsOrig = RcParams({'_internal.classic_mode': False,\n ...nor....\n\nFILE\n /opt/conda/envs/Python-3.7-main/lib/python3.7/site-packages/matplotlib/pyplot.py\n\n\n",
"name": "stdout"
}
]
},
{
"metadata": {},
"cell_type": "code",
"source": "plt.plot(MJdat[['Points per game']],label='Michel Jordan')\nplt.legend()\nplt.xlabel('years')\nplt.ylabel('Points per game')\nplt.show()",
"execution_count": 11,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": "<Figure size 432x288 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEGCAYAAAB/+QKOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3dd3yV9fXA8c/JICGQwQgZBCQisjJYIooUFUWC4LYVq2Kp2tZt1aodtlbbuq1V6x60RdQ6foosKUPFAQKyiSyBhBnIYCQh6/z+uDcY8Sa5Ife5Iznv1+u+cu9zn+/znECSc79bVBVjjDHmaGGBDsAYY0xwsgRhjDHGI0sQxhhjPLIEYYwxxiNLEMYYYzyKCHQAvtS5c2ft0aNHoMMwxpiQsXTp0r2qmujpvRaVIHr06MGSJUsCHYYxxoQMEdla33uOJQgRiQY+AaLc93lbVf8oIm8Cvd2nJQDFqjrAQ/ktwAGgGqhS1SFOxWqMMeaHnKxBHAbOVNWDIhIJLBSRmar6k9oTROQxoKSBa5yhqnsdjNEYY0w9HEsQ6pqifdD9MtL9ODJtW0QE+DFwplMxGGOMOXaO9kGISDiwFDgBeEZVF9V5ewSwW1U31FNcgY9ERIHnVfUFJ2M1xvhGZWUl+fn5lJeXBzoUU0d0dDRpaWlERkZ6XcbRBKGq1cAAEUkA3hORDFVd7X57AjC1geLDVXWHiHQB5ohIrqp+cvRJInIdcB1A9+7dffwdGGOaKj8/n9jYWHr06IGrocAEmqqyb98+8vPzSU9P97qcX+ZBqGoxsAAYAyAiEcBFwJsNlNnh/roHeA8YWs95L6jqEFUdkpjocaSWMcaPysvL6dSpkyWHICIidOrUqcm1OscShIgkumsOiEhb4Cwg1/32WUCuqubXU7adiMTWPgdGA6s9nWuMCT6WHILPsfyfOFmDSAHmi8hK4Ctgjqp+6H7vMo5qXhKRVBGZ4X6ZhGvU0wpgMTBdVWc5GGvI2FlSxttL87Fl2o0xTnMsQajqSlUdqKpZqpqhqn+u897VqvrcUefvUNWx7uebVTXb/eivqn9xKs5Q8/qibdzx3xU8Pmd9oEMxJmiJCFdeeeWR11VVVSQmJjJu3DgAPvjgAx588MF6y2/ZsoWMjIwm3fNPf/oTjz76qNfHvXUssfhKi5pJ3Rps3VcKwFPzNpIUF80Vw44LcETGBJ927dqxevVqysrKaNu2LXPmzKFr165H3j/vvPM477zzAhhh/aqqqoiICI4/zbZYX4jJKyrl5PSOjOrThXvfX83sNbsCHZIxQSknJ4fp06cDMHXqVCZMmHDkvddee40bb7wRgN27d3PhhReSnZ1NdnY2n3/+OQDV1dVce+219O/fn9GjR1NWVgbApk2bGDNmDIMHD2bEiBHk5ubireXLlzNs2DCysrK48MILKSoqAuD000/nt7/9LSNHjuTJJ59k6dKlZGdnc8opp/DMM88cKb9lyxZGjBjBoEGDGDRo0JFYFyxYwOmnn84ll1xCnz59+OlPf+qTZujgSFPGa3mFpZzdL4k/jOvH5S8u4uapX/Ofa07mpB4dAx2aMT9w37Q1rN2x36fX7Jcaxx/H92/0vMsuu4w///nPjBs3jpUrVzJp0iQ+/fTTH5x38803M3LkSN577z2qq6s5ePAgRUVFbNiwgalTp/Liiy/y4x//mHfeeYcrrriC6667jueee45evXqxaNEirr/+eubNm+dV7FdddRVPPfUUI0eO5N577+W+++7j73//OwDFxcV8/PHHAGRlZR0578477zxSvkuXLsyZM4fo6Gg2bNjAhAkTjqw/9/XXX7NmzRpSU1MZPnw4n332GaeddppXcdXHahAhpLSiir0HK0jrEENMmwheufokuia05eevfcWG3QcCHZ4xQSUrK4stW7YwdepUxo4dW+958+bN41e/+hUA4eHhxMfHA5Cens6AAa5l4gYPHsyWLVs4ePAgn3/+OZdeeikDBgzgF7/4BTt37vQqnpKSEoqLixk5ciQAEydO5JNPvpva9ZOf/MTjeXX7UiorK7n22mvJzMzk0ksvZe3atUfeGzp0KGlpaYSFhTFgwAC2bNniVVwNsRpECMkrdFVxu3eMAaBjuzZMnjSUi579nImvLOad608lJb5tIEM05nu8+aTvpPPOO4877riDBQsWsG/fviaVjYqKOvI8PDycsrIyampqSEhIYPny5b4OlXbt2gGuSW31DUl94oknSEpKYsWKFdTU1BAdHV1vvFVVVc2OyWoQISSv0NVB3c2dIGqfv3r1Sewvr+LqV76ipKwyUOEZE3QmTZrEvffeS2ZmZr3njBo1imeffRZw9Tvs319/k1hcXBzp6en897//BVx/zFesWOFVLPHx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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "<h2 id=\"Section_4\"> How to submit </h2>\n"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "<p>Once you complete your notebook you will have to share it to be marked. Select the icon on the top right a marked in red in the image below, a dialogue box should open, enable the option marked in red in the image below.</p>\n\n<p><img height=\"400\" width=\"500\" src=\"https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBMDeveloperSkillsNetwork-PY0101EN-SkillsNetwork/labs/FinalModule_edX/images/FA1.PNG\" alt=\"share notebook\"></p>\n<p></p>\n\n<p>Once the option is enabled select the option all\u00a0content excluding sensitive code cells and you can then share the notebook\u00a0 via a\u00a0 URL as shown in the following image:</p>\n<p style=\"text-align: center;\"> <img height=\"400\" width=\"500\" src=\"https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBMDeveloperSkillsNetwork-PY0101EN-SkillsNetwork/labs/FinalModule_edX/images/FA2.PNG\" alt=\"share notebook\"> </p>\n"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## Authors\n\n<a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\">Joseph Santarcangelo</a> \n\nJoseph Santarcangelo has a PhD in Electrical Engineering, his research focused on using machine learning, signal processing, and computer vision to determine how videos impact human cognition. Joseph has been working for IBM since he completed his PhD.\n\n## Other contributors\n\n<a href=\"https://www.linkedin.com/in/michelleccarey/\">Michelle Carey</a>\n\n<a href=\"www.linkedin.com/in/jiahui-mavis-zhou-a4537814a\">Mavis Zhou</a> \n\n## Change Log\n\n| Date (YYYY-MM-DD) | Version | Changed By | Change Description |\n| ----------------- | ------- | ---------- | ---------------------------------- |\n| 2020-09-01 | 2.0 | Lavanya | Moved lab to course repo in GitLab |\n\n<hr>\n\n## <h3 align=\"center\"> \u00a9 IBM Corporation 2020. All rights reserved. <h3/>\n"
},
{
"metadata": {},
"cell_type": "code",
"source": "",
"execution_count": null,
"outputs": []
}
],
"metadata": {
"kernelspec": {
"name": "python3",
"display_name": "Python 3.7",
"language": "python"
},
"language_info": {
"name": "python",
"version": "3.7.10",
"mimetype": "text/x-python",
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"pygments_lexer": "ipython3",
"nbconvert_exporter": "python",
"file_extension": ".py"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment