У меня есть шейп-файл областей/полигонов, и я пытаюсь показать это в choropleth_mapbox в сюжетном экспрессе. То, что я хочу показать, это только границы/границы. то есть цвет заливки прозрачный!
Я делал что-то вроде этого:
import geopandas as gpd
import plotly.express as px
from plotly.offline import plot
import pandas as pd
#read my geo dataframe
geodf = 'path/myShp.shp'
geodf = gpd.read_file(geodf)
# shape file is a different CRS, change to lon/lat GPS co-ordinates
geodf = geodf.to_crs("WGS84")
fig = px.choropleth_mapbox(
geodf.set_index("objectid"),
geojson=geodf.geometry,
locations=geodf.index,
opacity =0.1,
center=dict(lat=52.484, lon=-1.88141),
mapbox_style = "carto-positron",
zoom=9,
)
fig.update_layout(coloraxis_showscale=False)
plot(fig)
Приведенный выше код по-прежнему показывает полигоны с заполненными цветами. Как удалить цвет заливки и оставить только границу? Я пытался поиграть с непрозрачностью, но это влияет как на цвет заливки, так и на границу! Они оба управляются с использованием одних и тех же параметров? Можно ли применить к ним разные свойства?
Чтобы лучше объяснить, чего я пытаюсь достичь, я использовал QGIS для создания чего-то похожего на то, что в настоящее время делает мой код (1) и что я пытаюсь получить (2), см. изображения ниже:
1-Текущий код: 2-Желаемый результат:
Заранее спасибо!
Если вам нужны только граничные линии, вы можете добавить слой геоджсон. Использовал другую геометрию, так как ваша геометрия мне недоступна.
import geopandas as gpd
import plotly.express as px
import plotly.graph_objects as go
from shapely.geometry import MultiPolygon
from plotly.offline import plot
import pandas as pd
# read my geo dataframe
geodf = "path/myShp.shp"
# geodf = gpd.read_file(geodf)
geodf = gpd.read_file(gpd.datasets.get_path("naturalearth_lowres"))
# shape file is a different CRS, change to lon/lat GPS co-ordinates
geodf = geodf.to_crs("WGS84")
# create an empty figure with a mapbox trace
fig = go.Figure(go.Scattermapbox())
# now add boundaries we want
fig.update_layout(
coloraxis_showscale=False,
mapbox = {
"style":"carto-positron",
"layers": [
{
"source": geodf["geometry"].__geo_interface__,
"type": "line",
"color": "red"
}
]
},
)
хорошо - упростили код, теперь нет предупреждений. Кстати, если вы будете следовать предупреждениям об устаревании shapely 1.8 в отношении shapely 2.0, вы увидите, что код, генерирующий предупреждение, — панды / геопанды. то есть, если вы или я кодируем все, что совместимо с будущей версией, вы все равно получите эти предупреждения...
Большое спасибо! Это на самом деле делает это хорошо, единственная проблема заключается в том, что он выдает предупреждение об устаревании! «ShapelyDeprecationWarning: Лен для геометрии, состоящей из нескольких частей, устарел и будет удален в Shapely 2.0», по этой причине я немного не хочу использовать именно этот метод, есть идеи, как это можно обновить?