質問編集履歴

6

追加の質問を投稿してしまったので削除します。

2023/02/02 06:02

投稿

d-hayahsi
d-hayahsi

スコア17

test CHANGED
File without changes
test CHANGED
@@ -85,7 +85,5 @@
85
85
  plt.title(columns[i])
86
86
  plt.show()
87
87
  ```
88
- 追加で質問があるのですが、応用として
89
- 特定の複数の列を一つのグラフに重ねてプロットしたい場合、どのようにコーディングすれば良いのでしょうか。
90
- 宜しくお願い致します。
91
88
 
89
+

5

追加の質問、コメント

2023/02/02 04:32

投稿

d-hayahsi
d-hayahsi

スコア17

test CHANGED
File without changes
test CHANGED
@@ -40,6 +40,7 @@
40
40
  良いのでしょうか。
41
41
  宜しくお願い致します。
42
42
 
43
+ 追記
43
44
  列ごとに個別の設定をするのはコードがかなり長くなるため、
44
45
  for文を用いてアレンジしたいと考えております。
45
46
 
@@ -63,3 +64,28 @@
63
64
  また、上記のコードでは、0,0に表示されるグラフだけタイトルが表示されません。
64
65
  これらはどのように解決できるでしょうか。
65
66
  宜しくお願い致します。
67
+
68
+ 追記
69
+ 追加でご回答ありがとうございます。
70
+ タイトルだけ個別で設定すると冗長になるように思ったので、下記のように変更しました。
71
+ columnsという変数に項目名を入れたリストを作成しております。
72
+ ```Python
73
+ columns = df.columns
74
+ fig = plt.figure(figsize = (40, 80), tight_layout=True) # グラフサイズ(幅、高さ)
75
+ for col in range(df.shape[1]):
76
+ plt.subplot(12, 2, col+1)
77
+ plt.plot(df.iloc[:, col])
78
+ # plt.title("No." + str(col)) # 列Noをタイトル
79
+ plt.ticklabel_format(style="plain", axis="y", scilimits=(0, 0)) # eを使わない表現
80
+ plt.gca().get_yaxis().set_major_formatter(ticker.FuncFormatter(lambda v,p: f'{int(v):,d}')) # 3桁ごとにカンマで区切る
81
+ plt.grid()
82
+ # 列毎の個別設定 (必要なら)
83
+ for i in range(len(columns)):
84
+ if col == i:
85
+ plt.title(columns[i])
86
+ plt.show()
87
+ ```
88
+ 追加で質問があるのですが、応用として
89
+ 特定の複数の列を一つのグラフに重ねてプロットしたい場合、どのようにコーディングすれば良いのでしょうか。
90
+ 宜しくお願い致します。
91
+

4

文法の修正

2023/02/02 02:12

投稿

d-hayahsi
d-hayahsi

スコア17

test CHANGED
File without changes
test CHANGED
@@ -56,10 +56,10 @@
56
56
  plt.gca().get_yaxis().set_major_formatter(ticker.FuncFormatter(lambda v,p: f'{int(v):,d}'))
57
57
  plt.show()
58
58
  ```
59
- 上記のように変更すると9行目でエラーになってしまいます。
59
+ 上記のように変更するとエラーになってしまいます。
60
60
  ```error
61
61
  AttributeError: This method only works with the ScalarFormatter
62
62
  ```
63
- また、上記のコードでは、0,0にひょうじされるグラフだけタイトルが表示されません。
63
+ また、上記のコードでは、0,0に表示されるグラフだけタイトルが表示されません。
64
64
  これらはどのように解決できるでしょうか。
65
65
  宜しくお願い致します。

3

コメントの追加

2023/02/02 02:02

投稿

d-hayahsi
d-hayahsi

スコア17

test CHANGED
File without changes
test CHANGED
@@ -40,5 +40,26 @@
40
40
  良いのでしょうか。
41
41
  宜しくお願い致します。
42
42
 
43
+ 列ごとに個別の設定をするのはコードがかなり長くなるため、
44
+ for文を用いてアレンジしたいと考えております。
43
45
 
44
46
 
47
+ ```python
48
+ fig = plt.figure(figsize = (40, 80), tight_layout=True) # グラフサイズ(幅、高さ)
49
+ for col in range(df.shape[1]):
50
+ plt.subplot(12, 2, col+1)
51
+ plt.plot(df.iloc[:, col])
52
+
53
+ for i in range(col):
54
+ plt.title(columns[i+1]) # 列No.をタイトルに
55
+ plt.ticklabel_format(style="plain", axis="y", scilimits=(0, 0)) # eを使わない表現
56
+ plt.gca().get_yaxis().set_major_formatter(ticker.FuncFormatter(lambda v,p: f'{int(v):,d}'))
57
+ plt.show()
58
+ ```
59
+ 上記のように変更すると9行目でエラーになってしまいます。
60
+ ```error
61
+ AttributeError: This method only works with the ScalarFormatter
62
+ ```
63
+ また、上記のコードでは、0,0にひょうじされるグラフだけタイトルが表示されません。
64
+ これらはどのように解決できるでしょうか。
65
+ 宜しくお願い致します。

2

質問の追加

2023/02/01 06:38

投稿

d-hayahsi
d-hayahsi

スコア17

test CHANGED
File without changes
test CHANGED
@@ -12,6 +12,8 @@
12
12
  ### 該当のソースコード
13
13
 
14
14
  ```Python
15
+ import pandas as pd
16
+ df = pd.read_csv("data.csv")
15
17
  df.plot(
16
18
  subplots=True,
17
19
  figsize=(40,80), # グラフサイズ(幅、高さ)
@@ -30,7 +32,13 @@
30
32
  matplotlib : 3.6.3
31
33
  jupyterlab : 3.5.2
32
34
 
35
+ ### ご回答いただいた方々へ
36
+ ご回答者の仰る通り、本件は意見交換ではなくQ&Aにすべきでした。
37
+ コメントができない為、こちらにコメントとして残すことにします。
38
+ やりたいこととして追加があります。
39
+ 3桁ごとにコンマで区切りたいのですが、どのようにコーディングすれば
40
+ 良いのでしょうか。
41
+ 宜しくお願い致します。
33
42
 
34
43
 
35
44
 
36
-

1

文章の修正

2023/02/01 04:43

投稿

d-hayahsi
d-hayahsi

スコア17

test CHANGED
File without changes
test CHANGED
@@ -5,7 +5,8 @@
5
5
  Pandasのデータフレームを列(カラム)ごとに可視化(折れ線グラフ)したいです。
6
6
 
7
7
  現状としては、Pandasのplot()関数を用いて列ごとにプロットできましたが、
8
- Y軸の目盛が100万を超えるとeを使った表現になったり、グラフごとにタイトルの設定を行いたいです。
8
+ Y軸の目盛が100万を超えるとeを使った表現になってしまわないようにしたり、
9
+ グラフごとにタイトルの設定を行いたいです。
9
10
  当初は、matplotlibを使って作業していましたが、うまくプロットできずにPandasを使っています。
10
11
 
11
12
  ### 該当のソースコード