私はPythonを使い始めています。次のコードを使ってファセットグリッドにパッチを追加しています。 AttributeError: 'FacetGrid'オブジェクトに 'add_patch'属性がありません。私はいくつかの広範な研究を行ったが、この問題に対する解決策を見つけることはできない。facetgridのパッチ - Python
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib.patches import Circle, Rectangle, Arc
sns.set_style("white")
sns.set_color_codes()
def draw_pitch(ax=None, color='black', lw=2, outer_lines=True):
# If an axes object isn't provided to plot onto, just get current one
if ax is None:
ax = plt.gca()
私はこのplt.gcaの問題(があるかもしれないと思う)が、私はそれを置き換えるべきかかどうかを知りませんか?
# Create goal
goal = Rectangle((-15,0), 30, .5, linewidth=3, color=color)
# The box
box = Rectangle((-81, 0), 162, 66, linewidth=lw, color=color,
fill=False)
#6ybox
ybox = Rectangle((-37, 0), 74, 22, linewidth=lw, color=color, fill=False)
#Penaltyarc
Parc = Arc((0,44),73.4,73.4, theta1=37, theta2=143,linewidth=lw, color=color, fill=False)
#Penalty
PSpot = Circle((0,44),radius=.5, linewidth=lw, color=color, fill=False)
# List of the court elements to be plotted onto the axes
pitch_elements = [goal, box, ybox, PSpot,Parc]
if outer_lines:
# Draw the half court line, baseline and side out bound lines
outer_lines = Rectangle((-136, 0), 272, 210, linewidth=lw,
color=color, fill=False)
pitch_elements.append(outer_lines)
# Add the court elements onto the axes
for element in pitch_elements:
ax.add_patch(element)
return ax
plt.figure(figsize=(12,11))
draw_pitch(outer_lines=True)
plt.xlim(-136,136)
plt.ylim(0,210)
cmap = 'jet'
file = 'Chances23clean.csv'
df = pd.read_csv(file)
df.teamf=df.teamf.apply(str)
g = sns.FacetGrid(df, col="teamf", col_wrap=4,size=3.5,ylim=(210,0),xlim=(136,-136))
g = (g.map(sns.kdeplot,"primaryLocation_x", "primaryLocation_y", shade=True,cmap=cmap,n_levels=40).set_titles("{col_name}",fontsize=300).set_axis_labels("","").set_ylabels('').set_xticklabels('','').set_yticklabels(''))
draw_pitch(g)
[OK]をクリックして、次のように進捗状況を確認しました。代わりに、上記のコードになるの:
draw_pitch(g)
私は
draw_pitch(g.axes[0])
draw_pitch(g.axes[1])
draw_pitch(g.axes[2])
...
draw_pitch(g.axes[19])
ことによってそれに取って代わったそして、それは動作しますが、ここでは、コードを簡素化する方法はありますか?どうもありがとう。
問題の[mcve]を提供することで、プロセスを大幅に促進できます。 – ImportanceOfBeingErnest
@ImportanceOfBeingErnestご覧のとおり、私はコーディングとstackoverflowの初心者です。私は自分の質問を改善することができて嬉しいですが、読みやすくするためにどこから始めるべきかはっきりしていませんか?あなたの助けをもう一度ありがとう。 – MattnDo
ここでの主な問題は、問題が再現できないことです。つまり、問題を特定して解決するために、コードをコピーしてマシン上で実行することはできません。したがって、[mcve]を作成することが重要です。そのような最小限の例では、問題が使用中の特定のファイルに直接関連していない限り、読み込むためにファイルを使用すべきではなく、汎用のDataFrameを使用してください。また、コード内のすべてのオブジェクトを定義する必要があります。あなたのコードの 'pitch_elements'は定義されていません。 – ImportanceOfBeingErnest