2015-09-21 5 views
2

Я работаю с некоторыми данными, имеющими несколько идентичных точек данных. Я хотел бы визуализировать данные в диаграмме рассеяния, но построение разброса не очень хорошо показывает дубликаты.Как я могу рассчитать идентичные точки данных в диаграмме рассеяния?

Если я изменяю значение альфа, то идентичные точки данных становятся темнее, что приятно, но не идеально.

Есть ли способ сопоставить цвет точки с тем, сколько раз это происходит в наборе данных? Как насчет размера? Как назначить размер точки, сколько раз это происходит в наборе данных?

+1

Что вам не нравится в использовании альфы? Недостатком других подходов, которые вы предлагаете, является то, что они полагаются на подсчет точно равных значений. Но у вас может быть много * почти * равных значений, которые перекрываются на участке рассеяния. Любой подход, который включает подсчет отдельных значений, не улучшит сюжет, а использует альфа-волю, поскольку частично перекрывающиеся точки будут по-прежнему приводить к потемнению. – BrenBarn

ответ

2

Как было указано, имеет ли это смысл немного зависит от вашего набора данных. Если у вас есть достаточно дискретные точки и точные совпадения имеют смысл, вы можете сделать что-то вроде этого:

import numpy as np 
import matplotlib.pyplot as plt 
test_x=[2,3,4,1,2,4,2] 
test_y=[1,2,1,3,1,1,1] # I am just generating some test x and y values. Use your data here 
#Generate a list of unique points 
points=list(set(zip(test_x,test_y))) 
#Generate a list of point counts 
count=[len([x for x,y in zip(test_x,test_y) if x==p[0] and y==p[1]]) for p in points] 
#Now for the plotting: 
plot_x=[i[0] for i in points] 
plot_y=[i[1] for i in points] 
count=np.array(count) 
plt.scatter(plot_x,plot_y,c=count,s=100*count**0.5,cmap='Spectral_r') 
plt.colorbar() 
plt.show() 

Примечание: Вам нужно будет регулировать радиус (значение 100 в го s аргумента) в соответствии с вашей плотности точек. Я также использовал квадратный корень счетчика, чтобы масштабировать его так, чтобы площадь точки была пропорциональна числу.

Также обратите внимание: если у вас очень плотные точки, возможно, было бы более целесообразно использовать другой вид сюжета. Гистограммы, например (мне лично нравится hexbin для данных 2d), являются достойной альтернативой в этих случаях.

Смежные вопросы