今天想在散點圖的某些特定的點外面畫圓圈標記,從下面的文章找到一些靈感,只要在原來的散點圖上面給指點添加相應的標誌,設置其透明度就能夠實現該想法。html
順便複習下散點圖的用法。數組
你們平時爲了直觀地顯示數據的分佈狀況,在畫散點圖的時候,簡單地把數據點用圓點標出來,像這樣:app
這樣:dom
還有這樣:ide
歡迎光臨程序代寫小店https://item.taobao.com/item.htm?spm=a230r.1.14.59.255028c3ALNkZ0&id=586797758241&ns=1&abbucket=15#detail函數
可直接聯繫客服QQ交代需求:953586085
歡迎點擊連接加入羣聊【程序代寫-接單羣】共同致富:https://jq.qq.com/?_wv=1027&k=5WxihsL spa
羣號:7330654273d
然而今天我想給你們展現的散點圖,或許沒有那麼直觀地反映數據的分佈狀況,不夠實用,可是真的很美很藝術,每一個的點的顏色和大小都不同,形狀也是多變的。好比五角星的散點圖: code
圓點的散點圖: orm
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的值自動被忽略 |
![]() ![]() |
…… 這麼多種點的形狀符號夠咱們用了吧~之後想用哪一種查一下就好啦~