在matplotlib中使用函數 matplotlib.pyplot.scatter 繪制散點圖,matplotlib.pyplot.scatter的函數簽名如下:
matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, hold=None, data=None, **kwargs)
常用參數有:x,y組成了散點的坐標;s為散點的面積;c為散點的顏色(默認為藍色'b');marker為散點的標記;alpha為散點的透明度(0與1之間的數,0為完全透明,1為完全不透明);linewidths為散點邊緣的線寬;如果marker為None,則使用verts的值構建散點標記;edgecolors為散點邊緣顏色。
其他參數如cmap為colormap;norm為數據亮度;vmin、vmax和norm配合使用用來歸一化亮度數據,這些與數據亮度有關,可以參考這篇文章。
下面為常見的用法:
1、繪制普通散點圖
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
# 保證圖片在瀏覽器內正常顯示
%matplotlib inline
# 10個點
N = 10
x = np.random.rand(N)
y = np.random.rand(N)
plt.scatter(x, y)
plt.show()
輸出:
2、更改散點的大小
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
# 保證圖片在瀏覽器內正常顯示
%matplotlib inline
# 10個點
N = 10
x = np.random.rand(N)
y = np.random.rand(N)
# 每個點隨機大小
s = (30*np.random.rand(N))**2
plt.scatter(x, y, s=s)
plt.show()
輸出:
3、更改散點顏色和透明度
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
# 保證圖片在瀏覽器內正常顯示
%matplotlib inline
# 10個點
N = 10
x = np.random.rand(N)
y = np.random.rand(N)
# 每個點隨機大小
s = (30*np.random.rand(N))**2
# 隨機顏色
c = np.random.rand(N)
plt.scatter(x, y, s=s, c=c, alpha=0.5)
plt.show()
輸出:
4、更改散點形狀
import matplotlib.pyplot as plt
import numpy as np
# 保證圖片在瀏覽器內正常顯示
%matplotlib inline
# 10個點
N = 10
x = np.random.rand(N)
y = np.random.rand(N)
s = (30*np.random.rand(N))**2
c = np.random.rand(N)
plt.scatter(x, y, s=s, c=c, marker='^', alpha=0.5)
plt.show()
輸出:
所有可用的形狀可以參考matplotlib.markers。
5、在一張圖上繪制兩組數據的散點
import matplotlib.pyplot as plt
import numpy as np
# 保證圖片在瀏覽器內正常顯示
%matplotlib inline
# 10個點
N = 10
x1 = np.random.rand(N)
y1 = np.random.rand(N)
x2 = np.random.rand(N)
y2 = np.random.rand(N)
plt.scatter(x1, y1, marker='o')
plt.scatter(x2, y2, marker='^')
plt.show()
輸出:
6、為散點設置圖例
import matplotlib.pyplot as plt
import numpy as np
# 保證圖片在瀏覽器內正常顯示
%matplotlib inline
# 10個點
N = 10
x1 = np.random.rand(N)
y1 = np.random.rand(N)
x2 = np.random.rand(N)
y2 = np.random.rand(N)
plt.scatter(x1, y1, marker='o', label="circle")
plt.scatter(x2, y2, marker='^', label="triangle")
plt.legend(loc='best')
plt.show()
輸出: