首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >情节:突出显示/识别特定的国家/地区

情节:突出显示/识别特定的国家/地区
EN

Stack Overflow用户
提问于 2020-06-25 09:55:14
回答 2查看 564关注 0票数 0

我在Python中有以下几点:

代码语言:javascript
复制
import plotly.offline as py
import plotly.graph_objs as go
countries = ['BDI', 'BEN', 'BFA', 'BWA', 'CIV', 'CMR', 'COD', 'CPV', 'ETH', 'GHA', 'GIN', 'GMB', 'KEN', 'LBR', 'LSO', 'MDG', 'MLI', 'MOZ', 'MUS', 'MWI', 'NER', 'NGA', 'RWA', 'SEN', 'SLE', 'SOM', 'STP', 'TCD', 'TGO', 'TZA', 'UGA', 'ZAF', 'ZMB', 'ZWE']
z = [5, 6, 1, 1, 2, 14, 7, 1, 3, 6, 1, 2, 13, 1, 3, 11, 4, 2, 1, 6, 1, 50, 18, 5, 2, 4, 1, 1, 4, 16, 15, 4, 10, 4]
layout = dict(geo={'scope': 'africa'})
data = dict(
    type='choropleth',
    locations=countries,
    locationmode='ISO-3',
    colorscale='Viridis',
    z=z)
map = go.Figure(data=[data], layout=layout)
py.plot(map)

我想将一些国家分为两类中的一类,比如说优先级。一些是优先级1,一些是优先级2,还有一些是非优先级。此优先级与绘图中相应的z值无关。

在图中,我想从视觉上区分两个优先级级别,以及它们与非优先级国家/地区之间的区别,这些国家/地区应该保持默认格式。不过,所有的颜色都应该符合相同的色阶。

这可以通过更改这些国家的阴影纹理来实现,例如对角线阴影。或者通过具有独特的轮廓,例如更粗、不同的颜色或虚线。

很抱歉没有非常具体地说明所需的输出,我不确定plotly的能力,这是让一些国家脱颖而出的结果,而不考虑它们的情节价值,这很重要。我对人们以前用过的任何方法都持开放态度!

谢谢

EN

回答 2

Stack Overflow用户

发布于 2020-06-25 13:20:59

我在这方面也没有经验,但我建议两种方法。

定义country.

  • customize
  1. 的边界

代码语言:javascript
复制
import plotly.offline as py
import plotly.graph_objs as go
countries = ['BDI', 'BEN', 'BFA', 'BWA', 'CIV', 'CMR', 'COD', 'CPV', 'ETH', 'GHA', 'GIN', 'GMB', 'KEN', 'LBR', 'LSO', 'MDG', 'MLI', 'MOZ', 'MUS', 'MWI', 'NER', 'NGA', 'RWA', 'SEN', 'SLE', 'SOM', 'STP', 'TCD', 'TGO', 'TZA', 'UGA', 'ZAF', 'ZMB', 'ZWE']
z = [5, 6, 1, 1, 2, 14, 7, 1, 3, 6, 1, 2, 13, 1, 3, 11, 4, 2, 1, 6, 1, 50, 18, 5, 2, 4, 1, 1, 4, 16, 15, 4, 10, 4]
layout = dict(geo={'scope': 'africa'})
# colorscalec customize
scl = [[0.0, 'rgb(242,240,247)'],[0.2, 'rgb(218,218,235)'],[0.4, 'rgb(188,189,220)'],\
            [0.6, 'rgb(158,154,200)'],[0.8, 'rgb(117,107,177)'],[1.0, 'rgb(84,39,143)']]

data = dict(
    type='choropleth',
    locations=countries,
    locationmode='ISO-3',
    colorscale=scl,
    autocolorscale = False,
    marker = dict(line = dict (color = 'rgb(255,255,255)', width = 2)),
    z=z)
map = go.Figure(data=[data], layout=layout)
py.plot(map)

票数 0
EN

Stack Overflow用户

发布于 2020-06-25 18:52:09

我的解决方案是,从@r-beginners开始,为每个优先级组都有一个单独的轨迹,每个优先级组都有不同的颜色轮廓。在下面的代码中,这些跟踪是用函数get_trace定义的。

代码语言:javascript
复制
import pandas as pd
import plotly.offline as py
import plotly.graph_objs as go

colour_1 = "rgb(190, 226, 222)"
colour_2 = "rgb(27, 173, 172)"
colour_3 = "rgb(0, 93, 100)"

colourscale = [[0, colour_1],
               [0.2, colour_2],
               [1, colour_3]]

countries = ['BDI', 'BEN', 'BFA', 'BWA', 'CIV', 'CMR', 'COD', 'CPV', 'ETH', 'GHA', 'GIN', 'GMB', 'KEN', 'LBR', 'LSO', 'MDG', 'MLI', 'MOZ', 'MUS', 'MWI', 'NER', 'NGA', 'RWA', 'SEN', 'SLE', 'SOM', 'STP', 'TCD', 'TGO', 'TZA', 'UGA', 'ZAF', 'ZMB', 'ZWE']
z = [5, 6, 1, 1, 2, 14, 7, 1, 3, 6, 1, 2, 13, 1, 3, 11, 4, 2, 1, 6, 1, 50, 18, 5, 2, 4, 1, 1, 4, 16, 15, 4, 10, 4]
counts = pd.Series(data=z, index=countries)
code_to_priority = {'MLI': 2, 'BWA': 0, 'CPV': 0, 'ZAF': 0, 'TGO': 1, 'COD': 2, 'KEN': 0, 'SSD': 2, 'CIV': 0, 'NGA': 1, 'MWI': 0, 'SOM': 0, 'MUS': 0, 'MRT': 2, 'ETH': 0, 'RWA': 1, 'TZA': 0, 'TCD': 2, 'MOZ': 2, 'LBR': 0, 'MDG': 1, 'GIN': 1, 'LSO': 0, 'BFA': 2, 'BDI': 0, 'SLE': 0, 'CMR': 0, 'SEN': 0, 'BEN': 0, 'GHA': 0, 'NER': 2, 'ZMB': 0, 'ZWE': 0, 'GMB': 0, 'STP': 0, 'UGA': 0}


def get_trace(priority):
    line_width = 2
    if priority == 0:
        outline_params = dict()  # no special outline
    elif priority == 1:
        outline_params = dict(marker=dict(line=dict(
            color='rgb(250, 86, 93)',
            width=line_width
        )))  # red outline
    else:
        outline_params = dict(marker=dict(line=dict(
            color='rgb(247, 150, 70)',
            width=line_width
        )))  # orange outline
    mask = counts.index.map(code_to_priority) == priority
    out = dict(
        type='choropleth',
        locations=list(counts[mask].index),
        locationmode='ISO-3',
        colorscale=colourscale,
        z=list(counts[mask]),
        zmin=0,
        zmax=counts.max())
    out.update(outline_params)
    return out


data_p0 = get_trace(0)
data_p1 = get_trace(1)
data_p2 = get_trace(2)
layout = dict(
    geo={'scope': 'africa'},
    title='Number of projects supported by the Help Desk, by country',
    title_x=0.5)

map = go.Figure(data=[data_p0, data_p2, data_p1], layout=layout)
py.plot(map)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62566708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档