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);