回答編集履歴

1

2021年だけを綺麗に描画してみた。

2021/07/17 02:30

投稿

toshikawa
toshikawa

スコア388

test CHANGED
@@ -1,3 +1,113 @@
1
+ ```python
2
+
3
+ #!pip install japanize_matplotlib
4
+
5
+ import matplotlib.pyplot as plt
6
+
7
+ import matplotlib.dates as mdates
8
+
9
+ import pandas as pd
10
+
11
+ import numpy as np
12
+
13
+
14
+
15
+ import requests
16
+
17
+ import io
18
+
19
+ import japanize_matplotlib
20
+
21
+
22
+
23
+ plt.rcParams["font.size"] = 8
24
+
25
+
26
+
27
+ url = 'https://www3.nhk.or.jp/n-data/opendata/coronavirus/nhk_news_covid19_prefectures_daily_data.csv'
28
+
29
+ r = requests.get(url)
30
+
31
+ data = pd.read_csv(io.BytesIO(r.content),parse_dates=['日付'])
32
+
33
+
34
+
35
+ df=data.loc[data['都道府県名']=="佐賀県",['日付','各地の死者数_1日ごとの発表数']]
36
+
37
+ df.columns=['日付','感染者数(人)']
38
+
39
+
40
+
41
+ df_ts = df.loc[df['日付'] > np.datetime64('2020-12-31')]
42
+
43
+
44
+
45
+ # https://oku.edu.mie-u.ac.jp/~okumura/python/plottimeseries.html
46
+
47
+ # なお、1月からの描画にしたかったため、zero_formatsを変更しています。
48
+
49
+ # フォーマットの記載については下記の通り
50
+
51
+ # https://matplotlib.org/stable/gallery/ticks_and_spines/date_concise_formatter.html
52
+
53
+
54
+
55
+ fig, ax = plt.subplots(figsize=(10,2))
56
+
57
+ locator = mdates.AutoDateLocator()
58
+
59
+ formatter = mdates.ConciseDateFormatter(locator)
60
+
61
+ formatter.formats=['%Y年', '%m月', '%d日', '%H:%M', '%H:%M', '%S.%f']
62
+
63
+ formatter.zero_formats=['', '%m月', '%m月', '%m-%d', '%H:%M', '%H:%M']
64
+
65
+ formatter.offset_formats=['', '%Y年', '%Y-%m', '%Y-%m-%d',
66
+
67
+ '%Y-%m-%d', '%Y-%m-%d %H:%M']
68
+
69
+ ax.xaxis.set_major_formatter(formatter)
70
+
71
+
72
+
73
+ ax.get_yaxis().get_major_formatter().set_useOffset(False)
74
+
75
+ ax.get_yaxis().set_major_locator(ticker.MaxNLocator(integer=True))
76
+
77
+
78
+
79
+
80
+
81
+ ax.bar(df_ts['日付'], df_ts['感染者数(人)'], width=1,label='感染者数(人)')
82
+
83
+ ax.set_title('佐賀県の新型コロナウイルス感染者')
84
+
85
+ ax.legend()
86
+
87
+ ```
88
+
89
+
90
+
91
+ 奥村先生のページ[時系列のグラフを描く](https://oku.edu.mie-u.ac.jp/~okumura/python/plottimeseries.html)にやり方がしっかりのっていました。
92
+
93
+
94
+
95
+ __matplotlib.dates__での時系列軸の変換はこのようにaxisに対して描画する必要があります。
96
+
97
+
98
+
99
+ __df.plot.bar()__でやろうとして、かなり沼にはまりました。
100
+
101
+
102
+
103
+ ![barplot](5253ea0f0889e4fa468e66a89c9dce48.png)
104
+
105
+
106
+
107
+ -----
108
+
109
+
110
+
1
111
  ```python
2
112
 
3
113
  #!pip install japanize_matplotlib