繁体   English   中英

在Plotly Python中显示图例

[英]Show Legend in Plotly Python

我想显示分配给每个标记的颜色的图例。 当我设置showlegend = True它仅显示一种颜色,并且带有错误的标签。 我在其中一个示例的最后添加了输出。

    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' )

输出量

在此处输入图片说明

如何显示像这样的色标图例?

在此处输入图片说明

尝试更改colorscale = 'Jet'并使用showlegend = False隐藏图例。

下面代码的输出

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM