diff --git a/notebooks/horizontal-bar-charts.md b/notebooks/horizontal-bar-charts.md
index 23c6c6c39..32666fc5c 100644
--- a/notebooks/horizontal-bar-charts.md
+++ b/notebooks/horizontal-bar-charts.md
@@ -8,9 +8,19 @@ jupyter:
format_version: '1.1'
jupytext_version: 1.1.1
kernelspec:
- display_name: Python 2
+ display_name: Python 3
language: python
- name: python2
+ name: python3
+ language_info:
+ codemirror_mode:
+ name: ipython
+ version: 3
+ file_extension: .py
+ mimetype: text/x-python
+ name: python
+ nbconvert_exporter: python
+ pygments_lexer: ipython3
+ version: 3.6.7
plotly:
description: How to make horizontal bar charts in Python with Plotly.
display_as: basic
@@ -24,80 +34,94 @@ jupyter:
permalink: python/horizontal-bar-charts/
thumbnail: thumbnail/horizontal-bar.jpg
title: Horizontal Bar Charts | plotly
+ v4upgrade: true
---
-#### New to Plotly?
-Plotly's Python library is free and open source! [Get started](https://plot.ly/python/getting-started/) by downloading the client and [reading the primer](https://plot.ly/python/getting-started/).
-
You can set up Plotly to work in [online](https://plot.ly/python/getting-started/#initialization-for-online-plotting) or [offline](https://plot.ly/python/getting-started/#initialization-for-offline-plotting) mode, or in [jupyter notebooks](https://plot.ly/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.
+See more examples of bar charts (including vertical bar charts) and styling options [here](https://plot.ly/python/bar-charts/).
+
+
+### Horizontal Bar Chart with plotly express
+
+Plotly express functions take as argument a tidy [pandas DataFrame](https://pandas.pydata.org/pandas-docs/stable/getting_started/10min.html). For a horizontal bar char, use the `px.bar` function with `orientation='h'`.
+
+
+#### Basic Horizontal Bar Chart with plotly express
+
+
+```python
+import plotly.express as px
+tips = px.data.tips()
+fig = px.bar(tips, x="total_bill", y="day", orientation='h')
+fig.show()
+```
+
+#### Configure horizontal bar chart
+
+In this example a column is used to color the bars, and we add the information from other columns to the hover data.
```python
-import plotly
-plotly.__version__
+import plotly.express as px
+tips = px.data.tips()
+fig = px.bar(tips, x="total_bill", y="sex", color='day', orientation='h',
+ hover_data=["tip", "size"],
+ height=400,
+ title='Restaurant bills')
+fig.show()
```
+### Horizontal Bar Chart with go.Bar
+
+When data are not available as a tidy dataframe, you can use the more generic function `go.Bar` from `plotly.graph_objects`. All the options of `go.Bar` are documented in the reference https://plot.ly/python/reference/#bar
+
+
#### Basic Horizontal Bar Chart
```python
-import plotly.plotly as py
-import plotly.graph_objs as go
+import plotly.graph_objects as go
-data = [go.Bar(
+fig = go.Figure(go.Bar(
x=[20, 14, 23],
y=['giraffes', 'orangutans', 'monkeys'],
- orientation = 'h'
-)]
+ orientation='h'))
-py.iplot(data, filename='horizontal-bar')
+fig.show()
```
### Colored Horizontal Bar Chart
```python
-import plotly.plotly as py
-import plotly.graph_objs as go
+import plotly.graph_objects as go
-trace1 = go.Bar(
+fig = go.Figure()
+fig.add_trace(go.Bar(
y=['giraffes', 'orangutans', 'monkeys'],
x=[20, 14, 23],
name='SF Zoo',
- orientation = 'h',
- marker = dict(
- color = 'rgba(246, 78, 139, 0.6)',
- line = dict(
- color = 'rgba(246, 78, 139, 1.0)',
- width = 3)
+ orientation='h',
+ marker=dict(
+ color='rgba(246, 78, 139, 0.6)',
+ line=dict(color='rgba(246, 78, 139, 1.0)', width=3)
)
-)
-trace2 = go.Bar(
+))
+fig.add_trace(go.Bar(
y=['giraffes', 'orangutans', 'monkeys'],
x=[12, 18, 29],
name='LA Zoo',
- orientation = 'h',
- marker = dict(
- color = 'rgba(58, 71, 80, 0.6)',
- line = dict(
- color = 'rgba(58, 71, 80, 1.0)',
- width = 3)
+ orientation='h',
+ marker=dict(
+ color='rgba(58, 71, 80, 0.6)',
+ line=dict(color='rgba(58, 71, 80, 1.0)', width=3)
)
-)
-
-data = [trace1, trace2]
-layout = go.Layout(
- barmode='stack'
-)
+))
-fig = go.Figure(data=data, layout=layout)
-py.iplot(fig, filename='marker-h-bar')
+fig.update_layout(barmode='stack')
+fig.show()
```
### Color Palette for Bar Chart
```python
-import plotly.plotly as py
-import plotly.graph_objs as go
+import plotly.graph_objects as go
top_labels = ['Strongly
agree', 'Agree', 'Neutral', 'Disagree',
'Strongly
disagree']
@@ -117,24 +141,20 @@ y_data = ['The course was effectively
organized',
'my
ability to think critically about
the subject',
'I would recommend this
course to a friend']
-
-traces = []
+fig = go.Figure()
for i in range(0, len(x_data[0])):
for xd, yd in zip(x_data, y_data):
- traces.append(go.Bar(
- x=[xd[i]],
- y=[yd],
+ fig.add_trace(go.Bar(
+ x=[xd[i]], y=[yd],
orientation='h',
marker=dict(
color=colors[i],
- line=dict(
- color='rgb(248, 248, 249)',
- width=1)
+ line=dict(color='rgb(248, 248, 249)', width=1)
)
))
-layout = go.Layout(
+fig.update_layout(
xaxis=dict(
showgrid=False,
showline=False,
@@ -151,12 +171,7 @@ layout = go.Layout(
barmode='stack',
paper_bgcolor='rgb(248, 248, 255)',
plot_bgcolor='rgb(248, 248, 255)',
- margin=dict(
- l=120,
- r=10,
- t=140,
- b=80
- ),
+ margin=dict(l=120, r=10, t=140, b=80),
showlegend=False,
)
@@ -205,18 +220,16 @@ for yd, xd in zip(y_data, x_data):
showarrow=False))
space += xd[i]
-layout['annotations'] = annotations
+fig.update_layout(annotations=annotations)
-fig = go.Figure(data=traces, layout=layout)
-py.iplot(fig, filename='bar-colorscale')
+fig.show()
```
### Bar Chart with Line Plot
```python
-import plotly.plotly as py
-import plotly.graph_objs as go
-from plotly import tools
+import plotly.graph_objects as go
+from plotly.subplots import make_subplots
import numpy as np
@@ -226,14 +239,17 @@ y_saving = [1.3586, 2.2623000000000002, 4.9821999999999997, 6.5096999999999996,
y_net_worth = [93453.919999999998, 81666.570000000007, 69889.619999999995,
78381.529999999999, 141395.29999999999, 92969.020000000004,
66090.179999999993, 122379.3]
-x_saving = ['Japan', 'United Kingdom', 'Canada', 'Netherlands',
- 'United States', 'Belgium', 'Sweden', 'Switzerland']
-x_net_worth = ['Japan', 'United Kingdom', 'Canada', 'Netherlands',
- 'United States', 'Belgium', 'Sweden', 'Switzerland'
- ]
-trace0 = go.Bar(
+x = ['Japan', 'United Kingdom', 'Canada', 'Netherlands',
+ 'United States', 'Belgium', 'Sweden', 'Switzerland']
+
+
+# Creating two subplots
+fig = make_subplots(rows=1, cols=2, specs=[[{}, {}]], shared_xaxes=True,
+ shared_yaxes=False, vertical_spacing=0.001)
+
+fig.append_trace(go.Bar(
x=y_saving,
- y=x_saving,
+ y=x,
marker=dict(
color='rgba(50, 171, 96, 0.6)',
line=dict(
@@ -242,16 +258,16 @@ trace0 = go.Bar(
),
name='Household savings, percentage of household disposable income',
orientation='h',
-)
-trace1 = go.Scatter(
- x=y_net_worth,
- y=x_net_worth,
+), 1, 1)
+
+fig.append_trace(go.Scatter(
+ x=y_net_worth, y=x,
mode='lines+markers',
- line=dict(
- color='rgb(128, 0, 128)'),
+ line_color='rgb(128, 0, 128)',
name='Household net worth, Million USD/capita',
-)
-layout = dict(
+), 1, 2)
+
+fig.update_layout(
title='Household savings & net worth for eight OECD countries',
yaxis=dict(
showgrid=False,
@@ -283,19 +299,8 @@ layout = dict(
side='top',
dtick=25000,
),
- legend=dict(
- x=0.029,
- y=1.038,
- font=dict(
- size=10,
- ),
- ),
- margin=dict(
- l=100,
- r=20,
- t=70,
- b=70,
- ),
+ legend=dict(x=0.029, y=1.038, font_size=10),
+ margin=dict(l=100, r=20, t=70, b=70),
paper_bgcolor='rgb(248, 248, 255)',
plot_bgcolor='rgb(248, 248, 255)',
)
@@ -306,7 +311,7 @@ y_s = np.round(y_saving, decimals=2)
y_nw = np.rint(y_net_worth)
# Adding labels
-for ydn, yd, xd in zip(y_nw, y_s, x_saving):
+for ydn, yd, xd in zip(y_nw, y_s, x):
# labeling the scatter savings
annotations.append(dict(xref='x2', yref='y2',
y=xd, x=ydn - 20000,
@@ -328,44 +333,13 @@ annotations.append(dict(xref='paper', yref='paper',
'(2015), Household savings (indicator), ' +
'Household net worth (indicator). doi: ' +
'10.1787/cfc6f499-en (Accessed on 05 June 2015)',
- font=dict(family='Arial', size=10,
- color='rgb(150,150,150)'),
+ font=dict(family='Arial', size=10, color='rgb(150,150,150)'),
showarrow=False))
-layout['annotations'] = annotations
-
-# Creating two subplots
-fig = tools.make_subplots(rows=1, cols=2, specs=[[{}, {}]], shared_xaxes=True,
- shared_yaxes=False, vertical_spacing=0.001)
-
-fig.append_trace(trace0, 1, 1)
-fig.append_trace(trace1, 1, 2)
+fig.update_layout(annotations=annotations)
-fig['layout'].update(layout)
-py.iplot(fig, filename='oecd-networth-saving-bar-line')
+fig.show()
```
### Reference
See more examples of bar charts and styling options [here](https://plot.ly/python/bar-charts/).
See https://plot.ly/python/reference/#bar for more information and chart attribute options!
-
-```python
-from IPython.display import display, HTML
-
-display(HTML(''))
-display(HTML(''))
-
-#! pip install git+https://github.com/plotly/publisher.git --upgrade
-import publisher
-publisher.publish(
- 'horizontal-bars.ipynb', 'python/horizontal-bar-charts/', 'Horizontal Bar Charts | plotly',
- 'How to make horizontal bar charts in Python with Plotly.',
- title = 'Horizontal Bar Charts | plotly',
- name = 'Horizontal Bar Charts',
- thumbnail='thumbnail/horizontal-bar.jpg', language='python',
- has_thumbnail='true', display_as='basic', order=5,
- ipynb= '~notebook_demo/5')
-```
-
-```python
-
-```