Plotly lib中标签的Python_计算坐标

问题描述 投票:1回答:1

在下面的代码中,地图本身上具有标记的标签。

import plotly.express as px
import plotly.graph_objs as go
import pandas as pd

rows=[['501-600','15','122.58333','45.36667'],
      ['till 500','4','12.5','27.5'],
      ['more 1001','41','-115.53333','38.08'],
      ]

colmns=['bins','data','longitude','latitude']
df=pd.DataFrame(data=rows, columns=colmns)
df = df.astype({"data": int})

fig=px.scatter_geo(df,lon='longitude', lat='latitude',
                      color='bins',
                      opacity=0.5,
                      size='data',
                      projection="natural earth")

fig.update_traces(hovertemplate ='bins')

fig.add_trace(go.Scattergeo(lon=[float(d) + 5 for d in df["longitude"]],
              lat=[float(d) + 0 for d in df["latitude"]],
              text=df["data"],
              textposition="middle right",
              mode='text',
              showlegend=False))
fig.show()

我输入了这段代码:

float(d) + 5 for d in df["longitude"]],
lat=[float(d) + 0 for d in df["latitude"]]

使这些标签靠近标记。enter image description here但是在调整地图大小的情况下,这些标签看起来很奇怪。Length between marker and it's label too big.我相信有可能将标签位置置于不仅绝对值的状态就像现在一样,但是标签坐标和数据中的值之间存在某种依赖性。

python pandas label position plotly
1个回答
0
投票
一种可能对您有用的方法是用空格填充df.data值。例如,这里的数据在新变量tag中填充了三个空格。

# tag = [' 15', ' 4', ' 41'] tag = " " + df['data'].astype(str) fig.add_trace(go.Scattergeo(lon=df["longitude"], lat=df["latitude"], text = tag, textposition="middle right", mode='text', showlegend=False))

或使用texttemplate

fig.add_trace(go.Scattergeo(lon=df["longitude"], lat=df["latitude"], text=df["data"], textposition="middle right", mode='text', showlegend=False, texttemplate=" %{text}" ))

原始:

enter image description here

缩放:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.