Python matplotlib 繪制散點圖詳解建議收藏

前言

我們在matplotlib模塊學習中,發現有常用的反映數據變化的折線圖,對比數據類型差異的柱狀圖和反應數據頻率分佈情況的直方圖。

往期內容速看

Python用 matplotlib 繪制柱狀圖

Python matplotlib底層原理解析

其實在數據統計圖表中,有一種圖表是散列點分佈在坐標中,反應數據隨著自變量變化的趨勢。

本期,我們將詳細學習matplotlib 繪制散點圖相關屬性的學習,let’s go~

1. 散點圖概述

什麼是散點圖?

  • 散點圖用於在水平軸和垂直軸上繪制數據點,數據以點狀分佈在左標系中
  • 散點圖表示因變量隨著自變量而變化的大致趨勢
  • 散點圖由多個左坐標點構成,考察坐標點的分佈,判斷是否存在某種關聯或者分佈模式
  • 對於不同類別的點,則由圖表中不同形狀或顏色的標記符表示
  • 散點圖主要分為散點圖矩陣、三維散點圖、ArcGIS散點圖

散點圖使用場景

  • 散點圖用於比較跨類別的聚合數據
  • 散點圖用於分析數據線性、多項式趨勢情況
  • 散點圖用於四象限分析
  • 散點圖用於找到數據趨勢公式
  • 散點圖可以為後期精確的圖標進行輔助

繪制散點圖步驟

  1. 導入matplotlib.pyplot模塊
  2. 準備數據,可以使用numpy/pandas整理數據
  3. 調用pyplot.scatter()繪制散點圖

案例展示

本次案例我們將分析某產品不同定價銷售額分佈情況

案例需要準備兩組數據x和y軸,其中x,y軸的數據量要保持一致

x_value = np.random.randint(50,100,50)
y_value = np.random.randint(500,1000,50)

繪制散點

import matplotlib.pyplot as plt
import numpy as np
 
plt.rcParams["font.sans-serif"]=['SimHei'] plt.rcParams["axes.unicode_minus"]=False
 
x_value = np.random.randint(50,100,50)
y_value = np.random.randint(500,1000,50)
 
plt.scatter(x_value,y_value)
 
plt.title("data analyze")
plt.xlabel("銷售價格")
plt.ylabel("銷售額")
 
plt.show()

 2. 散點圖屬性

設置散點大小

關鍵字:s

傳入數據類型為list或者數字,默認為20

設置散點顏色

關鍵字:c

默認顏色為藍色

取值范圍

  • 表示顏色的英文單詞:如紅色”red”
  • 表示顏色單詞的簡稱如:紅色”r”,黃色”y”
  • RGB格式:十六進制格式如”#88c999″;(r,g,b)元組形式
  • 也可以傳入顏色列表

設置散點樣式

關鍵字:marker

系統默認為’o’小圓圈

取值還可以取:(‘o’, ‘v’, ‘^’, ‘<‘, ‘>’, ‘8’, ‘s’, ‘p’, ‘*’, ‘h’, ‘H’, ‘D’, ‘d’, ‘P’, ‘X’)

設置透明度

關鍵字:alpha

取值范圍:0~1

設置散點邊框

關鍵字: edgecolor

默認為face

取值選項:

  • “face”|”none”
  • 表示顏色的英文單詞、簡寫或者rgb

我們結合上一節的案例,設置散點大小,散點邊框為粉色,散點顏色為#88c999

size = (20*np.random.rand(50))**2
plt.scatter(x_value,y_value,s=area,c="#88c999",edgecolors="pink"

3. 添加折線散點圖

我們在查看散點圖時,有時候會借助折線圖來輔助分析。我們繼續拿第一節的數據來分析。

我們使用np.random.rand()來生成100個隨機數據

x_value = 100*np.random.rand(100)
y_value = 100*np.random.rand(100)

需要借助我們高中的數學公司如sin\cos函數等(高中數學都還給老師瞭)

使用pyplot.plot()方法來繪制曲線圖

r0 = 80
plt.scatter(x_value,y_value,c="hotpink",edgecolors="blue")
the =  np.arange(0,np.pi/2, 0.01)
plt.plot(r0*np.cos(the),r0*np.sin(the))

4. 多類型散點圖

我們在觀察數據的時候,會同時比較多個類型數據,因此我們可以通過顏色或者散點樣式來區分表示

方式一: 使用顏色來區分不同類別時,我們需要再添加新的數據和scatter方法

x_value = 100*np.random.rand(100)
y_value = 100*np.random.rand(100)
y1_value = 100*np.random.rand(100)
 
plt.scatter(x_value,y_value, c="hotpink",edgecolors="blue",label="A產品")
 
plt.scatter(x_value,y1_value, c="#88c999", edgecolors="y",label="B產品")

方式二:我們可以使用marker來標記不同類型,例如我們使用上一節的案例再添加一個scatter()

r0 = 80
 
size = (20*np.random.rand(100))**2
 
r = np.sqrt(x_value**2+y_value**2)
area = np.ma.masked_where(r > r0,size)
area1 = np.ma.masked_where(r <= r0, size)
 
plt.scatter(x_value,y_value,s=area,c="hotpink",edgecolors="blue",label="A產品")
 
plt.scatter(x_value, y_value, s=area1, c="red", edgecolors="y",marker="^",label="B產品")
 
the =  np.arange(0,np.pi/2, 0.01)
plt.plot(r0*np.cos(the),r0*np.sin(the))

5. 顏色條散點圖

在散點圖表中,我們為瞭對每個點顏色深淺進行表示,我們可以借助cmap顏色條來進行添加

  • 顏色條顯示關鍵字:cmap
  • 默認為viridis,可選值如accent_r,blues_r,brbg_r,greens_r等等
  • 表示每種顏色從0~100的值

當要顯示顏色列表時,我們需要調用pyplot.colorbar()

例如,我們對散點圖添加一個紅色系的顏色列表

size = (20*np.random.rand(100))**2
color = np.random.randint(0,100,100)
plt.scatter(x_value,y_value, s=size, c=color,label="A產品",cmap="afmhot_r")
plt.colorbar()

6. 曲線散點圖

散點圖都是由一個一個坐標點組成的,當這些點具有一定規律時,我們可以使用散點圖來繪制曲線。

我們使用scatter()繪制一個2次方的冪函數

x_value = list(range(1, 100))
y_value = [x ** 2 for x in x_value]
 
plt.scatter(x_value,y_value,c=y_value,cmap="hot_r",edgecolors="none",s=50)
 
plt.show()

總結

本期,我們對matplotlib.pyplot 繪制散點圖scatter方法及相關屬性進行詳細的學習。對於暫時沒有找到規律的數據來說,使用散點圖可以快速發現數據的分佈情況 

以上就是Python matplotlib 繪制散點圖詳解建議收藏的詳細內容,更多關於Python matplotlib 繪制散點圖的資料請關註WalkonNet其它相關文章!

推薦閱讀: