Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

224
Views
Streamlit devuelve un error si se agrega get_elevation a ColumnLayer

Soy nuevo en streamlit y estoy tratando de mostrar una capa pydeck con columnas. Quiero que la altura de la columna sea la columna de rain (mm) que estoy proporcionando en un marco de datos, pero cada vez que uso get_evelation="rain (mm)" , aparece el siguiente error:

 Error: Function calls not allowed in JSON expressions at http://localhost:8501/static/js/7.f6560317.chunk.js:2:512302 at u (http://localhost:8501/static/js/7.f6560317.chunk.js:2:512666) at http://localhost:8501/static/js/7.f6560317.chunk.js:2:512596 at Array.forEach (<anonymous>) at u (http://localhost:8501/static/js/7.f6560317.chunk.js:2:512568) at u (http://localhost:8501/static/js/7.f6560317.chunk.js:2:512673) at t.default (http://localhost:8501/static/js/7.f6560317.chunk.js:2:512250) at eh [as convertFunction] (http://localhost:8501/static/js/7.f6560317.chunk.js:2:1049691) at http://localhost:8501/static/js/7.f6560317.chunk.js:2:2778265 at y (http://localhost:8501/static/js/7.f6560317.chunk.js:2:2778495)

La función que estoy usando para renderizar mi mapa es la siguiente:

 def make_map2(data, lat, lon, zoom): column_layer = pdk.Layer( "ColumnLayer", data=data, get_position=["lon", "lat"], get_elevation="rain (mm)", elevation_scale=20, radius=2000, get_fill_color=[180, 0, 200, 140], pickable=True, auto_highlight=True, extruded=True ) tooltip={'html': 'Location: {location}</br> Date: {date} </br> Rainfall (mm): {rain_mm}</br> Type: {type}'} r = pdk.Deck(column_layer, initial_view_state={ "latitude": lat, "longitude": lon, "zoom": zoom, "pitch": 60 }, tooltip=tooltip, map_provider="mapbox", map_style='mapbox://styles/mapbox/light-v9', ) map2 = st.write(r) return map2

Los datos de entrada tienen esta estructura:

 date location lat lon rain (mm) type 0 2021-09-15 lowestoft 52.483 1.727 54.115513 predicted 1 2021-09-15 heathrow 51.479 -0.449 30.008739 predicted 2 2021-09-15 eastbourne 50.762 0.285 90.584396 predicted 3 2021-09-15 cambridge 52.245 0.102 51.445862 predicted 4 2021-09-15 manston 51.346 1.337 81.089737 predicted 5 2021-09-15 oxford 51.761 -1.262 39.420902 predicted
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Esto podría ser tan simple como un argumento mal escrito:

get_evelation="rain (mm)" debería ser get_elevation="rain (mm)"


Editar: independientemente del nombre del argumento mal escrito, este error ocurre en la forma en que pydeck analiza los literales de cadena. pydeck asume que rain (mm) es una llamada de función y arroja un error. Nombrar la columna get_elevation sin espacios ni paréntesis permite que el ejemplo funcione:

 import pandas as pd import numpy as np import streamlit as st import pydeck as pdk df = pd.read_csv("~/Desktop/data.csv") #to prove hypothesis, make column name one continuous string with no extra characters df["rain_noparens"] = df["rain (mm)"] view = pdk.data_utils.compute_view(df[["lon", "lat"]]) view.pitch = 75 view.bearing = 60 column_layer = pdk.Layer( "ColumnLayer", data=df, get_position=["lon", "lat"], get_elevation="rain_noparens", elevation_scale=20, radius=2000, get_fill_color=[180, 0, 200, 140], pickable=True, auto_highlight=True, ) tooltip = { "html": "Location: {location}</br> Date: {date} </br> Rainfall (mm): {rain (mm)}</br> Type: {type}" } r = pdk.Deck( column_layer, initial_view_state=view, tooltip=tooltip, map_provider="mapbox", map_style="mapbox://styles/mapbox/light-v9", ) st.pydeck_chart(r)

Ver también: https://github.com/streamlit/streamlit/issues/3992

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!