python - 如何在条形图上绘制一条线
问题描述
我试图在条形图上绘制一条线,但是当我绘制这条线时,条形图消失了 - 我的 x 索引值也是如此。谁能帮我在同一个图中绘制线条和条形图?谢谢你。我相信,我的问题是折线图和条形图相互压倒——但我希望它们共存。
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()
此外,如何将此文本框移动到图例下方的右侧?
一起查看了matplotlib 绘图条形图和折线图,Pandas 绘图条形图在线它并没有涵盖我想要的我的想法。
数据集:
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
以增加值,以便看到折线图。
数据框:
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()
使用熊猫绘图
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")
Date
作为索引的数据框。绘制此图将给出与上面相同的图。
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
推荐阅读
- d3.js - 在 D3 V5 中在轴刻度上设置标签
- sparql - sparql 查询使用数据值获取特定类的所有个体
- python - 在 Visual Studio Code 中使用 pandas 的问题
- autohotkey - Autohotkey / AHK - 字符串作为不带“”的函数参数
- html - Page-Break-Before:在 Edge 84 浏览器中无法正常工作
- r - 使用所有列 NA 过滤 data.frame 但在某些为 NA 时保留
- c# - 在 C# 中使用 oracle 客户端选择非英语字符
- javascript - Uncaught (in promise) TypeError: Fetch on Window。快递服务器
- python - 没有为任何变量提供梯度。代码在 2 周前工作
- apache - Apache虚拟服务器子站点配置