質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.51%

  • Python

    11719questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • Matplotlib

    454questions

    MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

プログラミング初心者です。pythonでバスケのショットチャートを作るプログラムを書こうとしています。nbashotsというライブラリを使用しているときに以下のようなエラーメッセージが発生しました。

受付中

回答 0

投稿

  • 評価
  • クリップ 1
  • VIEW 163

george-paul

score 0

前提・実現したいこと

pythonでバスケのショットチャートを作るプログラムを書こうとしています。nbashotsというライブラリを使用しているときに以下のようなエラーメッセージが発生しました。

発生している問題・エラーメッセージ

Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/matplotlib/__init__.py", line 861, in __setitem__
    cval = self.validate[key](val)
  File "/usr/local/lib/python3.7/site-packages/matplotlib/rcsetup.py", line 855, in validate_cycler
    raise ValueError("object was not a string or Cycler instance: %s" % s)
ValueError: object was not a string or Cycler instance: [(0.2980392156862745, 0.4470588235294118, 0.6901960784313725), (0.3333333333333333, 0.6588235294117647, 0.40784313725490196), (0.7686274509803922, 0.3058823529411765, 0.3215686274509804), (0.5058823529411764, 0.4470588235294118, 0.6980392156862745), (0.8, 0.7254901960784313, 0.4549019607843137), (0.39215686274509803, 0.7098039215686275, 0.803921568627451)]

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/user/.atom/basketball/shotchart.py", line 5, in <module>
    import seaborn as sns
  File "/usr/local/lib/python3.7/site-packages/seaborn/__init__.py", line 13, in <module>
    set()
  File "/usr/local/lib/python3.7/site-packages/seaborn/rcmod.py", line 98, in set
    set_palette(palette, color_codes=color_codes)
  File "/usr/local/lib/python3.7/site-packages/seaborn/rcmod.py", line 491, in set_palette
    mpl.rcParams["axes.prop_cycle"] = list(colors)
  File "/usr/local/lib/python3.7/site-packages/matplotlib/__init__.py", line 863, in __setitem__
    raise ValueError("Key %s: %s" % (key, str(ve)))
ValueError: Key axes.prop_cycle: object was not a string or Cycler instance: [(0.2980392156862745, 0.4470588235294118, 0.6901960784313725), (0.3333333333333333, 0.6588235294117647, 0.40784313725490196), (0.7686274509803922, 0.3058823529411765, 0.3215686274509804), (0.5058823529411764, 0.4470588235294118, 0.6980392156862745), (0.8, 0.7254901960784313, 0.4549019607843137), (0.39215686274509803, 0.7098039215686275, 0.803921568627451)]

該当のソースコード

import pandas as pd
import json
import requests
import matplotlib.pyplot as plt
import seaborn as sns
import nbashots as nba


shot_data_url_first = 'https://stats.nba.com/stats/shotchartdetail?AheadBehind=&CFID=33&CFPARAMS=2017-18&ClutchTime=&Conference=&ContextFilter=&ContextMeasure=FGA&DateFrom=&DateTo=&Division=&EndPeriod=10&EndRange=28800&GROUP_ID=&GameEventID=&GameID=&GameSegment=&GroupID=&GroupMode=&GroupQuantity=5&LastNGames=0&LeagueID=00&Location=&Month=0&OnOff=&OpponentTeamID=0&Outcome=&PORound=0&Period=0&PlayerID='
shot_data_url_last = '&PlayerID1=&PlayerID2=&PlayerID3=&PlayerID4=&PlayerID5=&PlayerPosition=&PointDiff=&Position=&RangeType=0&RookieYear=&Season=2017-18&SeasonSegment=&SeasonType=Regular+Season&ShotClockRange=&StartPeriod=1&StartRange=0&StarterBench=&TeamID=0&VsConference=&VsDivision=&VsPlayerID1=&VsPlayerID2=&VsPlayerID3=&VsPlayerID4=&VsPlayerID5=&VsTeamID='
headers = {'User-Agent': 'User-Agent'}
player_ID = 204001

def get_shot_data(player_ID):
    full_url = shot_data_url_first + str(player_ID) + shot_data_url_last
    json_data = requests.get(full_url, headers=headers).json()
    return(json_data)

data = get_shot_data(player_ID)['resultSets'][0]['rowSet']
columns = get_shot_data(player_ID)['resultSets'][0]['headers']

df_shots = pd.DataFrame(data=data, columns=columns)
print(columns)

columns_to_drop = ['GRID_TYPE', 'GAME_ID', 'GAME_EVENT_ID', 'PLAYER_ID', 'TEAM_ID', 'MINUTES_REMAINING', 'SECONDS_REMAINING', 'EVENT_TYPE', 'ACTION_TYPE', 'GAME_DATE', 'HTM', 'VTM' ]
df_shots = df_shots.drop(columns=columns_to_drop)

plt.rcParams['figure.figsize'] = (12, 11)
nba.shot_chart(df_shots.LOC_X, df_shots.LOC_Y,title="Kristaps Porgingis")
plt.show()

試したこと

一番はじめにこのコードで実行した時に
KeyError: 'axes.color_cycle is not a valid rc parameter
とエラーが出たので、対応方法を調べ、seabornのrcmod.pyから
mpl.rcParams["axes.color_cycle"] = list(colors)を
mpl.rcParams["axes.prop_cycle"] = list(colors)に書き換えました。
matplotlibではaxes.prop_cycle、seabornではaxes.color_cycleが使われていたことが原因だったと考えられます。書き換えたことでこのエラーは出なくなりました。

次に、object was not a string or Cycler instance という上記に挙げたエラーが出てきてしまいました。
matplotibrcのaxes.prop_cycleがstrになっていないのではと思い、確認したところそういうわけではありませんでした。
とりあえずネットの見よう見まねで
axes.prop_cycle : cycler('color', ['b', 'g', 'r', 'c', 'm', 'y', 'k'])
と書き換えてみましたがエラーは消えず...。エラーメッセージに出てくる数字のリストがなんなのかだけでもわかればいいと思います。

補足情報(FW/ツールのバージョンなど)

python 3.7
matplotlib 3.0.2
seaborn のバージョンを確認しようとしても同じエラーメッセージが出ます。

全くのど素人が独学でやっているので、コードの書き方などに不備だとかおかしいところがあったら教えていただきたいです。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

同じタグがついた質問を見る

  • Python

    11719questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • Matplotlib

    454questions

    MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

  • トップ
  • Pythonに関する質問
  • プログラミング初心者です。pythonでバスケのショットチャートを作るプログラムを書こうとしています。nbashotsというライブラリを使用しているときに以下のようなエラーメッセージが発生しました。