Python 散點圖


matplotlib 繪制散點圖的函數有 mptplotlib.pyplot.plot()、matplotlib.pyplot.scatter(),多數情況下使用 scatter() 函數。

scatter() 函數主要參數:

plt.scatter(x,y,  # array_like, 數據點在坐標系中的位置
 s=None,  # 標量或array_like, 標記點的大小, 可選參數
 c=None,  # 標記點的顏色,默認值為 'b'
 marker=None,  # 標記樣式,默認為 'o'
 cmap=None,  # 顏色映射
 norm=None,  # 
 vmin=None, vmax=None, alpha=None,  # 透明度, [0, 1] 上的浮點數
 linewidths=None,  # 線寬
 verts=None, edgecolors=None,  # 標記的邊緣顏色, 默認為 'face',表示邊緣顏色與面顏色相同
 hold=None, data=None, **kwargs)

 

一、用 plot() 繪制散點

示例 1

import numpy as np import matplotlib.pyplot as plt # 生成 1000 個服從標准正態分布的樣本 
y = np.random.randn(1000) # 繪制散點圖
plt.plot(x, linestyle='', marker='.');  # 設置為不畫線,標記標記點為圓點

plt.plot(x, linestyle='', marker='.')  可以簡寫為 plt.plot(x, '.')

 plot() 函數默認繪制折線圖,如果不是簡寫方式,只是省略 linestyle (略寫為 ls) 參數,

而是寫為 plt.plot(x, marker='.'); 則圖形如下:

 

 

 2、plot() 在只提供 y 值,不提供 x 值時,默認將 序列或數組 y 索引值當作 x

 所以,示例 1 的完整代碼應該是:

import numpy as np import matplotlib.pyplot as plt # 生成 1000 個服從標准正態分布的樣本 
y = np.random.randn(1000) x = [i for i, _ in enumerate(y)] # 繪制散點圖
plt.plot(x, y,  linestyle='', marker='.'); 

對上述代碼略作修正,使圖表美觀一點

import numpy as np import matplotlib.pyplot as plt # 生成 1000 個服從標准正態分布的樣本 
y = np.random.randn(1000) x = [i for i, _ in enumerate(y)] # 圖表元素中正常顯示中文字符
plt.rcParams['font.sans-serif'] = 'SimHei'
# 坐標軸刻度標簽正常顯示負號
plt.rcParams['axes.unicode_minus'] = False # 繪制散點圖
plt.plot(x, y, linestyle='', marker='.') plt.xticks(size=12, color='grey')  # x 軸刻度標簽
plt.yticks(size=12, color='grey')  # y 軸刻度標簽
plt.title('散點圖', size=14, color='y');  # 添加圖表標題

 

二、用 scatter() 繪制散點圖

示例2

import numpy as np 
import matplotlib.pyplot as plt


# 在區間 [a, b] 上均勻地取指定數量的值
x = np.linspace(0.05, 10, 1000) np.random.seed(22)
# 生成 1000 個服從標准正態分布的樣本 
y = np.random.randn(1000)

plt.scatter(x, y);

  注:標記點默認為圓點,顏色默認為 blue, 邊緣顏色默認與標記點的顏色一致。

對示例2 的圖形進行美化

import numpy as np import matplotlib.pyplot as plt # 在區間 [a, b] 上均勻地取指定數量的值
x = np.linspace(0.05, 10, 1000) np.random.seed(22) y = np.random.randn(1000) # 圖表元素中正常顯示中文字符
plt.rcParams['font.sans-serif'] = 'SimHei'
# 坐標軸刻度標簽正常顯示負號
plt.rcParams['axes.unicode_minus'] = False plt.scatter(x, y, s=87,  # 標記點大小
            marker='*',  # 標記點的樣式 星號
            c='g',  # green 綠色
            linewidths=0.41, edgecolor='y',  # 邊緣顏色
            label='scatter figure') plt.xticks(size=12, color='grey')  # x 軸刻度標簽
plt.yticks(size=12, color='grey')  # y 軸刻度標簽
plt.title('散點圖', size=14, color='y');  # 添加圖表標題
plt.legend()  # 添加圖例

# 設置坐標軸刻度范圍
plt.xlim(-0.5, 10.5) plt.ylim(-3.5, 3.5);

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM