这也太强大了,效果这么好看

你可以通过 Streamlit 与多个可视化库的集成,在应用中展示丰富的图表,并利用 Streamlit 的动态交互功能实现图表的动态更新。下面是一些使用 Streamlit 展示各种图表并实现动态效果的示例,分别使用不同的可视化库如 MatplotlibPlotlyAltairBokeh

官网链接
访问
在这里插入图片描述

1. Matplotlib 动态图表示例

Matplotlib 是一个强大的 Python 绘图库,适用于静态图表。你可以通过 Streamlit 的动态控件,如滑动条或按钮,来更新图表的内容。

代码示例:
import streamlit as st
import matplotlib.pyplot as plt
import numpy as np

st.title("Dynamic Matplotlib Chart")

# 动态滑块控制图表内容
x_range = st.slider("Select range of x", 1, 100, (10, 50))

# 生成数据
x = np.linspace(0, 10, 100)
y = np.sin(x)

# 动态更新 x 轴范围
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xlim(x_range[0], x_range[1])

# 展示图表
st.pyplot(fig)

2. Plotly 动态图表示例

Plotly 支持交互式图表,允许缩放、悬停查看详细信息等。它与 Streamlit 无缝集成,非常适合动态展示数据。

代码示例:
import streamlit as st
import plotly.express as px
import numpy as np

st.title("Dynamic Plotly Chart")

# 动态滑块控制数据生成
n_points = st.slider("Number of points", min_value=10, max_value=500, value=100)

# 生成动态数据
x = np.random.randn(n_points)
y = np.random.randn(n_points)

# 使用 Plotly 生成散点图
fig = px.scatter(x=x, y=y, labels={'x': 'X Axis', 'y': 'Y Axis'}, title="Random Scatter Plot")

# 展示动态 Plotly 图表
st.plotly_chart(fig)

3. Altair 动态图表示例

Altair 是一个声明式的图表库,允许你通过简单的语法生成可交互的图表。适用于数据科学和数据分析领域。

代码示例:
import streamlit as st
import altair as alt
import pandas as pd
import numpy as np

st.title("Dynamic Altair Chart")

# 动态生成数据
x = np.arange(100)
y = np.random.randn(100)
data = pd.DataFrame({"x": x, "y": y})

# Altair 图表
chart = alt.Chart(data).mark_line().encode(
    x='x',
    y='y'
).properties(
    title="Dynamic Altair Line Chart"
)

# 动态滑块更新数据范围
range_x = st.slider("Select x-axis range", 0, 100, (10, 90))

# 过滤数据
filtered_data = data[(data["x"] >= range_x[0]) & (data["x"] <= range_x[1])]

# 更新图表
st.altair_chart(chart.encode(x=alt.X('x', scale=alt.Scale(domain=range_x))), use_container_width=True)

4. Bokeh 动态图表示例

Bokeh 是一个灵活且功能丰富的交互式可视化库,适用于构建复杂的动态图表。

代码示例:
import streamlit as st
from bokeh.plotting import figure
from bokeh.models import ColumnDataSource
import numpy as np

st.title("Dynamic Bokeh Chart")

# 动态滑块
num_points = st.slider("Number of points", min_value=10, max_value=200, value=50)

# 生成随机数据
x = np.linspace(0, 10, num_points)
y = np.sin(x)

# Bokeh 图表
source = ColumnDataSource(data=dict(x=x, y=y))
p = figure(title="Dynamic Bokeh Sine Wave", x_axis_label='x', y_axis_label='y')
p.line('x', 'y', source=source, line_width=2)

# 展示 Bokeh 图表
st.bokeh_chart(p)

5. 动态条形图(Bar Chart)示例

可以通过 st.bar_chart 实现简单的动态条形图。例如,使用动态滑块生成更新的随机数据,并实时展示变化。

代码示例:
import streamlit as st
import numpy as np
import pandas as pd

st.title("Dynamic Bar Chart")

# 动态滑块控制数据
num_bars = st.slider("Number of bars", min_value=3, max_value=15, value=5)

# 生成随机数据
data = pd.DataFrame({
    'category': [f'Category {i}' for i in range(num_bars)],
    'value': np.random.randint(1, 100, num_bars)
})

# 展示动态条形图
st.bar_chart(data.set_index('category'))

6. 动态折线图(Line Chart)示例

Streamlit 提供了简单的 st.line_chart() 函数,可以用于实时更新和展示动态折线图。

代码示例:
import streamlit as st
import numpy as np
import pandas as pd

st.title("Dynamic Line Chart")

# 动态滑块控制数据点数量
num_points = st.slider("Number of points", min_value=10, max_value=100, value=50)

# 生成随机数据
data = pd.DataFrame(np.random.randn(num_points, 2), columns=['A', 'B'])

# 展示动态折线图
st.line_chart(data)

总结:

以上代码展示了如何使用多种可视化库(MatplotlibPlotlyAltairBokeh)以及 Streamlit 自带的图表功能(Bar ChartLine Chart)来实现图表的动态更新。你可以根据需求选择不同的库来丰富 Streamlit 应用的可视化效果,并且通过 Streamlit 的交互组件(如滑块、文本框等)实现数据的动态更新。

这些图表均支持在 Streamlit 中的实时交互,让用户能够通过输入控件与图表互动,改变显示的数据或图表的形式。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大霸王龙

+V来点难题

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值