前提
Pythonでデータ分析をしている初学者です。
ScatterPlotを作成したいのですが、UserWariningが表示される&グラフに点が表示されません。
作成したいScatterPlotは以下のようなものになります。
・年度で色分けをしたい(例:2021→青、2022→赤)
・「Player」、「Details」でそれぞれクエリ。
・X軸が「Score1」、Y軸が「Score2」。
データフレーム自体には問題はなさそうでした。
色分けをしない= c=df["Year"].map(colors) を消すと点自体は散布してくれますが、追加すると空白のグラフになります。
UserWariningについて、少し検索しましたがあまりピンとくるものがありませんでした。
何が原因か、ご教授の程よろしくお願いいたします。
達成したいこと
Pythonで年度別に色分けされたScatterPlotを作成したい。
参考:https://kanoki.org/2020/08/30/matplotlib-scatter-plot-color-by-category-in-python/
発生している問題・エラーメッセージ
<__array_function__ internals>:5: UserWarning: Warning: converting a masked element to nan. C:\Users\DELL\Anaconda3\lib\site-packages\numpy\core\_asarray.py:102: UserWarning: Warning: converting a masked element to nan. return array(a, dtype, copy=False, order=order)
該当のソースコード
Python
1## SeriesData 2import pandas as pd 3import numpy as np 4import matplotlib.pyplot as plt 5 6pd.options.display.float_format="{:.2f}".format 7 8#Create a random data frame 9start,end = "2021/4/1","2022/4/1" 10dates = pd.date_range(start=start,end=end,freq="D") 11details = ["Game","Practice"] 12players = [f"Player{i}"for i in range(1,31)] 13N = 1000 14dates = np.random.choice(dates,size=N) 15dates.sort() 16details = np.random.choice(details,size=N) 17players=np.random.choice(players,size=N) 18df = pd.DataFrame({ 19 "Date": dates, 20 "Details":details, 21 "Player": players, 22 "Score1":np.random.sample(N) * 30.0 + 100.0, 23 "Score2":np.random.sample(N) * 40.0 - 10.0 , 24}) 25 26df['Date'] = pd.to_datetime(df['Date'], format='%Y%m%d') 27df['Year'] = df['Date'].dt.strftime('%Y') 28df["Year"] = df["Year"].astype(int) 29 30# select Player 31Player = "Player1" 32# select SwingDetails 33Details = "Practice" 34#query by selects 35df = df.query(f'Player=="{Player}"') 36df = df.query(f'Details=="{Details}"') 37# データの選択 38select_item1 = "Score1" 39select_item2 = "Score2" 40colors = {"2022":"red","2021":"blue"} 41# Create figure 42fig,ax = plt.subplots(figsize=(15,10)) 43df.plot.scatter(x=select_item1,y=select_item2,ax=ax,s=80,marker="o",c=df["Year"].map(colors)) 44#画像サイズ、軸サイズ調整 45ax.axis([90,130,-20,30]) 46#グラフのラベル設定 47ax.set_xlabel("Score1",fontsize=15) 48ax.set_ylabel("Score2",fontsize=15) 49#プロットのグリッド線 50plt.grid(True,linestyle = "dotted") 51plt.show 52 53df
補足情報(FW/ツールのバージョンなど)
python3.9、VSCode

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/04/03 01:06