首页 > 解决方案 > plotly:突出显示/识别 choropleth 中的某些国家/地区

问题描述

我在 Python 中有以下等值线:

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)

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

在图中,我想从视觉上区分两个优先级别,以及应该保持默认格式的非优先国家。不过,所有这些都应该适合相同的色标。

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

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

谢谢

标签: pythonplotlyplotly-python

解决方案


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

  1. 划定国家的边界​​。
  2. 自定义colorscalse.
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)

在此处输入图像描述


推荐阅读