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

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

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

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

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

Pythonで年度別に色分けされたScatterPlotを作成したい。

8960
8960

総合スコア106

Matplotlib

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

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

1回答

0グッド

0クリップ

711閲覧

投稿2022/04/02 08:20

編集2022/04/03 01:20

前提

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

以下のような質問にはグッドを送りましょう

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

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

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答1

0

ベストアンサー

Yearint 型なので。

python

1#colors = {"2022":"red","2021":"blue"} 2colors = {2022:"red",2021:"blue"}

投稿2022/04/02 09:57

melian

総合スコア16263

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

8960

2022/04/03 01:06

なるほど!すっきりしました。 ありがとうございました。

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

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

Matplotlib

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

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。