The point of adjust_text() is achieved by giving you the text to annotate in list form: the first graph has no embellishments and the second has arrows pointing to the scattered values. Note: Some of the scatter marks are missing for unknown reasons.
import pandas as pd
df = pd.read_csv('./Data/PremierLeague_1920.csv', encoding='utf-8')
df.head()
| | RANK | PLAYER | TEAM | GP | GS | MIN | G | ASST | SHOTS | SOG |
|---:|-------:|:--------------------------|:----------------|-----:|-----:|------:|----:|-------:|--------:|------:|
| 0 | 1 | Jamie Vardy | Leicester City | 35 | 34 | 3034 | 23 | 5 | 71 | 43 |
| 1 | 2 | Daniel William John Ings | Southampton | 38 | 32 | 2812 | 22 | 2 | 66 | 38 |
| 2 | 3 | Pierre-Emerick Aubameyang | Arsenal | 36 | 35 | 3138 | 22 | 3 | 70 | 42 |
| 3 | 4 | Raheem Shaquille Sterling | Manchester City | 33 | 30 | 2660 | 20 | 1 | 68 | 38 |
| 4 | 5 | Mohamed Salah Ghaly | Liverpool | 34 | 33 | 2884 | 19 | 10 | 95 | 59 |
# 2team pick up
df1 = df[(df['TEAM'] == 'Leicester City') | (df['TEAM'] == 'Liverpool')]
import matplotlib.pyplot as plt
from adjustText import adjust_text
fig = plt.figure(figsize=(6,6),dpi=144)
ax = fig.add_subplot(111)
players = []
team_name = ['Leicester City','Liverpool']
for index, row in df1.iterrows():
player_name = row[1]
team = row[2]
goal = row[6]
assist = row[7]
if team == team_name[0]:
color = 'b'
else:
color = 'r'
ax.scatter(goal, assist, c=color, s=25, alpha=0.8, edgecolors='none')
if goal >=5 or assist >=3:
players.append(ax.annotate(player_name, xy=(goal + 1, assist + 1), size=8))
adjust_text(players)
ax.legend(loc='best', labels=team_name)
ax.grid(False)
plt.show()

adjust_text(players, arrowprops=dict(arrowstyle='->', color='red'))
