前提・実現したいこと
ここに質問の内容を詳しく書いてください。
市松模様をなるべく少ない文量で書きたいです。
発生している問題・エラーメッセージ
AttributeError Traceback (most recent call last) <ipython-input-88-a132df557ecd> in <module> 5 for j in range (0,10): 6 c2.append(Rectangle((i, j), 1, 1, color="blue")) ----> 7 show_shape([c1,c2]) <ipython-input-1-58f849606168> in show_shape(patches) 14 # 座標平面に図形を加える 15 for patch in patches: ---> 16 ax.add_patch(patch) 17 # 図形が収まる広さに調整 18 ~/opt/anaconda3/lib/python3.8/site-packages/matplotlib/axes/_base.py in add_patch(self, p) 2028 Add a `~.Patch` to the axes' patches; return the patch. 2029 """ -> 2030 self._set_artist_props(p) 2031 if p.get_clip_path() is None: 2032 p.set_clip_path(self.patch) ~/opt/anaconda3/lib/python3.8/site-packages/matplotlib/axes/_base.py in _set_artist_props(self, a) 955 def _set_artist_props(self, a): 956 """Set the boilerplate props for artists added to axes.""" --> 957 a.set_figure(self.figure) 958 if not a.is_transform_set(): 959 a.set_transform(self.transData) AttributeError: 'list' object has no attribute 'set_figure'
該当のソースコード
from matplotlib import pyplot as plt from matplotlib.patches import * # Circle, Ellipse 等 def show_shape(patches): ax = plt.gca() if isinstance(patches, Patch): patches = [patches] for patch in patches: ax.add_patch(patch) plt.axis('scaled') ax.set_aspect('equal') plt.show() c1 = Rectangle((0, 0), 10, 10, color="pink") c2 = [] for i in range (0,10): for j in range (0,10): c2.append(Rectangle((i, j), 1, 1, color="blue")) show_shape([c1,c2])
試したこと
最初は全部書き出していたのですが、なるべく少ない文量で書けと言われ、for文を使いましたがうまく行けません。また、if,else文も使ったのですがうまくいかず消してしまいました。
補足情報(FW/ツールのバージョンなど)
教授にもっと短くかけと言われただけでアドバイスなどはいただいていません。
回答2件
あなたの回答
tips
プレビュー