質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

1445閲覧

python3でグラフ描画をしたいが、invalid syntaxが解決できない

otonashi

総合スコア33

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

1クリップ

投稿2019/03/21 14:58

前提・実現したいこと

データフレームの列ごとの複数のboxplotをsubplotで表示させたいです。数が多くなることを考慮してfor文を使うことを前提にコードを書いていますが、最後のplt.show()に対してエラーが出ます。

発生している問題・エラーメッセージ

python3でグラフ描画をしたいが、invalid syntaxが解決できない
エラーメッセージ
SyntaxError: invalid syntax

該当のソースコード

python3
ソースコード
import pandas as pd
from matplotlib import pyplot as plt
df = pd.read_csv("data/testdata.csv", dtype=float, header=0, delimiter=",")
for i in range(len(df.columns)):
plt.subplot(7,7,i)
plt.title(df.columns[i])
plt.boxplot(data[:,i], vert=True, patch_artist=True)

plt.show()

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hayataka2049

2019/03/21 18:31

ソースコードは、 ```python # ここにコードを貼る ``` # ↑最後に改行が必要 というmarkdownの中に入れてください。質問は編集できます。 また、エラーメッセージも同様のmarkdownの中に入れ、Traceback以降すべてを示してください。
stdio

2019/03/22 00:34

invalid syntax(直訳:無効な構文)ですのでどこかの構文が間違っている様な気がします。 もう一度for文あたりから見直しましょう。
guest

回答1

0

ベストアンサー

行いたい内容を完全に把握できている自信は全くありませんが、

(1)

Python

1plt.subplot(7,7,i)

の第三引数のiは 1から始まる数字となりますので

Python

1plt.subplot(7,7,i+1)

とする必要があります。

また現状では縦7横7の計49個のsubplotが生成されております。これが正しいのか否かは、質問からは判断がつきませんが気になったので一応記述しておきます。

(2)

Python

1plt.title(df.columns[i])

の箇所は subplot 毎にタイトルをつけるのでしたら

Python

1ax = plt.subplot(7,7,i+1) 2ax..set_title(df.columns[i])

となります。

(3)

Python

1plt.boxplot(data[:,i], vert=True, patch_artist=True)

の箇所も同様に subplot 毎に描画するののでしたら

Python

1ax = plt.subplot(7,7,i+1) 2... 3ax.boxplot(data[:,i], vert=True, patch_artist=True)

となります。

更には data[:,i] ですが、dataが宣言されておりませんので何なのか不明です。
もしかしたらdf.iloc[:,i]の間違いででしょうかね?


以上、とりあえず下記コードではエラー無く動作しております。

Python

1import pandas as pd 2import numpy as np 3from matplotlib import pyplot as plt 4 5df = pd.DataFrame(np.random.uniform(0., 100., (100, 7*7))) 6for i in range(len(df.columns)): 7 ax = plt.subplot(7,7,i+1) 8 ax.set_title(df.columns[i]) 9 ax.boxplot(df.iloc[:,i], vert=True, patch_artist=True) 10plt.show()

投稿2019/03/22 00:54

編集2019/03/22 01:52
magichan

総合スコア15898

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otonashi

2019/03/22 07:59

丁寧に教えてくださりありがとうございました!大変勉強になりました!エラーなく動くようになり、解決しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問