python中如何給散點圖上面的特定點做標記
出處:http://blog.csdn.net/mg2flyingff/article/details/53415353
今天想在散點圖的某些特定的點外面畫圓圈標記,從下面的文章找到一些靈感,只要在原來的散點圖上面給指點新增相應的標誌,設定其透明度就可以實現該想法。
順便複習下散點圖的用法。
大家平時為了直觀地顯示資料的分佈情況,在畫散點圖的時候,簡單地把資料點用圓點標出來,像這樣:
這樣:
還有這樣:
然而今天我想給大家展示的散點圖,或許沒有那麼直觀地反映資料的分佈情況,不夠實用,但是真的很美很藝術,每個的點的顏色和大小都不一樣,形狀也是多變的。比如五角星的散點圖:
圓點的散點圖:
Y形的散點圖:
等等還有很多,那麼這些漂亮的形狀是怎麼畫出來的呢?其實程式碼很簡單:
from numpy import *;
N = 50 # 點的個數
x = np.random.rand(N) * 2 # 隨機產生50個0~2之間的x座標
y = np.random.rand(N) * 2 # 隨機產生50個0~2之間的y座標
colors = np.random.rand(N) # 隨機產生50個0~1之間的顏色值
area = np.pi * (15 * np.random.rand(N))**2 # 點的半徑範圍:0~15
# 畫散點圖
plt.scatter(x, y, s=area, c=colors, alpha=0.5 , marker=(9, 3, 30))
plt.show()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
這裡用到一個matplotlib.pyplot子庫中畫散點圖的函式 matplotlib.pyplot.scatter(x, y, s=20, c=None, marker='o',
cmap=None, norm=None, vmin=None, vmax=None, alpha=None,
linewidths=None, verts=None, edgecolors=None, hold=None,
data=None, **kwargs)
這個函式接收的引數很多,有預設值的平時也不需要我們指定,是可選的,這次我們用到的除了基本的x ,y引數,還有c,s,alpha和marker,c就是為點指定的顏色陣列,s是點的面積大小,alpha是點的顏色的透明度,marker是指定點標記的形狀。在例子裡指定透明度為0.5,c和s是隨機生成的,我們要改變的是marker的值,marker有很多值可供選擇,下表展示了在例子程式碼的基礎上,改變marker的值後的效果:
marker | result |
---|---|
”.” | |
”,” | |
“o” | |
“v” | |
“^” | |
“<” | |
“>” | |
“1” | |
“2” | |
“3” | |
“4” | |
“8” | |
“s” | |
“p” | |
“*” | |
“h” | |
“H” | |
“+” | |
“x” | |
“D” | |
“d” | |
“ | ” |
“_” | |
“None” | 沒錯就是什麼都沒有。。。 |
“$…$” | |
(numsides, style, angle) eg:(9,0, 30) 注:numsides是邊的個數, angle是旋轉角度, style只有0,1,2,3四個值 |
|
(numsides, style, angle) eg:(9,1, 30) |
|
(numsides, style, angle) eg:(9,2, 30) |
|
(numsides, style, angle) eg:(9,3, 30) 注:此時numsides和angle的值自動被忽略 |
……
這麼多種點的形狀符號夠我們用了吧~以後想用哪種查一下就好啦~