teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

間違い修正と説明追加

2021/07/09 05:18

投稿

ppaul
ppaul

スコア24672

answer CHANGED
@@ -4,21 +4,46 @@
4
4
 
5
5
  pandasががmatplotlibをimportしている場所は、
6
6
 
7
- */Lib/site-packages/pandas/plotting/_core.py
7
+ ~~*/Lib/site-packages/pandas/plotting/_core.py~~
8
-
8
+ */Lib/site-packages/pandas/plotting/_matplotlib/__init__.py
9
9
  ```python
10
+ def plot(data, kind, **kwargs):
11
+ # Importing pyplot at the top of the file (before the converters are
12
+ # registered) causes problems in matplotlib 2 (converters seem to not
13
+ # work)
10
- import importlib
14
+ import matplotlib.pyplot as plt
15
+ ```
11
- from typing import TYPE_CHECKING, Optional, Sequence, Tuple, Union
16
+ とかです。
12
17
 
13
- from pandas._config import get_option
18
+ 理由2 matplotlibは描画関数の後でも軸などの設定ができる。
14
19
 
15
- from pandas._typing import Label
20
+ これはmatplotlibの仕様です。
21
+ matplotlibのいくつかの機能を使うためにはをdf.plotの前matplotlibの関数を使って準備しておく必要があり場合もあります。
22
+
23
+ 1点目
16
- from pandas.util._decorators import Appender, Substitution
24
+ 上記の_core.pyは、import pandasの際に読み込まれるのでしょうか。
25
+
26
+ plotが最初に呼ばれたときです。
27
+
17
- ・・・
28
+ 2点目
29
+ もしimport pandasにより、matplotlibが同時にimportされるのなら、あえてimport matplotlibを(jupyterNotebookの)セルに記述する必要は、ないのでは、ないでしょうか。
30
+
31
+ Pythonにimportされるのと、それにある名前を使ってアクセスできるのは違います。
32
+ 明にimportせずに使う方法はありますが不便です。以下のように
33
+
34
+ ```python
35
+ df.plot()
36
+ impot sys
37
+ sys.modules['matplotlib.pyplot'].xlabel('訪問回数')
38
+ sys.modules['matplotlib.pyplot'].show()
18
39
  ```
19
- の先頭行です。
40
+ とか書けば動作はしまが、やりたくないでしょう
20
41
 
21
- 理由2 matplotlibは描画関数後でも軸設定できる。
42
+ 一般的にモジュールをimportした場合、そモジュールがまだimportされていければそモジュールを読み込みます、既に読み込まれてい場合は読み込み済みのモジュールを指定された名前に束縛(bind)するだけです
22
43
 
23
- これはmatplotlibの仕様す。
44
+ 既にmatplotlibがどこかimportされているなら、
45
+ import matplotlib.pyplot as plt
46
+
47
+ impot sys
24
- matplotlibのいくつかの機能を使うためにはをdf.plotの前matplotlibの関数を使って準備しておく必要があり場合もあります。
48
+ plt = sys.modules['matplotlib.pyplot']
49
+ は全く同じ意味ですので、普通は前者を使います。