2016-12-17 152 views
0

我想顯示分配給每個標記的顏色的圖例。當我設置showlegend = True時,它只顯示一種顏色,而且也顯示錯誤的標籤。我從他們的一個例子中最後添加了輸出。在Plotly中顯示圖例Python

代碼

cities = [dict(
    type = 'scattergeo', 
    locationmode = 'country names', 
    lon = df['lng'].apply(lambda x: float(x)), 
    lat = df['lat'].apply(lambda x: float(x)), 
    text = df['name_of_city'], 
    marker = dict(
     size = df['total_graduates'].apply(lambda x: float(x))/2000, 
     color = df['effective_literacy_rate_total'], 
     colorscale='Portland', 
     line = dict(width=0.5, color='rgb(40,40,40)'), 
     sizemode = 'area' 
    ) 
)] 
layout = dict(
     title = 'Top 500 Indian Cities by Population', 
     showlegend = True, 
     autosize=False, 
     width=800, 
     height=1000, 
     geo = dict(
      resolution=100, 
      scope='asia', 
      lonaxis = dict(range= [ 65.0 ,100.0]), 
      lataxis = dict(range= [ 0.0,40.0 ]), 
      projection=dict(type = 'Mercator'), 
      showland = True, 
      landcolor = 'rgb(50,50,50)', 
      subunitwidth=1, 
      countrywidth=1, 
      subunitcolor="rgb(255, 255, 255)", 
      countrycolor="rgb(255, 255, 255)" 
     ), 
    ) 
fig = dict(data=cities, layout=layout) 
iplot(fig, validate=False, filename='top-500-indian-cities') 

輸出

enter image description here

如何顯示colorscale傳說是這樣嗎?

enter image description here

回答

1

嘗試改變colorscale = 'Jet'和隱藏的傳說與showlegend = False

Output from the code below

import pandas as pd 
import geopy 
import plotly 

#get some real data 
cit = pd.read_html('https://en.wikipedia.org/wiki/List_of_cities_in_India_by_population', header=0)[0] 
lat = pd.read_html('https://en.wikipedia.org/wiki/List_of_cities_by_latitude', header=0)[8] 
cit = cit.merge(lat[lat.Country == 'India'], left_on='City', right_on='City') 


#convert longitude and latitude 
lat = list() 
lon = list() 
for i in cit.index: 
    point = geopy.Point.from_string("{} {}".format(cit.get_value(i, 'Latitude'), cit.get_value(i, 'Longitude'))) 
    lat.append(point[0]) 
    lon.append(point[1]) 

cities = dict(
    type = 'scattergeo', 
    locationmode = 'country names', 
    lat = lat, 
    lon = lon, 
    text = cit['City'].tolist(), 
    showlegend = False, 
    marker = dict(
     size = (cit['Population (2011)[3]']/2000).tolist(), 
     color = cit['Population (2011)[3]'].tolist(), 
     colorscale = 'Jet', 
     line = dict(width=0.5, color='rgb(40,40,40)'), 
     sizemode = 'area', 
     showscale = True 
    ) 
) 

layout = dict(
     title = 'Some Indian Cities by Population', 
     showlegend = True, 
     autosize = False, 
     width = 800, 
     height = 1000, 
     geo = dict(
      resolution=100, 
      scope='asia', 
      lonaxis = dict(range= [ 65.0 ,100.0]), 
      lataxis = dict(range= [ 0.0,40.0 ]), 
      projection=dict(type = 'Mercator'), 
      showland = True, 
      landcolor = 'rgb(50,50,50)', 
      subunitwidth=1, 
      countrywidth=1, 
      subunitcolor="rgb(255, 255, 255)", 
      countrycolor="rgb(255, 255, 255)" 
     ), 

    ) 
fig = dict(data=[cities], layout=layout) 
plotly.plotly.sign_in('user', 'key') 
plot_url = plotly.plotly.plot(fig) 


    [1]: https://i.stack.imgur.com/I9vGD.png 
+0

感謝,加入** showscale =真**又解決了我的問題,謝謝你的努力:) – Arijit