#!/usr/bin/env python # coding: utf-8 # #### New to Plotly? # Plotly's Python library is free and open source! [Get started](https://plotly.com/python/getting-started/) by downloading the client and [reading the primer](https://plotly.com/python/getting-started/). #
You can set up Plotly to work in [online](https://plotly.com/python/getting-started/#initialization-for-online-plotting) or [offline](https://plotly.com/python/getting-started/#initialization-for-offline-plotting) mode, or in [jupyter notebooks](https://plotly.com/python/getting-started/#start-plotting-online). #
We also have a quick-reference [cheatsheet](https://images.plot.ly/plotly-documentation/images/python_cheat_sheet.pdf) (new!) to help you get started! # #### Version Check # Plotly's python package is updated frequently. Run `pip install plotly --upgrade` to use the latest version. # In[1]: import plotly plotly.__version__ # #### Basic Bar Chart # In[2]: import plotly.plotly as py import plotly.graph_objs as go data = [go.Bar( x=['giraffes', 'orangutans', 'monkeys'], y=[20, 14, 23] )] py.iplot(data, filename='basic-bar') # #### Grouped Bar Chart # In[3]: import plotly.plotly as py import plotly.graph_objs as go trace1 = go.Bar( x=['giraffes', 'orangutans', 'monkeys'], y=[20, 14, 23], name='SF Zoo' ) trace2 = go.Bar( x=['giraffes', 'orangutans', 'monkeys'], y=[12, 18, 29], name='LA Zoo' ) data = [trace1, trace2] layout = go.Layout( barmode='group' ) fig = go.Figure(data=data, layout=layout) py.iplot(fig, filename='grouped-bar') # ### Stacked Bar Chart # In[4]: import plotly.plotly as py import plotly.graph_objs as go trace1 = go.Bar( x=['giraffes', 'orangutans', 'monkeys'], y=[20, 14, 23], name='SF Zoo' ) trace2 = go.Bar( x=['giraffes', 'orangutans', 'monkeys'], y=[12, 18, 29], name='LA Zoo' ) data = [trace1, trace2] layout = go.Layout( barmode='stack' ) fig = go.Figure(data=data, layout=layout) py.iplot(fig, filename='stacked-bar') # ### Bar Chart with Hover Text # In[5]: import plotly.plotly as py import plotly.graph_objs as go trace0 = go.Bar( x=['Product A', 'Product B', 'Product C'], y=[20, 14, 23], text=['27% market share', '24% market share', '19% market share'], marker=dict( color='rgb(158,202,225)', line=dict( color='rgb(8,48,107)', width=1.5, ) ), opacity=0.6 ) data = [trace0] layout = go.Layout( title='January 2013 Sales Report', ) fig = go.Figure(data=data, layout=layout) py.iplot(fig, filename='text-hover-bar') # ### Bar Chart with Direct Labels # In[6]: import plotly.plotly as py import plotly.graph_objs as go x = ['Product A', 'Product B', 'Product C'] y = [20, 14, 23] data = [go.Bar( x=x, y=y, text=y, textposition = 'auto', marker=dict( color='rgb(158,202,225)', line=dict( color='rgb(8,48,107)', width=1.5), ), opacity=0.6 )] py.iplot(data, filename='bar-direct-labels') # ### Grouped Bar Chart with Direct Labels # In[7]: import plotly.plotly as py import plotly.graph_objs as go x = ['Product A', 'Product B', 'Product C'] y = [20, 14, 23] y2 = [16,12,27] trace1 = go.Bar( x=x, y=y, text=y, textposition = 'auto', marker=dict( color='rgb(158,202,225)', line=dict( color='rgb(8,48,107)', width=1.5), ), opacity=0.6 ) trace2 = go.Bar( x=x, y=y2, text=y2, textposition = 'auto', marker=dict( color='rgb(58,200,225)', line=dict( color='rgb(8,48,107)', width=1.5), ), opacity=0.6 ) data = [trace1,trace2] py.iplot(data, filename='grouped-bar-direct-labels') # ### Rotated Bar Chart Labels # In[8]: import plotly.plotly as py import plotly.graph_objs as go trace0 = go.Bar( x=['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], y=[20, 14, 25, 16, 18, 22, 19, 15, 12, 16, 14, 17], name='Primary Product', marker=dict( color='rgb(49,130,189)' ) ) trace1 = go.Bar( x=['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], y=[19, 14, 22, 14, 16, 19, 15, 14, 10, 12, 12, 16], name='Secondary Product', marker=dict( color='rgb(204,204,204)', ) ) data = [trace0, trace1] layout = go.Layout( xaxis=dict(tickangle=-45), barmode='group', ) fig = go.Figure(data=data, layout=layout) py.iplot(fig, filename='angled-text-bar') # ### Customizing Individual Bar Colors # In[9]: import plotly.plotly as py import plotly.graph_objs as go trace0 = go.Bar( x=['Feature A', 'Feature B', 'Feature C', 'Feature D', 'Feature E'], y=[20, 14, 23, 25, 22], marker=dict( color=['rgba(204,204,204,1)', 'rgba(222,45,38,0.8)', 'rgba(204,204,204,1)', 'rgba(204,204,204,1)', 'rgba(204,204,204,1)']), ) data = [trace0] layout = go.Layout( title='Least Used Feature', ) fig = go.Figure(data=data, layout=layout) py.iplot(fig, filename='color-bar') # ### Customizing Individual Bar Widths # In[10]: import plotly.plotly as py import plotly.graph_objs as go trace0 = go.Bar( x=[1, 2, 3, 5.5, 10], y=[10, 8, 6, 4, 2], width = [0.8, 0.8, 0.8, 3.5, 4] ) data = [trace0] fig = go.Figure(data=data) py.iplot(fig, filename='width-bar') # ### Customizing Individual Bar Base # In[11]: import plotly.plotly as py import plotly.graph_objs as go data = [ go.Bar( x = ['2016','2017','2018'], y = [500,600,700], base = [-500,-600,-700], marker = dict( color = 'red' ), name = 'expenses' ), go.Bar( x = ['2016','2017','2018'], y = [300,400,700], base = 0, marker = dict( color = 'blue' ), name = 'revenue' ) ] fig = go.Figure(data=data) py.iplot(fig, filename='base-bar') # ### Colored and Styled Bar Chart # In[12]: import plotly.plotly as py import plotly.graph_objs as go trace1 = go.Bar( x=[1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012], y=[219, 146, 112, 127, 124, 180, 236, 207, 236, 263, 350, 430, 474, 526, 488, 537, 500, 439], name='Rest of world', marker=dict( color='rgb(55, 83, 109)' ) ) trace2 = go.Bar( x=[1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012], y=[16, 13, 10, 11, 28, 37, 43, 55, 56, 88, 105, 156, 270, 299, 340, 403, 549, 499], name='China', marker=dict( color='rgb(26, 118, 255)' ) ) data = [trace1, trace2] layout = go.Layout( title='US Export of Plastic Scrap', xaxis=dict( tickfont=dict( size=14, color='rgb(107, 107, 107)' ) ), yaxis=dict( title='USD (millions)', titlefont=dict( size=16, color='rgb(107, 107, 107)' ), tickfont=dict( size=14, color='rgb(107, 107, 107)' ) ), legend=dict( x=0, y=1.0, bgcolor='rgba(255, 255, 255, 0)', bordercolor='rgba(255, 255, 255, 0)' ), barmode='group', bargap=0.15, bargroupgap=0.1 ) fig = go.Figure(data=data, layout=layout) py.iplot(fig, filename='style-bar') # ### Waterfall Bar Chart # In[13]: import plotly.plotly as py import plotly.graph_objs as go x_data = ['Product
Revenue', 'Services
Revenue', 'Total
Revenue', 'Fixed
Costs', 'Variable
Costs', 'Total
Costs', 'Total'] y_data = [400, 660, 660, 590, 400, 400, 340] text = ['$430K', '$260K', '$690K', '$-120K', '$-200K', '$-320K', '$370K'] # Base trace0 = go.Bar( x=x_data, y=[0, 430, 0, 570, 370, 370, 0], marker=dict( color='rgba(1,1,1, 0.0)', ) ) # Revenue trace1 = go.Bar( x=x_data, y=[430, 260, 690, 0, 0, 0, 0], marker=dict( color='rgba(55, 128, 191, 0.7)', line=dict( color='rgba(55, 128, 191, 1.0)', width=2, ) ) ) # Costs trace2 = go.Bar( x=x_data, y=[0, 0, 0, 120, 200, 320, 0], marker=dict( color='rgba(219, 64, 82, 0.7)', line=dict( color='rgba(219, 64, 82, 1.0)', width=2, ) ) ) # Profit trace3 = go.Bar( x=x_data, y=[0, 0, 0, 0, 0, 0, 370], marker=dict( color='rgba(50, 171, 96, 0.7)', line=dict( color='rgba(50, 171, 96, 1.0)', width=2, ) ) ) data = [trace0, trace1, trace2, trace3] layout = go.Layout( title='Annual Profit- 2015', barmode='stack', paper_bgcolor='rgba(245, 246, 249, 1)', plot_bgcolor='rgba(245, 246, 249, 1)', showlegend=False ) annotations = [] for i in range(0, 7): annotations.append(dict(x=x_data[i], y=y_data[i], text=text[i], font=dict(family='Arial', size=14, color='rgba(245, 246, 249, 1)'), showarrow=False,)) layout['annotations'] = annotations fig = go.Figure(data=data, layout=layout) py.iplot(fig, filename='waterfall-bar-profit') # ### Bar Chart with Relative Barmode # In[14]: x = [1, 2, 3, 4] trace1 = { 'x': x, 'y': [1, 4, 9, 16], 'name': 'Trace1', 'type': 'bar' }; trace2 = { 'x': x, 'y': [6, -8, -4.5, 8], 'name': 'Trace2', 'type': 'bar' }; trace3 = { 'x': x, 'y': [-15, -3, 4.5, -8], 'name': 'Trace3', 'type': 'bar' } trace4 = { 'x': x, 'y': [-1, 3, -3, -4], 'name': 'Trace4', 'type': 'bar' } data = [trace1, trace2, trace3, trace4]; layout = { 'xaxis': {'title': 'X axis'}, 'yaxis': {'title': 'Y axis'}, 'barmode': 'relative', 'title': 'Relative Barmode' }; py.iplot({'data': data, 'layout': layout}, filename='barmode-relative') # ### Horizontal Bar Charts # See examples of horizontal bar charts [here](https://plotly.com/python/horizontal-bar-charts/). # ### Dash Example # [Dash](https://plotly.com/products/dash/) is an Open Source Python library which can help you convert plotly figures into a reactive, web-based application. Below is a simple example of a dashboard created using Dash. Its [source code](https://github.com/plotly/simple-example-chart-apps/tree/master/dash-barplot) can easily be deployed to a PaaS. # In[1]: from IPython.display import IFrame IFrame(src= "https://dash-simple-apps.plotly.host/dash-barplot/", width="100%", height="650px", frameBorder="0") # In[2]: from IPython.display import IFrame IFrame(src= "https://dash-simple-apps.plotly.host/dash-barplot/code", width="80%", height=500, frameBorder="0") # ### Reference # See https://plotly.com/python/reference/#bar for more information and chart attribute options! # In[4]: from IPython.display import display, HTML display(HTML('')) display(HTML('')) #! pip install git+https://github.com/plotly/publisher.git --upgrade import publisher publisher.publish( 'bars.ipynb', 'python/bar-charts/', 'Python Bar Charts | plotly', 'How to make Bar Charts in Python with Plotly.', title = 'Bar Charts | plotly', name = 'Bar Charts', thumbnail='thumbnail/bar.jpg', language='python', page_type='example_index', has_thumbnail='true', display_as='basic', order=4, ipynb= '~notebook_demo/186')