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

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

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

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

1280閲覧

Python3年生 機械学習のしくみ P104 LESSON11 リスト3.10の出力結果が表示されません 解決方法を教示いただきたいです。

Risekorise

総合スコア1

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/12/25 02:55

やろうとしたこと

np.meshgrid命令を使って、グラフをマス目状に区切った点データを
作ろうとしました。

該当のソースコード

import matplotlib.pyplot as plt
import numpy as np
plt.subplot(figsize=(15, 5))

# pcolormeshを使うと、表示範囲を分割して塗りつぶすことができる
# 3×3、8×8、100×100と細かくするほどなめらかになる
sizelist = [3,8,100]
for i in range(3):
size=sizelist[i]
X,Y = np.meshgrid(np.linspace(0, 10, size+1),
np.linspace(0, 10, size+1))
C = np.linspace(0,100,size*size).reshape(size, size)
plt.subplot(1, 3, i+1)
plt.pcolormesh(X,Y,C, cmap="rainbow")

plt.show()

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

エラーメッセージ
AttributeError Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_2868/3552133022.py in <module>
2 import numpy as np
3
----> 4 plt.subplot(figsize=(15, 5))
5
6 # pcolormeshを使うと、表示範囲を分割して塗りつぶすことができる

~\anaconda3\lib\site-packages\matplotlib\pyplot.py in subplot(*args, **kwargs)
1285 else:
1286 # we have exhausted the known Axes and none match, make a new one!
-> 1287 ax = fig.add_subplot(*args, **kwargs)
1288
1289 fig.sca(ax)

~\anaconda3\lib\site-packages\matplotlib\figure.py in add_subplot(self, *args, **kwargs)
782 projection_class, pkw = self._process_projection_requirements(
783 *args, **kwargs)
--> 784 ax = subplot_class_factory(projection_class)(self, *args, **pkw)
785 key = (projection_class, pkw)
786 return self._add_axes_internal(ax, key)

~\anaconda3\lib\site-packages\matplotlib\axes_subplots.py in init(self, fig, *args, **kwargs)
34 """
35 # _axes_class is set in the subplot_class_factory
---> 36 self._axes_class.init(self, fig, [0, 0, 1, 1], **kwargs)
37 # This will also update the axes position.
38 self.set_subplotspec(SubplotSpec._from_subplot_args(fig, args))

~\anaconda3\lib\site-packages\matplotlib_api\deprecation.py in wrapper(*args, **kwargs)
469 "parameter will become keyword-only %(removal)s.",
470 name=name, obj_type=f"parameter of {func.name}()")
--> 471 return func(*args, **kwargs)
472
473 return wrapper

~\anaconda3\lib\site-packages\matplotlib\axes_base.py in init(self, fig, rect, facecolor, frameon, sharex, sharey, label, xscale, yscale, box_aspect, **kwargs)
646 self.set_yscale(yscale)
647
--> 648 self.update(kwargs)
649
650 for name, axis in self._get_axis_map().items():

~\anaconda3\lib\site-packages\matplotlib\artist.py in update(self, props)
1060 func = getattr(self, f"set_{k}", None)
1061 if not callable(func):
-> 1062 raise AttributeError(f"{type(self).name!r} object "
1063 f"has no property {k!r}")
1064 ret.append(func(v))

AttributeError: 'AxesSubplot' object has no property 'figsize'

<Figure size 432x288 with 0 Axes>

Python バージョン
Python 3.6.1

ここにより詳細な情報を記載してください。
当初13行、14行、15行のSyntax Errorが表示されたため再度
打ち直しをして進めたとろころ、最終的に上述したエラーが表示されました。

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

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

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

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

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

meg_

2022/12/25 03:54

コードは「コードの挿入」で記入しましょう。
guest

回答1

0

3行目の
plt.subplot(figsize=(15, 5))

plt.subplots(figsize=(15, 5))
に修正してみてはいかがでしょうか。


全体コード

py

1import matplotlib.pyplot as plt 2import numpy as np 3 4plt.subplots(figsize=(15, 5)) 5 6sizelist = [3,8,100] 7for i in range(3): 8 size=sizelist[i] 9 X,Y = np.meshgrid(np.linspace(0, 10, size+1), 10 np.linspace(0, 10, size+1)) 11 C = np.linspace(0,100,size*size).reshape(size, size) 12 plt.subplot(1, 3, i+1) 13 plt.pcolormesh(X,Y,C, cmap="rainbow") 14 15plt.show()

出力結果
イメージ説明


なお、新しいバージョンの matplotlibで上記を実行すると

MatplotlibDeprecationWarning: Auto-removal of overlapping axes is deprecated since 3.6 and will be removed two minor releases later; explicitly call ax.remove() as needed. plt.subplot(1, 3, i+1)

という警告が出る場合があります。

この場合は、4行目の

py

1plt.subplots(figsize=(15, 5))

py

1plt.figure().set_size_inches(15, 5)

に直すと、警告も消えます。

実行環境:
Windows 10
Python 3.11.1
VSCode 1.74.2 上の IPython 8.7.0

投稿2022/12/25 03:15

編集2022/12/25 04:12
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Risekorise

2022/12/25 07:43

回答ありがとうございました。解決しました。単純な入力ミスが原因で、このようなエラーが 表示されていたのですね。助かりました。
退会済みユーザー

退会済みユーザー

2023/01/05 12:41 編集

解決した場合は、質問が解決したことが他の人にもわかるように、下記の手順に従って質問をクローズしてください。 https://teratail.com/help#resolve-question
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問