1 前言
在這篇博文中,我們將著重介紹Streamlit中一個核心而重要的函數(shù),那就是st.write()。在之前的三篇文章(《Streamlit 講解專欄(一):安裝以及初步應(yīng)用》、《Streamlit 講解專欄(二):搭建第一個應(yīng)用》和《
Streamlit 講解專欄(三):兩種方案構(gòu)建多頁面》)中,我們已經(jīng)對Streamlit的基礎(chǔ)知識和應(yīng)用開發(fā)流程有了一定的了解。
在初次接觸Streamlit的文章中,我們首先介紹了Streamlit的安裝步驟和基本應(yīng)用方法。我們了解了如何使用st.write()函數(shù)快速呈現(xiàn)文本和數(shù)據(jù),并探索了另外幾個常用組件,如st.header()和st.code()等,為我們構(gòu)建應(yīng)用程序打下了基礎(chǔ)。
接著,在第二篇文章中,我們展示了如何通過Streamlit構(gòu)建一個簡單的應(yīng)用程序。我們使用了st.write()函數(shù)來顯示數(shù)據(jù)、圖表和多媒體內(nèi)容。此外,我們了解了如何結(jié)合其他組件(如按鈕和滑塊)與st.write()函數(shù)一起使用,從而實現(xiàn)用戶與應(yīng)用程序的交互。
最后,在第三篇文章中,我們深入探討了如何在Streamlit應(yīng)用程序中構(gòu)建多個頁面。我們介紹了兩種方案,一種是使用狀態(tài)切換來實現(xiàn)頁面切換,另一種是使用多個.py文件模塊化構(gòu)建多個頁面。這些方案中的每個頁面都使用了st.write()函數(shù)來呈現(xiàn)不同內(nèi)容和交互界面。
在本篇博文中,我們將進一步探索st.write()的各種用法和技巧,通過實例演示和詳細解釋,幫助您更好地理解和應(yīng)用這個核心函數(shù)。通過深入了解st.write()的靈活性和功能,您將能更加自如地構(gòu)建和展示文本、數(shù)據(jù)、圖表和媒體等內(nèi)容,提升您的Streamlit應(yīng)用程序的豐富度和交互性。
讓我們一同深入探索st.write()的精彩用法,為您的Streamlit應(yīng)用程序增添更多魅力!
2 顯示HTML的內(nèi)容
st.write()函數(shù)支持顯示HTML標記語言的內(nèi)容。可以通過傳遞包含HTML標簽的字符串來實現(xiàn)。示例代碼如下:
st.write("<h1 style='color: blue;'>這是HTML內(nèi)容</h1>", unsafe_allow_html=True)
這樣就可以在應(yīng)用程序中顯示帶有HTML樣式的標題。
3 顯示Markdown內(nèi)容
類似地,st.write()函數(shù)也支持顯示Markdown格式的內(nèi)容??梢酝ㄟ^傳遞包含Markdown語法的字符串來實現(xiàn)。示例代碼如下:
st.write("這是一個列表:\n\n- 項目1\n- 項目2\n- 項目3")
這將在應(yīng)用程序中顯示一個項目列表。
4 顯示代碼塊
st.write()函數(shù)支持顯示代碼塊,并可以高亮顯示代碼。示例代碼如下:
code = '''
def hello_world():
print("Hello, World!")
hello_world()
'''
st.code(code, language='python')
這將在應(yīng)用程序中顯示一個Python代碼塊,并進行語法高亮顯示。
5 顯示DataFrame的交互式表格
除了簡單地顯示DataFrame,st.write()函數(shù)還支持將DataFrame轉(zhuǎn)換為交互式表格。示例代碼如下:
import pandas as pd
data = {'姓名': ['張三', '李四', '王五'],
'年齡': [25, 30, 28],
'城市': ['北京', '上海', '廣州']}
df = pd.DataFrame(data)
st.write(df)
這將在應(yīng)用程序中顯示一個交互式表格,可以對數(shù)據(jù)進行排序和過濾等操作。
6 顯示音頻和視頻
st.write()函數(shù)還支持顯示音頻和視頻文件。示例代碼如下:
audio_file = open('audio.mp3', 'rb')
st.write("這是一段音頻:")
st.audio(audio_file, format='audio/mp3')
video_file = open('video.mp4', 'rb')
st.write("這是一段視頻:")
st.video(video_file, format='video/mp4')
這將在應(yīng)用程序中顯示一段音頻和視頻。
7 顯示圖表
st.write()函數(shù)可以用于顯示各種類型的圖表,例如折線圖、柱狀圖、散點圖等。示例代碼如下:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y)
st.write(fig)
這將在應(yīng)用程序中顯示一個正弦曲線的折線圖。
在上述示例代碼中,我們創(chuàng)建了一個包含正弦曲線數(shù)據(jù)的折線圖,并將其傳遞給st.write()函數(shù)。該函數(shù)將自動識別并顯示傳遞的Matplotlib圖形。
此外,對于其他常見的圖表庫,例如Seaborn、Plotly和Bokeh等,st.write()函數(shù)同樣適用。只需將生成的圖表對象傳遞給st.write()函數(shù)即可顯示在Streamlit應(yīng)用程序中。
8 顯示圖片
使用st.write()函數(shù)可以顯示圖片文件或URL鏈接中的圖片。下面是使用兩種方式顯示圖片的示例:
1.顯示本地圖片文件:
from PIL import Image
import streamlit as st
# 加載本地圖片文件
image = Image.open("image.jpg")
# 使用st.write()函數(shù)顯示圖片
st.write("顯示本地圖片文件")
st.write(image)
2.顯示URL鏈接中的圖片:
import streamlit as st
# 圖片URL鏈接
image_url = "https://example.com/image.jpg"
# 使用st.write()函數(shù)顯示圖片
st.write("顯示URL鏈接中的圖片")
st.write(f"")
在這兩個示例中,我們通過st.write()函數(shù)來顯示圖片。如果要顯示本地圖片文件,可以使用PIL庫加載圖片,并將圖片對象傳遞給st.write()函數(shù)。如果要顯示URL鏈接中的圖片,可以使用Markdown語法,在st.write()中以[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-MxVKelbh-1691231122939)({image_url})]的格式插入URL鏈接。
請注意,在Streamlit應(yīng)用程序中使用st.write()來顯示大型圖像文件可能會導(dǎo)致加載時間較長。如果需要更好的性能和用戶體驗,推薦使用st.image()函數(shù)來顯示圖片,該函數(shù)支持本地圖片文件和URL鏈接。
9 顯示地圖
使用 st.write() 函數(shù)來顯示地理位置和地圖是相對簡單的。下面是一個使用 st.write() 函數(shù)顯示地圖的示例:
import streamlit as st
# 獲取地理位置的緯度和經(jīng)度
latitude = 40.7128
longitude = -74.0060
# 使用 st.write() 函數(shù)顯示地圖
st.write(f"緯度:{latitude}, 經(jīng)度:{longitude}")
st.write(f"")
在這個示例中,我們首先指定地理位置的緯度和經(jīng)度。然后,使用 st.write() 函數(shù)顯示地理位置的緯度和經(jīng)度。最后,使用 Markdown 語法在 st.write() 中插入地圖的靜態(tài)圖像URL鏈接。這里的示例使用了Google Maps的API來生成靜態(tài)地圖圖像鏈接。
請注意,在代碼中的URL鏈接中,你需要將 YOUR_API_KEY 替換為你的Google Maps API密鑰,并確保你具有針對該API的有效訪問權(quán)限。
有關(guān)更高級的地圖功能,例如交互式地圖和地圖工具欄控件,建議使用專門的地圖可視化庫,如Folium或Plotly。但是,對于簡單的靜態(tài)地圖顯示,使用 st.write() 函數(shù)配合Markdown語法即可滿足基本需求。
10 顯示PDF文件
使用 st.write() 函數(shù)來嵌入和展示 PDF 文件是相對簡單的。下面是一個使用 st.write() 函數(shù)顯示 PDF 文件的示例:
import streamlit as st
# 讀取 PDF 文件的二進制數(shù)據(jù)
with open("document.pdf", "rb") as f:
pdf_bytes = f.read()
# 使用 st.write() 函數(shù)顯示 PDF 文件
st.write(pdf_bytes, format="pdf")
在這個示例中,我們首先使用 open() 函數(shù)以二進制模式讀取 PDF 文件,并將其保存到 pdf_bytes 變量中。然后,使用 st.write() 函數(shù)將 pdf_bytes 變量作為參數(shù)傳遞,并指定 format=“pdf” 來告訴 Streamlit 顯示 PDF 文件。
請注意,在代碼中的 open() 函數(shù)中需要指定正確的 PDF 文件路徑。確保你的應(yīng)用程序目錄中存在指定的 PDF 文件。
這種方法適用于顯示較小的 PDF 文件。如果需要處理較大的 PDF 文件或者需要更高級的 PDF 渲染和交互功能,建議使用專門的 PDF 處理庫,如 PyMuPDF 或 pdf2image。
11 顯示文件下載鏈接
要在 st.write() 中添加文件下載鏈接,以便用戶可以方便地下載文件,可以使用 Markdown 語法來創(chuàng)建一個帶有下載鏈接的文本。下面是一個示例:
import streamlit as st
# 文件下載鏈接
file_url = "http://www.example.com/example_file.csv"
# 在 st.write() 中添加文件下載鏈接
st.write(f"點擊[此處]({file_url})下載文件")
在上述示例中,我們在 st.write() 中使用 Markdown 語法創(chuàng)建了一個帶有下載鏈接的文本。點擊用戶在瀏覽器中點擊該鏈接時,將會下載指定的文件。
請注意,在示例代碼中的 file_url 中,你需要將鏈接 http://www.example.com/example_file.csv 替換為你要提供給用戶下載的文件的實際鏈接。
這種方法適用于在 Markdown 內(nèi)容中添加下載鏈接,但用戶點擊鏈接后文件將在瀏覽器中打開。如果要強制瀏覽器下載文件而不是打開文件,你可以將鏈接的標記類型更改為 application/octet-stream,或者使用其他下載文件的技術(shù)。
盡管使用 st.write() 函數(shù)創(chuàng)建下載鏈接是一種方法,但 Streamlit 也提供了 st.download_button() 和 st.file_downloader() 等特定的函數(shù)來處理文件下載的需求。這些函數(shù)提供更多的靈活性和功能,適合處理復(fù)雜的文件下載需求。
12 結(jié)語
通過本篇博文,我們詳細介紹了Streamlit中的st.write()函數(shù)的各種用法。使用st.write(),我們可以輕松地顯示HTML和Markdown內(nèi)容,展示交互式表格、圖表、音頻、視頻,甚至嵌入和展示PDF文件。我們還學(xué)會了如何添加文件下載鏈接,方便用戶獲取所需文件。st.write()是一個非常實用、靈活且強大的函數(shù),為展示和分享數(shù)據(jù)提供了很大的便利。希望這篇博文對你在Streamlit應(yīng)用程序中的展示內(nèi)容方面有所幫助!文章來源:http://www.zghlxwxcb.cn/news/detail-626840.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-626840.html
到了這里,關(guān)于探索Streamlit中強大而靈活的 st.write() 函數(shù)(五):構(gòu)建豐富多樣的應(yīng)用界面的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!