---
title: #27回 散布図
tags: 
author: [猫のタロー](https://convert.docswell.com/user/Cat_Taro)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/GJ8KW954ED.jpg?width=480
description: このセクションでは、x軸、y軸の値のペアで1つの実数が決る2変数の散布図の描き方を習得していきます。  ヒストグラムは、単変数のデータの分布を見るために用いましたが、散布図は2つの変数の分布を見るために用います。その分布をみることによって、相関の有無を点の散らばりから確認することができます。また、大きく異なったデータ（外れ値）の存在を確認することもできます。  それらを実現するプログラムは下記の3つです。  70　sns.scatterplot(data=データ名, x=&quot;列名1&quot;, y=&quot;列名2&quot;)  71　sns.scatterplot(data=データ名, x=&quot;列名1&quot;, y=&quot;列名2“, hie=“列名3”)  72　plt.legend(loc=‘位置’)   散布図を描くための「scatterplot」は、「lineplot」、「histplot」、「catplot」、「countplot」と同様に、「hue」を使ってサブグループに分け、それらを色分けすることができます。   また、グラフの凡例の位置を指定するには、「plt.legend(loc=‘位置’)」を使います。これは、他のグラフ描画のプログラムでも使えます。  1st STEP同様、動画のテキスト、追加情報は下記のブログを参考にしてください！  ■この動画のブログ  ●データサイエンス チュートリアル 　https://tutorial4datascience.blogspot.com/  ■凡例をグラフ外に表示したり、フォントの変更等を詳しく知りたい場合は、「Pythonアカデミー」の下記のページを参考にしてください。  【matplotlib】凡例(legend)を表示する方法【位置変更、フォント変更、サイズ変更】 https://python-academia.com/matplotlib-legend/
published: September 15, 23
canonical: https://convert.docswell.com/s/Cat_Taro/KNRXVL-2023-09-15-180416
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/GJ8KW954ED.jpg)

1
2nd STEP 集計とグラフ描画
Section 25 散布図
70 sns.scatterplot(data=データ名, x=&quot;列名1&quot;, y=&quot;列名2&quot;)
71 sns.scatterplot(data=データ名, x=&quot;列名1&quot;, y=&quot;列名2“
, hie=“列名3”)
72 plt.legend(loc=‘位置’)


# Page. 2

![Page Image](https://bcdn.docswell.com/page/LJLZNWYV7R.jpg)

2
Section 25 散布図
１．scatterplot
このセクションでは、x軸、y軸の値のペアで1つの実数が決る2変数の散布図の描き方を習
得していきます。
ヒストグラムは、単変数のデータの分布を見るために用いましたが、散布図は2つの変数の分
布を見るために用います。その分布をみることによって、相関の有無を点の散らばりから確認
することができます。また、大きく異なったデータ（外れ値）の存在を確認することもできます。
この2変数の散布図をグラフにするには、「scatterplot」を用います。( )内の引数は、主なもの
は他のグラフ関数と変わりません。
70 sns.scatterplot(data=データ名, x=&quot;列名1&quot;, y=&quot;列名2&quot;)
相関なし
正の相関
負の相関


# Page. 3

![Page Image](https://bcdn.docswell.com/page/47MVX9NN7W.jpg)

3
Section 25 散布図
２．scatterplotでも使えるhue
「scatterplot」は、「lineplot」、「histplot」、「catplot」、「countplot」と同様に、
「hue」を使ってサブグループに分け、それらを色分けすることができます。
71 sns.scatterplot(data=データ名, x=&quot;列名1&quot;, y=&quot;列名2“, hie=“列名3”)
この際、警告で「UserWarning：Creating legend with loc=“best” can be slow
with large amounts of data.」と出ることがあります。この警告が出ると、グラフの描画に時
間がかかってしまいます。このような時は、凡例の位置を指定する必要があります。
71に続けて、下記の72で凡例の位置を指定すれば、グラフを描画するスピードが速くなります。
72 plt.legend(loc=‘位置’)
凡例の位置を指定する方法は、他の「seaborn」のグラフ関数にも使えます。
「‘位置’」の指定の方法は、次の「参考」を参照してください。


# Page. 4

![Page Image](https://bcdn.docswell.com/page/P7R2NGD4J9.jpg)

4
Section 25 散布図
参 考
「plt.legend(loc=‘位置’)」の位置には、下記の文字列、番号を入れて凡例の位置を指
定することができます。
位置
文字列
番号
0
最適(極力重ならない位置)。デフォルト
best
右上
upper right
1
左上
upper left
2
左下
lower left
3
右下
lower right
4
右中央。下位互換用
right
5
左中央
center left
6
右中央
center right
7
下中央
lower center
8
上中央
upper center
9
画面中央
center
10
凡例をグラフ外に表示したり、フォントの変更等を詳しく知りたい場合は、「Pythonアカデミー」
の下記のページを参考にしてください。
【matplotlib】凡例(legend)を表示する方法【位置変更、フォント変更、サイズ変更】
https://python-academia.com/matplotlib-legend/


# Page. 5

![Page Image](https://bcdn.docswell.com/page/PJXDNX1ZEX.jpg)

5
Section 25 散布図
70 sns.scatterplot(data=データ名, x=&quot;列名1&quot;, y=&quot;列名2&quot;)
まずは、「scatterplot」で散布図を描いてみます。x軸に「Quantity」、y軸に「Total」を指定
します。
この場合、x軸、y軸の範囲を指
定していませんが、x軸、すなわち
購入数量がマイナスである値が
存在することがわかります。
返品されたものでしょか。


# Page. 6

![Page Image](https://bcdn.docswell.com/page/3JKXNW2VED.jpg)

6
Section 25 散布図
70 sns.scatterplot(data=データ名, x=&quot;列名1&quot;, y=&quot;列名2&quot;)
Section７「⑭ データ名[“列名”].max(axis=0)」の応用で、「max」の代わりに「count」を
用いて「Quantity」の個数を求めてみると、371,734個あります。
前の散布図では、すべての数値を
プロットしていないとわかりましたので、
Section 17「㊸ plt.ylim(最小
値,最大値)」を用いて、x軸、y軸
の範囲を狭めることにより、グラフを
拡大することができます。
結構、多くの返品がありますね。


# Page. 7

![Page Image](https://bcdn.docswell.com/page/LE35V1YQJ5.jpg)

7
Section 25 散布図
71 sns.scatterplot(data=データ名, x=&quot;列名1&quot;, y=&quot;列名2“
, hie=“列名3”)
「scatterplot」では、「hue」も使えます。第1象限に絞って、グラフを描いてみます。
国別に色分けされましたが、なにやら、
警告が出てしまいました…。
しかもグラフ描画に時間がかかってい
ます。


# Page. 8

![Page Image](https://bcdn.docswell.com/page/8EDD8X5WEG.jpg)

8
Section 25 散布図
72 plt.legend(loc=‘位置’)
「hue」を使うと、警告で「UserWarning：Creating legend with loc=“best” can be
slow with large amounts of data.」と出て、グラフ描画が遅くなることがあります。この場合、
凡例の位置を指定する必要があります。
「72 plt.legend(loc=‘位置’)」
を追加すると、グラフ描画が、34秒か
ら19秒に短縮できました。


