{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"provenance":[],"toc_visible":true,"authorship_tag":"ABX9TyO2cxS51NWNuTWJII9Rsbs0"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"markdown","source":["# Bar Charts\n","\n","We can create a bar chart using `px.bar()`. In the default settings, each row of the dataframe is represented as a rectangular mark.\n","\n","A few examples, using the `gapminder` data."],"metadata":{"id":"8ighpWnpcNx9"}},{"cell_type":"code","execution_count":1,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":446},"id":"xTcqKHegcL8R","executionInfo":{"status":"ok","timestamp":1706149658960,"user_tz":300,"elapsed":1762,"user":{"displayName":"Katherine Walden","userId":"17094108395123900917"}},"outputId":"05a8e9b6-6095-4818-bc75-343f3b593575"},"outputs":[{"output_type":"execute_result","data":{"text/plain":[" country continent year lifeExp pop gdpPercap iso_alpha iso_num\n","240 Canada Americas 1952 68.750 14785584 11367.16112 CAN 124\n","241 Canada Americas 1957 69.960 17010154 12489.95006 CAN 124\n","242 Canada Americas 1962 71.300 18985849 13462.48555 CAN 124\n","243 Canada Americas 1967 72.130 20819767 16076.58803 CAN 124\n","244 Canada Americas 1972 72.880 22284500 18970.57086 CAN 124\n","245 Canada Americas 1977 74.210 23796400 22090.88306 CAN 124\n","246 Canada Americas 1982 75.760 25201900 22898.79214 CAN 124\n","247 Canada Americas 1987 76.860 26549700 26626.51503 CAN 124\n","248 Canada Americas 1992 77.950 28523502 26342.88426 CAN 124\n","249 Canada Americas 1997 78.610 30305843 28954.92589 CAN 124\n","250 Canada Americas 2002 79.770 31902268 33328.96507 CAN 124\n","251 Canada Americas 2007 80.653 33390141 36319.23501 CAN 124"],"text/html":["\n","
\n","
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
countrycontinentyearlifeExppopgdpPercapiso_alphaiso_num
240CanadaAmericas195268.7501478558411367.16112CAN124
241CanadaAmericas195769.9601701015412489.95006CAN124
242CanadaAmericas196271.3001898584913462.48555CAN124
243CanadaAmericas196772.1302081976716076.58803CAN124
244CanadaAmericas197272.8802228450018970.57086CAN124
245CanadaAmericas197774.2102379640022090.88306CAN124
246CanadaAmericas198275.7602520190022898.79214CAN124
247CanadaAmericas198776.8602654970026626.51503CAN124
248CanadaAmericas199277.9502852350226342.88426CAN124
249CanadaAmericas199778.6103030584328954.92589CAN124
250CanadaAmericas200279.7703190226833328.96507CAN124
251CanadaAmericas200780.6533339014136319.23501CAN124
\n","
\n","
\n","\n","
\n"," \n","\n"," \n","\n"," \n","
\n","\n","\n","
\n"," \n","\n","\n","\n"," \n","
\n","
\n","
\n"]},"metadata":{},"execution_count":1}],"source":["import plotly.express as px # import statement\n","data = px.data.gapminder().query(\"country == 'Canada'\") # subset data\n","data # inspect data"]},{"cell_type":"code","source":["fig = px.bar(data, x='year', y='pop') # create figure\n","fig # show figure"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":542},"id":"eRMsbeg6ca9U","executionInfo":{"status":"ok","timestamp":1706149672677,"user_tz":300,"elapsed":4216,"user":{"displayName":"Katherine Walden","userId":"17094108395123900917"}},"outputId":"5587993a-77b2-44e4-ffbc-9a4799a928b3"},"execution_count":3,"outputs":[{"output_type":"display_data","data":{"text/html":["\n","\n","\n","
\n","
\n","\n",""]},"metadata":{}}]},{"cell_type":"markdown","source":["In this example, the `year` column is assigned as the `X` axis value, and the `pop` column is assigned as the `Y` axis value."],"metadata":{"id":"ul10TPgGcfqE"}},{"cell_type":"markdown","source":["## Stacked Bar Chart\n","s\n","We can also generate a stacked bar chart using `px.bar()`. Let's take a look at a stacked bar chart for sample data stored in two different formats. As we learned in the `pandas` lab, data can be stored in a long or wide form.\n","- ***Long-form data*** has one row per observation and one column per variable. Also known as tidy data.\n","- ***Wide-form data*** has one row per value of the first variable, and one column per value of the second value."],"metadata":{"id":"Uk7UnOgice2B"}},{"cell_type":"code","source":["data = px.data.gapminder() # load data\n","data.info() # inspect data"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"xFbYlnuMclOu","executionInfo":{"status":"ok","timestamp":1706149758414,"user_tz":300,"elapsed":121,"user":{"displayName":"Katherine Walden","userId":"17094108395123900917"}},"outputId":"bf505ebb-4dee-4722-dfa5-9d3bd1876322"},"execution_count":5,"outputs":[{"output_type":"stream","name":"stdout","text":["\n","RangeIndex: 1704 entries, 0 to 1703\n","Data columns (total 8 columns):\n"," # Column Non-Null Count Dtype \n","--- ------ -------------- ----- \n"," 0 country 1704 non-null object \n"," 1 continent 1704 non-null object \n"," 2 year 1704 non-null int64 \n"," 3 lifeExp 1704 non-null float64\n"," 4 pop 1704 non-null int64 \n"," 5 gdpPercap 1704 non-null float64\n"," 6 iso_alpha 1704 non-null object \n"," 7 iso_num 1704 non-null int64 \n","dtypes: float64(2), int64(3), object(3)\n","memory usage: 106.6+ KB\n"]}]},{"cell_type":"code","source":["fig = px.bar(data, x='continent', y='pop', color='country') # create figure\n","fig # show figure"],"metadata":{"id":"P1w6pu7kcu7n"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["## Grouped Bar Charts\n","\n","Setting `barmode` to `group` produces a grouped bar chart."],"metadata":{"id":"fGYw5OUMdJkk"}},{"cell_type":"code","source":["fig = px.bar(data, barmode='group', x='year', y='pop', color='continent') # create figure\n","fig # show figure"],"metadata":{"id":"jwx6FvkgdPOl"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["## Horizontal Bar Charts\n","\n","We can set the `orientation` attribute to `h` to produce a horizontal bar chart."],"metadata":{"id":"YXOoQuDndc98"}},{"cell_type":"code","source":["fig = px.bar(data, orientation='h', y='year', x='pop', color='continent') # create figure\n","fig # show figure"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":542},"id":"H2gnhX-7dgYj","executionInfo":{"status":"ok","timestamp":1706149962350,"user_tz":300,"elapsed":137,"user":{"displayName":"Katherine Walden","userId":"17094108395123900917"}},"outputId":"de52b5ac-db41-47a9-fac3-4c9807732ef1"},"execution_count":13,"outputs":[{"output_type":"display_data","data":{"text/html":["\n","\n","\n","
\n","
\n","\n",""]},"metadata":{}}]},{"cell_type":"markdown","source":["Remember in a horizontal bar chart, the `X` and `Y` axis values are the inverse of a vertical bar chart."],"metadata":{"id":"QqMXZqAndoF2"}},{"cell_type":"markdown","source":["## Additional Resources\n","\n","For more on bar charts in `plotly`:\n","- [`plotly`, Bar Charts in Python](https://plotly.com/python/bar-charts/)\n","- [`plotly`, Grouped Bar Chart](https://plotly.com/python/bar-charts/#grouped-bar-chart)\n","- [`plotly`, Stacked Bar Chart](https://plotly.com/python/bar-charts/#stacked-bar-chart)\n","- [`plotly`, Horizontal Bar Charts in Python](https://plotly.com/python/horizontal-bar-charts/)\n","- [`plotly.express.bar`](https://plotly.com/python-api-reference/generated/plotly.express.bar)\n","- [`plotly`, Python Figure Reference: `bar` Traces](https://plotly.com/python/reference/bar/)"],"metadata":{"id":"c1Y6-3OtdoTW"}}]}