如何在Python Plotly地图图上显示负数和正数作为大小和颜色

时间:2018-05-12 15:42:15

标签: python plotly mapbox

我刚用Plotly创建了一张地图,显示了年份的销售差异,因此结果有负数和正数。

我希望显示两种不同的颜色,表示正数和负数,圆的大小表示销售差异的数量。 我想这样做,即使是负数,所以小圆圈显示体积大但颜色与正面颜色不同。

我的代码只显示颜色的最大和最小数字差异,负数太小。

如何在图表上显示2种不同颜色和圆圈大小的销售差异?

import plotly.plotly as py
from plotly.graph_objs import *


mapbox_access_token = '**Mapbox API**'

data = Data([
    Scattermapbox(
        lat=part1_loc['Latitude'],
        lon=part1_loc['Longitude'],
        text =  part1_loc['diff2018'], 
        mode='markers',
        marker=Marker(
            showscale=True,
                cmax=39000,
                cmin=-27000,
            size= part1_loc['diff2018'],
            color =part1_loc['diff2018'],
            #color ='rgb(255, 0, 0)',
            colorscale= 'Portland',
            opacity=0.6,
            symbol = 'circle',

        ),

    )
])
layout = Layout(
    autosize=True,
    hovermode='closest',
    width=1450,
        margin=go.Margin(
        l=10,
        r=100,
        b=10,
        t=10
        ),
    height=650,
    mapbox=dict(
        accesstoken=mapbox_access_token,
        bearing=0,#
        center=dict(
            lat=-37,
            lon=175
        ),
        pitch=0,
        zoom=8.9,
        style='light',


    ),
)

fig = dict(data=data, layout=layout)
py.iplot(fig, filename='Sales_diff')

这是你的结果图;

enter image description here

我还在Plotly here is the link找到了一个用于两个变量的例子 但我不知道如何将负数和正数作为一个数据中的不同变量分开。

提前谢谢

1 个答案:

答案 0 :(得分:0)

根据我的经验,我使用绝对值来增加负数的大小。

就我而言,数据集非常均衡,值越远离零,可视化就越重要。所以,我决定根据它们的值(如你所做的那样)为圆圈着色并设置它们的大小以定义它们的重要性。

在您的情况下,您只需要设置参数大小如下:

size= part1_loc['diff2018'].abs()

请注意,此解决方案对我的目的来说是最佳的,这对于接近于零的值并不重要。相反,如果你不希望它们太小,你需要设置一个最小的大小(可能有一个列表理解?)。