Bar Charts in Python
How to make a bar chart in python. Seven examples of grouped, stacked, overlaid, and colored bar charts.
# Learn about API authentication here: https://plot.ly/python/getting-started
# Find your api_key here: https://plot.ly/settings/api
import plotly.plotly as py
import plotly.graph_objs as go
data = [
go.Bar(
x=['giraffes', 'orangutans', 'monkeys'],
y=[20, 14, 23]
)
]
plot_url = py.plot(data, filename='basic-bar')
# Learn about API authentication here: https://plot.ly/python/getting-started
# Find your api_key here: https://plot.ly/settings/api
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)
plot_url = py.plot(fig, filename='grouped-bar')
# Learn about API authentication here: https://plot.ly/python/getting-started
# Find your api_key here: https://plot.ly/settings/api
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)
plot_url = py.plot(fig, filename='stacked-bar')
# Learn about API authentication here: https://plot.ly/python/getting-started
# Find your api_key here: https://plot.ly/settings/api
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)
plot_url = py.plot(fig, filename='text-hover-bar')
# Learn about API authentication here: https://plot.ly/python/getting-started
# Find your api_key here: https://plot.ly/settings/api
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,
marker=dict(
color='rgb(158,202,225)',
line=dict(
color='rgb(8,48,107)',
width=1.5
),
),
opacity=0.6
)
]
layout = go.Layout(
annotations=[
dict(
x=xi,
y=yi,
text=str(yi),
xanchor='center',
yanchor='bottom',
showarrow=False,
) for xi, yi in zip(x, y)]
)
fig = go.Figure(data=data, layout=layout)
plot_url = py.plot(fig, filename='bar-direct-labels')
# Learn about API authentication here: https://plot.ly/python/getting-started
# Find your api_key here: https://plot.ly/settings/api
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(
# set x-axis' labels direction at 45 degree angle
tickangle=-45,
),
barmode='group',
)
fig = go.Figure(data=data, layout=layout)
plot_url = py.plot(fig, filename='angled-text-bar')
# Learn about API authentication here: https://plot.ly/python/getting-started
# Find your api_key here: https://plot.ly/settings/api
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)
plot_url = py.plot(fig, filename='color-bar')
# Learn about API authentication here: https://plot.ly/python/getting-started
# Find your api_key here: https://plot.ly/settings/api
import plotly.plotly as py
import plotly.graph_objs as go
data = [
go.Bar(
x=['Liam', 'Sophie', 'Jacob', 'Mia', 'William', 'Olivia'],
y=[8.0, 8.0, 12.0, 12.0, 13.0, 20.0],
text=['4.17 below the mean', '4.17 below the mean', '0.17 below the mean', '0.17 below the mean', '0.83 above the mean', '7.83 above the mean'],
marker=dict(
color='rgb(142, 124, 195)'
)
)
]
layout = go.Layout(
title='Number of graphs made this week',
font=dict(
family='Raleway, sans-serif'
),
showlegend=False,
xaxis=dict(
tickangle=-45
),
yaxis=dict(
zeroline=False,
gridwidth=2
),
bargap=0.05
)
fig = go.Figure(data=data, layout=layout)
plot_url = py.plot(fig, filename='bar-with-hover-text')
# Learn about API authentication here: https://plot.ly/python/getting-started
# Find your api_key here: https://plot.ly/settings/api
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)
plot_url = py.plot(fig, filename='style-bar')
# Learn about API authentication here: https://plot.ly/python/getting-started
# Find your api_key here: https://plot.ly/settings/api
import plotly.plotly as py
import plotly.graph_objs as go
x_data = ['Product<br>Revenue', 'Services<br>Revenue',
'Total<br>Revenue', 'Fixed<br>Costs',
'Variable<br>Costs', 'Total<br>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)',
width=600,
height=600,
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)
plot_url = py.plot(fig, filename='waterfall-bar-profit')