繁体   English   中英

如何在条形图上绘制一条线 plot

[英]How to plot a line over a bar chart

我正在尝试 plot 在条形图上画一条线,但是当我绘制这条线时,条形图消失了 - 我的 x 索引值也消失了。 谁能帮我 plot 同一图中的线和条? 谢谢你。 我相信,我的问题是折线图和条形图相互压倒——但我希望它们共存。

plt.figure()
totalconfirm['Cases'].plot(kind='bar', rot=15, title="Cases per Day in all Michigan Counties", color='r', label = 'Confirmed Cases')
totalprob['Cases'].plot(kind = 'bar', rot=15, bottom=totalconfirm['Cases'], color = 'b', label = 'Probable Cases')
totalconfirm['Deaths'].plot(color = 'black', label = 'Deaths')

ax = plt.gca()
ax.xaxis.set_major_locator(plt.MaxNLocator(10)) 

ax.text(0.05, 0.95, "Total Tests: " + str(totaltotaltest), fontsize=10, transform=ax.transAxes,
        verticalalignment='top', bbox = dict(boxstyle='round', facecolor='wheat', alpha=0.5))

ax.set_xticklabels(df.index.format(), rotation='vertical', size=5)
plt.locator_params(axis='x', nbins=30)

plt.legend(loc="upper right")
plt.show()

此外,如何将此文本框移动到图例下方的右侧?

在此处输入图像描述

Have looked at matplotlib plot bar and line charts together , Pandas plot bar chart over line it didn't cover what I wanted I think.

数据集:

Date
2020-03-01     0
2020-03-02     0
2020-03-03     0
2020-03-04     0
2020-03-05     0
2020-03-06     0
2020-03-07     0
2020-03-08     0
2020-03-09     0
2020-03-10     0
2020-03-11     0
2020-03-12     0
2020-03-13     0
2020-03-14     0
2020-03-15     0
2020-03-16     1
2020-03-17     0
2020-03-18     3
2020-03-19     5
2020-03-20     2
2020-03-21     8
2020-03-22    13
2020-03-23    21
2020-03-24    25
2020-03-25    24
2020-03-26    46
2020-03-27    49
2020-03-28    66
2020-03-29    62
2020-03-30    80
              ..
2020-06-19    11
2020-06-20     8
2020-06-21     8
2020-06-22    14
2020-06-23     9
2020-06-24     6
2020-06-25     8
2020-06-26     6
2020-06-27    11
2020-06-28     7
2020-06-29     7
2020-06-30     6
2020-07-01     7
2020-07-02    10
2020-07-03     9
2020-07-04     6
2020-07-05     5
2020-07-06     7
2020-07-07    10
2020-07-08     7
2020-07-09     8
2020-07-10     5
2020-07-11     7
2020-07-12     6
2020-07-13     4
2020-07-14     0
2020-07-15     6
2020-07-16     2
2020-07-17     3
2020-07-18     0
Name: Deaths, dtype: int64
Date
2020-03-01      14
2020-03-02      13
2020-03-03      22
2020-03-04      24
2020-03-05      26
2020-03-06      41
2020-03-07      48
2020-03-08      63
2020-03-09     122
2020-03-10     155
2020-03-11     200
2020-03-12     269
2020-03-13     360
2020-03-14     364
2020-03-15     462
2020-03-16     702
2020-03-17     766
2020-03-18     861
2020-03-19     738
2020-03-20     933
2020-03-21     784
2020-03-22     793
2020-03-23    1208
2020-03-24    1075
2020-03-25    1160
2020-03-26    1128
2020-03-27    1289
2020-03-28    1041
2020-03-29     893
2020-03-30    1532
              ... 
2020-06-19     285
2020-06-20     189
2020-06-21     227
2020-06-22     398
2020-06-23     441
2020-06-24     419
2020-06-25     386
2020-06-26     368
2020-06-27     296
2020-06-28     304
2020-06-29     482
2020-06-30     481
2020-07-01     539
2020-07-02     470
2020-07-03     397
2020-07-04     273
2020-07-05     374
2020-07-06     605
2020-07-07     554
2020-07-08     607
2020-07-09     509
2020-07-10     478
2020-07-11     276
2020-07-12     280
2020-07-13     513
2020-07-14     382
2020-07-15     312
2020-07-16     228
2020-07-17     141
2020-07-18       8
Name: Cases, dtype: int64

我已经使用plotly完成了这项工作。 我已经修改了Deaths以增加值,以便可以看到折线图。

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()

图表: 在此处输入图像描述

使用 pandas 绘图

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")

在此处输入图像描述

更新:使用日期作为索引

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 以Date为索引。 绘制此图将给出与上述相同的 plot。

            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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM