Search code examples
data-visualizationdata-analysisfolium

AttributeError: 'list' object has no attribute 'rgb2hex'


I am getting the error *" AttributeError: 'list' object has no attribute 'rgb2hex'" while trying to apply Kmeans clustering for my data and trying to map the clusters with folium *

map_clusters = folium.Map(location=[latitude, longitude], zoom_start=11)

# set color scheme for the clusters
x = np.arange(kclusters)
ys = [i + x + (i*x)**2 for i in range(kclusters)]
colors_array = cm.rainbow(np.linspace(0, 1, len(ys)))
rainbow = [colors.rgb2hex(i) for i in colors_array]

# add markers to the map
markers_colors = []
for lat, lon, poi, cluster in zip(banglore_merged['latitude'], banglore_merged['longitude'], banglore_merged['location'], banglore_merged['Cluster Labels']):
    label = folium.Popup(str(poi) + ' Cluster ' + str(cluster), parse_html=True)
    folium.CircleMarker(
        [lat, lon],
        radius=5,
        popup=label,
        color=rainbow[int(cluster)-1],
        fill=True,
        fill_color=rainbow[int(cluster)-1],
        fill_opacity=0.7).add_to(map_clusters)

map_clusters

ERROR:

    ---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-50-8e09b66c0be6> in <module>
      6 ys = [i + x + (i*x)**2 for i in range(kclusters)]
      7 colors_array = cm.rainbow(np.linspace(0, 1, len(ys)))
----> 8 rainbow = [colors.rgb2hex(i) for i in colors_array]
      9 
     10 # add markers to the map

<ipython-input-50-8e09b66c0be6> in <listcomp>(.0)
      6 ys = [i + x + (i*x)**2 for i in range(kclusters)]
      7 colors_array = cm.rainbow(np.linspace(0, 1, len(ys)))
----> 8 rainbow = [colors.rgb2hex(i) for i in colors_array]
      9 
     10 # add markers to the map

AttributeError: 'list' object has no attribute 'rgb2hex'

I hope you find the answer to my query. Thanks In advance


Solution

  • i guess you are passing an empty dataset to the variable. kindly change the Name.

    rainbow = [colors.rgb2hex(i) for i in colors_array]