python中如何給散點圖上面的特定點做標記


 

今天想在散點圖的某些特定的點外面畫圓圈標記,從下面的文章找到一些靈感,只要在原來的散點圖上面給指點添加相應的標志,設置其透明度就可以實現該想法。

順便復習下散點圖的用法。

 

大家平時為了直觀地顯示數據的分布情況,在畫散點圖的時候,簡單地把數據點用圓點標出來,像這樣:

 


這樣:

 

 

​ 


還有這樣:

 

 

這里寫圖片描述

歡迎光臨程序代寫小店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 

群號:733065427

然而今天我想給大家展示的散點圖,或許沒有那么直觀地反映數據的分布情況,不夠實用,但是真的很美很藝術,每個的點的顏色和大小都不一樣,形狀也是多變的。比如五角星的散點圖: 

這里寫圖片描述


圓點的散點圖: 

這里寫圖片描述


Y形的散點圖: 

這里寫圖片描述


等等還有很多,那么這些漂亮的形狀是怎么畫出來的呢?其實代碼很簡單:

 

 
  1. from numpy import *;

  2. N = 50 # 點的個數

  3. x = np.random.rand(N) * 2 # 隨機產生50個0~2之間的x坐標

  4. y = np.random.rand(N) * 2 # 隨機產生50個0~2之間的y坐標

  5. colors = np.random.rand(N) # 隨機產生50個0~1之間的顏色值

  6. area = np.pi * (15 * np.random.rand(N))**2 # 點的半徑范圍:0~15

  7. # 畫散點圖

  8. plt.scatter(x, y, s=area, c=colors, alpha=0.5, marker=(9, 3, 30))

  9. 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的值自動被忽略

…… 
這么多種點的形狀符號夠我們用了吧~以后想用哪種查一下就好啦~


免責聲明!

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



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