我正在使用matplotlib繪製一個圖。 x和y軸是離散值,因此列表中的幾個(x,y)點具有相同的值。例如,假設我們有以下的X,Y點:如何使用matplotlib使散點更大,密度更高?
x=[0,1,1,2,2,2,2,2]
y=[0,1,2,3,3,3,3,5]
現在所有的(X,Y)點的發生一次,但(2,3)發生的4倍。當我使用plt.scatter(x,y)時,它只顯示(2,3)爲常規點,一次。怎樣才能顯示出現的密度呢?例如,一個更大的標記?
我正在使用matplotlib繪製一個圖。 x和y軸是離散值,因此列表中的幾個(x,y)點具有相同的值。例如,假設我們有以下的X,Y點:如何使用matplotlib使散點更大,密度更高?
x=[0,1,1,2,2,2,2,2]
y=[0,1,2,3,3,3,3,5]
現在所有的(X,Y)點的發生一次,但(2,3)發生的4倍。當我使用plt.scatter(x,y)時,它只顯示(2,3)爲常規點,一次。怎樣才能顯示出現的密度呢?例如,一個更大的標記?
可以傳遞一個可選的參數s
到plt.scatter
指示正在繪製的各點的大小:如果阿爾法小於1的更頻繁的點會顯得更暗/不太透明。爲了獲得與每個點的出現相對應的大小,首先構建一個字典,計算出現的次數,然後創建每個點的大小列表。
import matplotlib.pyplot as plt
from collections import Counter
x=[0,1,1,2,2,2,2,2]
y=[0,1,2,3,3,3,3,5]
# count the occurrences of each point
c = Counter(zip(x,y))
# create a list of the sizes, here multiplied by 10 for scale
s = [10*c[(xx,yy)] for xx,yy in zip(x,y)]
# plot it
plt.scatter(x, y, s=s)
plt.show()
偉大,感謝.. –
@AminGhaderi如果這是你需要什麼,請把它標記爲接受。 – Wen
謝謝。我只是標記了它。 –