Skip to content Skip to sidebar Skip to footer

How To Plot A Line Over A Bar Chart

I am trying to plot a line over a bar chart, but when I plotted the line the bar chart disappeared - and so did my x index values. Can anyone help me plot the line and the bar in t

Solution 1:

I have done this using plotly. I have modified the Deaths to increase the value so that the line graph is seen.

DataFrame:

 Date  Deaths  Cases
0   2020-03-01       5     14
1   2020-03-02       3     13
2   2020-03-03       6     22
3   2020-03-04       9     24
4   2020-03-05       5     26
5   2020-03-06       2     41
6   2020-03-07      10     28
7   2020-03-08       2     63
8   2020-03-09      10    122
9   2020-03-10      15    155
10  2020-03-11      20    200
11  2020-03-12      15    269
12  2020-03-13      20    360
13  2020-03-14      30    364
14  2020-03-15      40    462
15  2020-03-16     150    702
16  2020-03-17      70    766
17  2020-03-18      50    861
18  2020-03-19      30    738
19  2020-03-20     100    933
from plotly.subplots import make_subplots
import plotly.graph_objects as go
import pandas as pd
import numpy as np

df = pd.read_csv("a.csv")
fig = make_subplots(1,1)

fig.add_trace(go.Bar(x=df['Date'], y=df['Cases'],
                     name='Cases',
                     marker_color = 'yellow',
                     opacity=0.4,
                     marker_line_color='rgb(8,48,107)',
                     marker_line_width=2),
              row = 1, col = 1)

fig.add_trace(go.Scatter(x=df['Date'], y=df['Deaths'], line=dict(color='red'), name='Deaths'),
              row = 1, col = 1)

fig.show()

Diagram: enter image description here

Using pandas plotting

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv("a.csv")

fig, ax = plt.subplots(figsize = (15,8))
df.plot(x = 'Date', y = ['Deaths'], kind = 'line', ax = ax)
df.plot(x = 'Date', y= ['Cases'], kind = 'bar', ax = ax, colormap="RdYlBu")

enter image description here

Update: To use Date as index

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv("a.csv")
df.set_index("Date", inplace=True)

fig, ax = plt.subplots(figsize = (15,8))
df.plot( y = ['Deaths'], kind = 'line', ax = ax)
df.plot( y= ['Cases'], kind = 'bar', ax = ax, colormap="RdYlBu")

Dataframe with Date as index. Plotting this will give the same plot as above.

            Deaths  Cases
Date
2020-03-01       5     14
2020-03-02       3     13
2020-03-03       6     22
2020-03-04       9     24
2020-03-05       5     26
2020-03-06       2     41
2020-03-07      10     28
2020-03-08       2     63
2020-03-09      10    122
2020-03-10      15    155
2020-03-11      20    200
2020-03-12      15    269
2020-03-13      20    360

Post a Comment for "How To Plot A Line Over A Bar Chart"