在地图上显示一个叠加的散点图。

这是一个围绕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)

表示每个数据点的圆圈的颜色。

可以是:

  • None,使用默认颜色。
  • 一个十六进制字符串,如 "#ffaa00" 或 "#ffaa0088"。
  • 一个RGB或RGBA元组,其中红色、绿色、蓝色和alpha分量指定为0到255的整数或0.0到1.0的浮点数。
  • 用于颜色的列名。此列中的单元格应包含表示为十六进制字符串或颜色元组的颜色,如上所述。

size (str or float or None)

表示每个点的圆圈的大小,以米为单位。

这可以是:

  • None,使用默认大小。
  • 像100这样的数字,指定用于所有数据点的单一大小。
  • 用于大小的列名。这允许每个数据点由不同大小的圆圈表示。

zoom (int)

缩放级别,如https://wiki.openstreetmap.org/wiki/Zoom_levels中所指定的。

use_container_width (bool)

是否用父容器的宽度覆盖地图的原始宽度。如果 use_container_widthTrue (默认),Streamlit 会将地图的宽度设置为与父容器的宽度匹配。如果 use_container_widthFalse, Streamlit 会根据绘图库将图表的宽度设置为适合其内容,最大不超过父容器的宽度。

width (int or None)

图表所需的宽度,以像素表示。如果 widthNone(默认值),Streamlit 会根据绘图库将图表的宽度设置为适合其内容,最大不超过父容器的宽度。如果 width 大于父容器的宽度,Streamlit 会将图表宽度设置为与父容器的宽度匹配。

要使用 width,必须设置 use_container_width=False

height (int or None)

图表所需的高度,以像素表示。如果heightNone(默认值),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
forum

还有问题吗?

我们的 论坛 充满了有用的信息和Streamlit专家。