回答編集履歴

1

matplotlibのバージョン違いによる挙動

2017/10/25 15:20

投稿

sa-yu
sa-yu

スコア201

test CHANGED
@@ -1,3 +1,49 @@
1
1
  出力されたグラフの右下をよく見ると、`+1.995e3`(=1995)とありますね。
2
2
 
3
3
  `2016-04-10`の解釈が`2016-4-10=2002`となっているようですよ。
4
+
5
+
6
+
7
+ (追記)
8
+
9
+ matplotlibのバージョンで挙動が異なるようです。
10
+
11
+ ver2.1.0だと、以下のコードで期待どおりの出力がされます。
12
+
13
+
14
+
15
+ ```python
16
+
17
+ def _view_plot():
18
+
19
+ left = np.array(['2016-04-10', '2016-10-05', '2016-10-10', '2016-10-11', '2016-12-10'])
20
+
21
+ height = np.array([100, 300, 200, 500, 400])
22
+
23
+ plt.plot(left, height)
24
+
25
+ ```
26
+
27
+
28
+
29
+ ver2.0.0以前だと、上記ではplot()でX軸の値をfloatに変換しようとするため、`ValueError: invalid literal for float(): 2016-04-10`が発生するようです。
30
+
31
+
32
+
33
+ そのため、一旦適当な値で横軸を設定し、その後、xticks()にてラベルを設定する必要があるようです。
34
+
35
+
36
+
37
+ ```python
38
+
39
+ def _view_plot():
40
+
41
+ left = np.array([0, 1, 2, 3, 4])
42
+
43
+ height = np.array([100, 300, 200, 500, 400])
44
+
45
+ plt.plot(left, height)
46
+
47
+ plt.xticks(left, ['2016-04-10', '2016-10-05', '2016-10-10', '2016-10-11', '2016-12-10'])
48
+
49
+ ```