在地图上显示一个叠加的散点图。
这是一个围绕st.pydeck_chart的封装,用于快速在地图上创建散点图,具有自动居中自动缩放功能。
使用此命令时,Mapbox 提供地图瓦片以渲染地图内容。请注意,Mapbox 是第三方产品,Streamlit 对 Mapbox 或 Mapbox 提供的任何内容或信息不承担任何责任或义务。
Mapbox 要求用户注册并提供令牌,然后用户才能请求地图瓦片。目前,Streamlit 为您提供了此令牌,但这可能随时更改。我们强烈建议所有用户创建并使用自己的个人 Mapbox 令牌,以避免对其体验造成任何中断。您可以使用 mapbox.token 配置选项来执行此操作。Mapbox 的使用受 Mapbox 使用条款的约束。
要为自己获取令牌,请在https://mapbox.com创建一个账户。 有关如何设置配置选项的更多信息,请参阅 https://docs.streamlit.io/develop/api-reference/configuration/config.toml。
| 函数签名[source] | |
|---|---|
st.map(data=None, *, latitude=None, longitude=None, color=None, size=None, zoom=None, use_container_width=True, width=None, height=None) | |
| 参数 | |
data (Anything supported by st.dataframe) | 要绘制的数据。 |
latitude (str or None) | 包含图表中数据点的纬度坐标的列的名称。 如果为None,纬度数据将来自任何名为'lat'、'latitude'、'LAT'或'LATITUDE'的列。 |
longitude (str or None) | 包含图表中数据点的经度坐标的列的名称。 如果为None,经度数据将来自任何名为'lon'、'longitude'、'LON'或'LONGITUDE'的列。 |
color (str or tuple or None) | 表示每个数据点的圆圈的颜色。 可以是:
|
size (str or float or None) | 表示每个点的圆圈的大小,以米为单位。 这可以是:
|
zoom (int) | 缩放级别,如https://wiki.openstreetmap.org/wiki/Zoom_levels中所指定的。 |
use_container_width (bool) | 是否用父容器的宽度覆盖地图的原始宽度。如果 use_container_width 是 True (默认),Streamlit 会将地图的宽度设置为与父容器的宽度匹配。如果 use_container_width 是 False, Streamlit 会根据绘图库将图表的宽度设置为适合其内容,最大不超过父容器的宽度。 |
width (int or None) | 图表所需的宽度,以像素表示。如果 width 是 None(默认值),Streamlit 会根据绘图库将图表的宽度设置为适合其内容,最大不超过父容器的宽度。如果 width 大于父容器的宽度,Streamlit 会将图表宽度设置为与父容器的宽度匹配。 要使用 width,必须设置 use_container_width=False。 |
height (int or None) | 图表所需的高度,以像素表示。如果height是None(默认值),Streamlit会根据绘图库自动调整图表的高度以适应其内容。 |
示例
import streamlit as st import pandas as pd import numpy as np df = pd.DataFrame( np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4], columns=["lat", "lon"], ) st.map(df)您还可以自定义数据点的大小和颜色:
st.map(df, size=20, color="#0044ff")最后,您可以选择不同的列用于纬度和经度组件,还可以根据其他列动态设置每个数据点的大小和颜色:
import streamlit as st import pandas as pd import numpy as np df = pd.DataFrame( { "col1": np.random.randn(1000) / 50 + 37.76, "col2": np.random.randn(1000) / 50 + -122.4, "col3": np.random.randn(1000) * 100, "col4": np.random.rand(1000, 4).tolist(), } ) st.map(df, latitude="col1", longitude="col2", size="col3", color="col4")
| 函数签名[来源] | |
|---|---|
element.add_rows(data=None, **kwargs) | |
| 参数 | |
data (pandas.DataFrame, pandas.Styler, pyarrow.Table, numpy.ndarray, pyspark.sql.DataFrame, snowflake.snowpark.dataframe.DataFrame, Iterable, dict, or None) | 要连接的表格。可选。 |
**kwargs (pandas.DataFrame, numpy.ndarray, Iterable, dict, or None) | 要连接的有名称的数据集。可选。你只能传入1个数据集(包括在data参数中的那个)。 |
示例
import streamlit as st import pandas as pd import numpy as np df1 = pd.DataFrame( np.random.randn(50, 20), columns=("col %d" % i for i in range(20)) ) my_table = st.table(df1) df2 = pd.DataFrame( np.random.randn(50, 20), columns=("col %d" % i for i in range(20)) ) my_table.add_rows(df2) # Now the table shown in the Streamlit app contains the data for # df1 followed by the data for df2.你可以对图表做同样的事情。例如,如果你想在折线图中添加更多数据:
# Assuming df1 and df2 from the example above still exist... my_chart = st.line_chart(df1) my_chart.add_rows(df2) # Now the chart shown in the Streamlit app contains the data for # df1 followed by the data for df2.对于数据集已命名的图表,您可以使用关键字参数传递数据,其中键是名称:
my_chart = st.vega_lite_chart( { "mark": "line", "encoding": {"x": "a", "y": "b"}, "datasets": { "some_fancy_name": df1, # <-- named dataset }, "data": {"name": "some_fancy_name"}, } ) my_chart.add_rows(some_fancy_name=df2) # <-- name used as keyword
还有问题吗?
我们的 论坛 充满了有用的信息和Streamlit专家。