前提・実現したいこと
以下のようなコードにおいて、X軸は"Speed"のmean値、Y軸に"Angle"のmean値をとった散布図に回帰直線を追加したいです。
sns.regplot()のx,yにどういった形で渡してあげればよいでしょうか?
ご教授の程、よろしくお願い致します。
発生している問題・エラーメッセージ
AttributeError: 'tuple' object has no attribute 'shape'
該当のソースコード
python
1import pandas as pd 2import numpy as np 3import matplotlib.pyplot as plt 4from adjustText import adjust_text 5import seaborn as sns 6pd.options.display.float_format="{:.1f}".format 7#Create a random data frame 8start,end = "2021/4/1","2021/4/30" 9dates = pd.date_range(start=start,end=end,freq="D") 10players = [f"Player{i}"for i in range(1,6)] 11N = 200 12dates = np.random.choice(dates,size=N) 13dates.sort() 14players=np.random.choice(players,size=N) 15df = pd.DataFrame({ 16 "Date": dates, 17 "Player": players, 18 "Speed": np.random.sample(N) * 100.0, 19 "Angle": np.random.sample(N) * 40.0 - 20.0, 20 "Efficiency": np.random.sample(N) * 100.0, 21}) 22#grouping 23dfx = df.groupby("Player").agg({ 24 "Player":"count", 25 "Speed":[np.mean,np.std], 26 "Angle":[np.mean,np.std], 27 "Efficiency":[np.mean], 28}) 29#add average 30dfx.loc['Average', :] = dfx.mean() 31# Create figure 32fig,ax = plt.subplots(figsize=(15,10)) 33dfx[:-1].plot.scatter(x=("Speed","mean"),y=("Angle","mean"),ax=ax) 34#Tag playerlabel and adjust 35x = ("Speed","mean") 36y = ("Angle","mean") 37dfx[:-1].plot.scatter(x=x, y=y, ax=ax,s=100) 38texts=[] 39for i, label in enumerate(dfx[:-1].index): 40 texts.append(ax.annotate( 41 label, ha="center", fontsize=12, 42 xy=(dfx[:-1][x][i], dfx[:-1][y][i]), 43 xytext=(dfx[:-1][x][i], dfx[:-1][y][i]))) 44adjust_text(texts, arrowprops=dict(arrowstyle='->', color='red')) 45#setting 46ax.set_xlabel("Speed") 47ax.set_ylabel("Angle") 48ax.set_xlim(0,100) 49ax.set_ylim(-20,20) 50ax.grid() 51#Linear Regression 52sns.regplot(x=("Speed","mean"),y=("Angle","mean"))
試したこと
https://seaborn.pydata.org/tutorial/regression.html
↑を参照し、regplot()関数にて作成しようとしましたが、xy指定がうまくいかず、上記のエラーが出ました。
補足情報(FW/ツールのバージョンなど)
windows11,python3.9.4,vscode
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/29 09:19
2021/11/29 09:23
2021/11/29 09:25
2021/11/29 09:34