Matplotlib.pyplot scatter: установка нулевого минимального значения на ноль не работает - PullRequest
0 голосов
/ 14 мая 2018

Я извлек некоторые данные таблицы, используя код ниже:

import pandas as pd  
import matplotlib.pyplot as plt  

stat_dict={'Disposals' : 0,
           'Kicks' : 1,
           'Marks' : 2,
           'Handballs' : 3,
           'Goals' : 4,
           'Behinds' : 5,
           'Hitouts' : 6,
           'Tackles' : 7,
           'Rebounds' : 8,
           'Inside50s' : 9,
           'Clearances': 9,
           'Clangers' : 10,
           'FreesFor' : 11,
           'FreesAgainst' : 12,
           'ContestedPosessions' : 13,
           'UncontestedPosesseions' : 14,
           'ContestedMarks' : 15,
           'MarksInside50' : 16,
           'OnePercenters' : 17,
           'Bounces' : 18,
           'GoalAssists' : 19,
           'Timeplayed' : 20}

team_lower_case='fremantle'
player="Fyfe, Nat"
stat_required='Disposals'
rounds=7

tables = pd.read_html("https://afltables.com/afl/stats/teams/" 
+str(team_lower_case)+"/2018_gbg.html")

for df in tables:
    df.drop(df.columns[rounds+1:], axis=1, inplace=True)   # remove 
unwanted columns
    df.columns = df.columns.droplevel(0)    # remove extra index level

stat_table=tables[stat_dict[stat_required]]

player_stat=stat_table[stat_table["Player"]==player]
player_stat=player_stat.iloc[:,1:8]

Что выводит это:

     R1    R2    R3    R4    R5    R6    R7
8  22.0  29.0  38.0  25.0  43.0  27.0  33.0

Затем я строю эти данные:

plt.scatter(range(1,rounds+1),player_stat)
plt.show()

enter image description here Я хочу установить предел оси Y на ноль:

plt.ylim(0,50)

Но это приводит к тому, что сюжет весь раздавлен и странен enter image description here

Я также попробовал следующее:

plt.ylim(ymin=0)

enter image description here

1 Ответ

0 голосов
/ 14 мая 2018

Ваши данные строки . Проблема может быть воспроизведена с использованием следующего:

y = ["22.0", "29.0", "38.0", "25.0", "43.0", "27.0", "33.0"]
plt.scatter(range(len(y)),y)
plt.ylim(0,50)

enter image description here

Вам необходимо преобразовать player_stat в числовой тип данных. Один из возможных способов сделать это - использовать .astype(float). Для вашего примера это будет что-то вроде:

plt.scatter(range(1,rounds+1), player_stat.astype(float))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...