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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Matplotlib

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

Python

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

Q&A

0回答

1194閲覧

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

george-paul

総合スコア12

Matplotlib

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

Python

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

0グッド

1クリップ

投稿2019/04/26 06:14

前提・実現したいこと

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)]

該当のソースコード

python

1import pandas as pd 2import json 3import requests 4import matplotlib.pyplot as plt 5import seaborn as sns 6import nbashots as nba 7 8 9shot_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=' 10shot_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=' 11headers = {'User-Agent': 'User-Agent'} 12player_ID = 204001 13 14def get_shot_data(player_ID): 15 full_url = shot_data_url_first + str(player_ID) + shot_data_url_last 16 json_data = requests.get(full_url, headers=headers).json() 17 return(json_data) 18 19data = get_shot_data(player_ID)['resultSets'][0]['rowSet'] 20columns = get_shot_data(player_ID)['resultSets'][0]['headers'] 21 22df_shots = pd.DataFrame(data=data, columns=columns) 23print(columns) 24 25columns_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' ] 26df_shots = df_shots.drop(columns=columns_to_drop) 27 28plt.rcParams['figure.figsize'] = (12, 11) 29nba.shot_chart(df_shots.LOC_X, df_shots.LOC_Y,title="Kristaps Porgingis") 30plt.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 のバージョンを確認しようとしても同じエラーメッセージが出ます。

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問