Eu tenho um problema muito específico. Eu tenho duas matrizes numpy e o elemento correspondente de cada matriz representa um ponto 2d.
a = [1,2,1,6,1]
b = [5,0,3,1,5]
Eu quero traçar um gráfico de dispersão onde o tamanho do marcador é baseado em quantas vezes o ponto ocorre.
Isso é :
1,5 : 2
2,0 : 1
1,3 : 1
6,1 : 1
Portanto, o array de tamanho deve ser size = [2,1,1,1] e outros dois arrays podem ser
a = [1,2,1,6]
e b = [5,0,3,1]
Portanto, devo ser capaz de ligar da plt.scatter
seguinte forma:
plt.scatter(a,b,s=size)
Já que a pergunta está marcada com numpy, podemos usar numpy. numpy.unique
permite calcular a contagem de valores únicos de uma matriz.
import numpy as np
a = [1,2,1,6,1]
b = [5,0,3,1,5]
u, c = np.unique(np.c_[a,b], return_counts=True, axis=0)
então
# u=
[[1 3]
[1 5]
[2 0]
[6 1]]
# c=
[1 2 1 1]
Isso pode ser traçado da mesma forma, onde uma função adicional pode ser usada para normalizar as contagens para alguns tamanhos de pontos para traçar
import matplotlib.pyplot as plt
s = lambda x : (((x-x.min())/float(x.max()-x.min())+1)*8)**2
plt.scatter(u[:,0],u[:,1],s=s(c))
plt.show()
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras