2016-03-29 10 views
1

Bir arsadaki belgeler arasında kosinüs benzerliğini temsil etmeye çalışıyorum. Farklı renklerle temsil edilen farklı türde belgelerim var. Noktaların yoğunluğunu temsil etmek istiyorum, ancak renk belgenin türünü belirlediğinden, rengi yoğunlukla değiştirmemeyi tercih ederim. Şu anda dört farklı rengin var ve kırmızı ve yeşilin gösterilmesi önemlidir; Gelecekte 6 renkim olacak. Ana amacım, aşağıdaki gibi mümkün olduğunca okunaklı hale getirmek: Figure 1Renk kullanmadan matplotlib'deki yoğunluğu temsil etmenin en iyi yolu nedir?

Bu, seyrek veriler içeren çizimler için kolay olmakla birlikte, veri noktaları aşağıda olduğu gibi daha yoğun olduğunda daha zordur (kırmızıya dikkat edin). noktası) artık görünmez:

Figure 2

Ben en iyi bu verileri temsil etmek dair herhangi iyi uygulamaları veya öneriler işitme ilgi duyarım. Şimdiden teşekkürler!

cevap

1

Verilerinizi, yoğunluğun altındaki verilere göre sıralayın ve daha yoğun veri üzerinde daha seyrek verileri çizin.

import numpy as np 
import matplotlib.pyplot as plt 

x1 = np.random.randn(1000,1) 
y1 = np.random.randn(1000,1) # dense data 
x2 = np.random.randn(100,1) 
y2 = np.random.randn(100,1) 
x3 = np.random.randn(10,1) 
y3 = np.random.randn(10,1) # sparse data 

fig = plt.figure() 
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8]) 

# plot sparse data after dense data 
ax.scatter(x1, y1, c='none', edgecolors='blue') 
ax.scatter(x2, y2, c='none', edgecolors='green') 
ax.scatter(x3, y3, c='none', edgecolors='red') 

renklerle oynamak ve arka uç desteklemesi durumunda, transparan için alpha anahtar kelimeyi kullanmayı düşünün unutmayın: Ayrıca, ben genellikle açık cirlces kullanın.

Sparse and dense data, colored by category