Как построить график где одно из значений не числовое в Matplotlib

подскажите, пожалуйста. Необходимо построить график зависимости зарплаты игроков от клуба с использованием Matplotlib, название клуба - не числовое значение.

Я строю график таким образом

import numpy as np
import matplotlib.pyplot as plt

height = df['Wage']
bars = df['Club']
y_pos = np.arange(len(bars))

# Create bars
plt.bar(y_pos, height)

# Create names on the x-axis
plt.xticks(y_pos, bars)

# Show graphic
plt.show()

Получается это введите сюда описание изображения

Как мне избежать помарки по оси Х, чтобы я мог видеть название клубов. Ссылка на Dataset - https://disk.yandex.ru/i/Kev7UcF11qljiQ


Ответы (1 шт):

Автор решения: strawdog

Можно сделать так:

Сначала подготавливаем данные, убираем лишнее и оставляем только топ-50 клубов:

import pandas as pd

df = pd.read_csv("PlayerPersonalData.csv", index_col=0, usecols=["Name", "Club", "Wage"])
df["Wage"] = df["Wage"].str.replace("[K€]","", regex=True).astype(int).mul(1000)
res = df.groupby("Club", as_index=False)["Wage"].mean()
res = res.sort_values("Wage").reset_index(drop=True)
res = res[len(res.index)-50:]

затем, собственно, рисуем:

import matplotlib.pyplot as plt

fig, ax = plt.subplots(figsize=(10, 20))
ax.barh(range(len(res.index)), res["Wage"],align='edge', height=.5)
ax.set_yticks(range(len(res.index)))
ax.set_yticklabels(res["Club"])
ax.tick_params(axis='both', which='major', labelsize=8)
plt.ylim(0, len(res.index))
plt.show()

получаем вот это: введите сюда описание изображения

→ Ссылка