2013-11-01 4 views
9

में स्कैटर बिंदुओं के रंगों के अनुरूप किंवदंती बनाएं मेरे पास एक साजिश है जिसे मैं विज्ञान-सीख में केएमन्स एल्गोरिदम के माध्यम से उत्पन्न कर रहा हूं। क्लस्टर अलग-अलग रंगों से मेल खाते हैं। यहां साजिश है, enter image description herematplotlib

मुझे इस साजिश के लिए एक किंवदंती की आवश्यकता है जो साजिश में क्लस्टर संख्या से मेल खाती है। आदर्श रूप से, पौराणिक कथाओं को क्लस्टर का रंग प्रदर्शित करना चाहिए और लेबल क्लस्टर संख्या होना चाहिए। धन्यवाद।

संपादित करें: मुझे लगता है के बाद से लोगों को इस

from sklearn.cluster import KMeans 
km = KMeans(n_clusters=20, init='random') 
km.fit(df) #df is the dataframe which contains points as coordinates 
labels = km.labels_ 
plt.clf() 
fig = plt.figure() 
ax = fig.add_subplot(111, axisbg='w', frame_on=True) 
fig.set_size_inches(18.5, 10.5) 

# Plot the clusters on the map 
# m is a basemap object 
m.scatter(
     [geom.x for geom in map_points], 
     [geom.y for geom in map_points], 
     20, marker='o', lw=.25, 
     c = labels.astype(float), 
     alpha =0.9, antialiased=True, 
     zorder=3) 
m.fillcontinents(color='#555555') 
plt.show() 
+0

आप एक अलग 'm.scatter के साथ प्रत्येक क्लस्टर साजिश सकता है()' आदेश, या एक विकल्प के रूप में कर

यहाँ कोड है सभी वर्गों के साथ एक अलग रंगीन रंग। Sklearn गैलरी में उदाहरण दिखा रहे हैं कि यह कैसे करें। लोग आपका उदाहरण चलाने में सक्षम नहीं होंगे, इसलिए काम करना मुश्किल है ... –

+0

धन्यवाद @ रटर कैसीज..मैं स्केलेर्न गैलरी – Nitin

+1

@ निटिन की जांच करूंगा, अगर आप समाधान के साथ आए हैं, तो कृपया इसे यहां पोस्ट करें – cd98

उत्तर

11

downvoting कर रहे हैं मैं कथा रंग के अनुरूप बनाने के लिए कर रहा था मैं कुछ कोड डालना चाहिए। कुंजी रटर Kassies द्वारा वर्णित डेटा में प्रत्येक श्रेणी के लिए एकाधिक scatterplots का उपयोग कर रहा था।

import numpy as np 
import matplotlib.pyplot as plt 

# Setting various plot properties 
plt.clf() 
fig = plt.figure() 
ax = fig.add_subplot(111, axisbg='w', frame_on=True) 
fig.set_size_inches(18.5, 10.5) 

# Creating a discrete colorbar 
colors = plt.cm.rainbow(np.linspace(0, 1, 20)) 

current_plot_range = 0 
previous_plot_range = 0 

for i,c in enumerate(colors): 
    previous_plot_range += current_plot_range 
    current_plot_range = labels[labels==i].size 
    m.scatter(
     [geom.x for geom in map_points[  
      previous_plot_range:previous_plot_range+current_plot_range]], 
     [geom.y for geom in map_points[ 
      previous_plot_range:previous_plot_range+current_plot_range]], 
     20, lw=.25, marker='o',color = c, label=i, alpha =0.9, antialiased=True, 
     zorder=3) 

plt.legend() 
m.fillcontinents(color='#555555') 

परिणाम कुछ इस तरह दिखता: enter image description here

+0

इस उत्तर के लिए धन्यवाद! आप ज़िप के बजाय गणना का उपयोग करने पर विचार कर सकते हैं। – SeF