前提・実現したいこと
以下のような散布図にて
axes.invert_xaxis()関数でX軸を反転した際に、散布点につけたラベル(Player名)の場所は反転されず?arrowstyle='->'で作成した矢印とラベルが離れてしまう&adjustしたはずのラベルが重なってしまう状態になってしまいます。
改善方法をご教授いただけると幸いです。
①反転前
②反転後(randomで数値が①と変わってしまいましたが????)
発生している問題・エラーメッセージ
該当のソースコード
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,31)] 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 "Time": np.random.sample(N) * 0.03 + 0.15, 21}) 22#grouping 23dfx = df.groupby("Player").agg({ 24 "Player":"count", 25 "Speed":[np.mean,np.std], 26 "Angle":[np.mean,np.std], 27 "Time":[np.mean], 28}) 29#add average 30dfx.loc['Average', :] = dfx.mean() 31#Join columns 32dfx.columns = [" ".join(pair) for pair in dfx.columns] 33# Create figure 34fig,ax = plt.subplots(figsize=(15,10)) 35dfx[:-1].plot.scatter(x=("Time mean"),y=("Angle mean"),ax=ax) 36#Tag playerlabel and adjust 37x = ("Time mean") 38y = ("Angle mean") 39dfx[:-1].plot.scatter(x=x, y=y, ax=ax,s=100) 40texts=[] 41for i, label in enumerate(dfx[:-1].index): 42 texts.append(ax.annotate( 43 label, ha="center", fontsize=12, 44 xy=(dfx[:-1][x][i], dfx[:-1][y][i]), 45 xytext=(dfx[:-1][x][i], dfx[:-1][y][i]))) 46adjust_text(texts, arrowprops=dict(arrowstyle='->', color='red')) 47#Linear Regression 48dfy = dfx[:-1].copy() 49sns.regplot(x="Time mean", y="Angle mean", data=dfy, ax=ax) 50#setting 51ax.set_xlabel("Time") 52ax.set_ylabel("Angle") 53ax.set_xlim(0.150,0.180) 54ax.set_ylim(-20,20) 55ax.grid() 56ax.invert_xaxis()
試したこと
コード内での軸反転のタイミングの問題かなと思いましたので、
ax.invert_xaxis()をadjusttextの前後、ラベル作成の前、figure作成の前など試してみましたが、変わらずでした。
補足情報(FW/ツールのバージョンなど)
windows11,python3.9.4,vscode
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/01 01:29
2021/12/01 03:37
2021/12/01 03:59
2021/12/01 04:02
2021/12/01 04:53