首頁  >  文章  >  後端開發  >  Streamlit 部分掌握資料視覺化和圖表類型

Streamlit 部分掌握資料視覺化和圖表類型

Barbara Streisand
Barbara Streisand原創
2024-10-30 06:20:27539瀏覽

Streamlit Part Mastering Data Visualization and Chart Types

在當今快節奏的資料科學世界中,有效地視覺化資料至關重要。無論您是經驗豐富的數據分析師還是剛開始您的旅程,掌握各種視覺化技術都可以大大增強您傳達見解和推動決策的能力。本綜合指南探討了Streamlit,這是一個用於創建交互式Web 應用程式的流行Python 庫,並介紹了12 種強大的圖表類型,您可以輕鬆創建以可視化數據。從簡單的條形圖到高級地理空間視覺化,本教程涵蓋了所有內容。


Streamlit及其視覺化功能簡介

Streamlit 徹底改變了資料科學家和開發人員創建用於資料視覺化的互動式 Web 應用程式的方式。憑藉其直覺的 API 以及與流行 Python 庫的無縫集成,Streamlit 可讓您在幾分鐘內將資料腳本轉換為可共享的 Web 應用程式。在本指南中,我們將重點介紹 Streamlit 在創建各種圖表類型方面的多功能性,每種圖表類型都針對不同的資料視覺化需求量身定制。


1. 面積圖

面積圖簡介

面積圖非常適合顯示一段時間內或跨類別的累積總數。它們強調變化的幅度以及不同數據集之間的關係,使它們非常適合追蹤趨勢和比較多個數據系列。

建立面積圖

import numpy as np
import pandas as pd
import streamlit as st

st.write("### 1. Area Chart")

# Generate random data for the area chart
chart_data = pd.DataFrame(
    np.random.randn(20, 3),
    columns=["col1", "col2", "col3"],
)

# Create an area chart using the random data
st.area_chart(
    chart_data,
    x="col1",
    y=["col2", "col3"],
    color=["#FF0000", "#0000FF"],
)

使用案例

  • 銷售成長:可視化不同季度的銷售成長。
  • 網站流量:追蹤一段時間內的訪客數量。
  • 累積指標: 顯示總收入或支出等累積指標。

客製化技巧

  • 調整顏色:修改顏色參數以符合您的品牌或偏好。
  • 新增標題和標籤:透過新增標題和軸標籤來增強清晰度。
  • 修改軸:調整軸的比例或範圍以獲得更好的資料表示。

2. 長條圖

長條圖簡介

長條圖是比較不同類別或組別的基本方法。它們在顯示離散資料點方面非常有效,可以輕鬆比較不同類別的數量。

建立長條圖

import numpy as np
import pandas as pd
import streamlit as st

st.write("### 1. Area Chart")

# Generate random data for the area chart
chart_data = pd.DataFrame(
    np.random.randn(20, 3),
    columns=["col1", "col2", "col3"],
)

# Create an area chart using the random data
st.area_chart(
    chart_data,
    x="col1",
    y=["col2", "col3"],
    color=["#FF0000", "#0000FF"],
)

使用案例

  • 按地區分列的銷售:比較不同地區的銷售量。
  • 產品熱度:顯示各種產品的熱度。
  • 調查結果:可視化調查問題的答案。

自訂選項

  • 條形顏色:雖然範例使用預設設置,但您可以使用其他參數或透過預處理資料來自訂條形顏色。
  • 方向:改變條形的方向(水平或垂直)以獲得更好的可讀性。
  • 標籤和圖例:新增標籤和圖例以為資料提供更多上下文。

3.折線圖

折線圖簡介

折線圖非常適合顯示連續資料(例如時間序列)的趨勢。它們有助於追蹤變化、識別模式以及比較同一時間間隔內的多個資料系列。

建立折線圖

import numpy as np
import pandas as pd
import streamlit as st

st.write("### 2. Bar Chart")

# Generate random data for the bar chart
chart_data = pd.DataFrame(
    np.random.randn(20, 3),
    columns=["col1", "col2", "col3"],
)

# Display a bar chart using the same data
st.bar_chart(chart_data)

使用案例

  • 股價:追蹤股票價格隨時間的變動。
  • 溫度變化:監控不同日期的溫度波動。
  • 網站流量:分析幾週或幾個月的網站流量趨勢。

客製化技巧

  • 多條線: 透過在 y 參數中指定附加列來繪製多條線。
  • 線條樣式:調整線條樣式(實線、虛線)以區分資料系列。
  • 互動性:透過新增工具提示或懸停效果來顯示精確值來增強互動性。

4. 地圖

Streamlit 中的地圖簡介

地理資料視覺化對於空間分析至關重要,它允許您在地圖上可視化資料點,以識別不同位置的模式、熱點和分佈。

創建地圖

import numpy as np
import pandas as pd
import streamlit as st

st.write("### 1. Area Chart")

# Generate random data for the area chart
chart_data = pd.DataFrame(
    np.random.randn(20, 3),
    columns=["col1", "col2", "col3"],
)

# Create an area chart using the random data
st.area_chart(
    chart_data,
    x="col1",
    y=["col2", "col3"],
    color=["#FF0000", "#0000FF"],
)

使用案例

  • 商店位置:顯示多個商店或辦公室的位置。
  • 事件熱點:可視化事件或活動高度集中的區域。
  • 人口分佈: 顯示不同地區不同人口群體的分佈。

客製化技巧

  • 地圖中心和縮放:調整地圖的中心和縮放等級以聚焦於特定區域。
  • 標記美學:自訂標記形狀、大小和顏色以表示不同的資料維度。
  • 互動性:新增工具提示或彈出視窗以提供有關每個資料點的更多資訊。

5. 散點圖

散點圖簡介

散佈圖是辨識兩個變數之間關係或相關性的強大工具。它們有助於揭示數據中的模式、趨勢和潛在因果關係。

建立散點圖

import numpy as np
import pandas as pd
import streamlit as st

st.write("### 2. Bar Chart")

# Generate random data for the bar chart
chart_data = pd.DataFrame(
    np.random.randn(20, 3),
    columns=["col1", "col2", "col3"],
)

# Display a bar chart using the same data
st.bar_chart(chart_data)

使用案例

  • 廣告與銷售:探討廣告支出與銷售數字之間的關係。
  • 身高與體重:分析個人身高和體重之間的相關性。
  • 效能指標:比較產品或服務的不同效能指標。

客製化技巧

  • 趨勢線: 增加趨勢線以突顯資料中的相關性或趨勢。
  • 點大小和顏色:根據其他變數調整資料點的大小和顏色來區分資料點。
  • 互動性:透過啟用將滑鼠懸停在點上時顯示詳細資訊的工具提示來增強互動性。

6.Altair圖表

Altair 簡介

Altair 是一個 Python 聲明式統計視覺化函式庫,透過簡單直覺的語法提供進階圖表功能。它擅長用最少的程式碼創建互動式和複雜的視覺化。

建立 Altair 圖表

import numpy as np
import pandas as pd
import streamlit as st

st.write("### 1. Area Chart")

# Generate random data for the area chart
chart_data = pd.DataFrame(
    np.random.randn(20, 3),
    columns=["col1", "col2", "col3"],
)

# Create an area chart using the random data
st.area_chart(
    chart_data,
    x="col1",
    y=["col2", "col3"],
    color=["#FF0000", "#0000FF"],
)

使用案例

  • 探索性資料分析:研究多個變數之間的關係。
  • 互動式儀表板:建立響應用戶輸入的動態視覺化。
  • 詳細的統計視覺化:以易於理解的格式呈現複雜的資料。

客製化技巧

  • 分面: 建立小倍數來比較不同的資料子集。
  • 標記類型:嘗試不同的標記類型,例如線條、條形或區域,以獲得不同的視覺效果。
  • 互動式元素:合併選擇、篩選器和縮放以增強使用者互動性。

8.Graphviz圖表

Graphviz 簡介

Graphviz 是一種用於創建圖形和網絡圖的工具,使其對於可視化關係、工作流程和組織結構非常有價值。它允許您以清晰且有組織的方式表示複雜的連接。

建立 Graphviz 圖表

import numpy as np
import pandas as pd
import streamlit as st

st.write("### 2. Bar Chart")

# Generate random data for the bar chart
chart_data = pd.DataFrame(
    np.random.randn(20, 3),
    columns=["col1", "col2", "col3"],
)

# Display a bar chart using the same data
st.bar_chart(chart_data)

使用案例

  • 軟體開發管道:視覺化軟體開發從規劃到部署的各個階段。
  • 組織結構:表示組織內的層級結構與關係。
  • 決策樹:說明決策流程和可能的結果。

客製化技巧

  • 節點形狀和顏色:自訂節點形狀和顏色來表示不同類型的實體或狀態。
  • 邊緣樣式:修改邊緣樣式(虛線、粗體)以指示不同類型的關係或依賴關係。
  • 圖表佈局:探索不同的圖表佈局(例如分層、圓形)以獲得更好的清晰度。

9. 繪圖

情節簡介

Plotly 是一個強大的函式庫,用於建立互動式和出版品質的圖表。它提供了廣泛的圖表類型和自訂選項,使其適合複雜的資料視覺化和互動式儀表板。

建立分佈圖

import numpy as np
import pandas as pd
import streamlit as st

st.write("### 1. Area Chart")

# Generate random data for the area chart
chart_data = pd.DataFrame(
    np.random.randn(20, 3),
    columns=["col1", "col2", "col3"],
)

# Create an area chart using the random data
st.area_chart(
    chart_data,
    x="col1",
    y=["col2", "col3"],
    color=["#FF0000", "#0000FF"],
)

使用 Plotly Express 建立散點圖

import numpy as np
import pandas as pd
import streamlit as st

st.write("### 2. Bar Chart")

# Generate random data for the bar chart
chart_data = pd.DataFrame(
    np.random.randn(20, 3),
    columns=["col1", "col2", "col3"],
)

# Display a bar chart using the same data
st.bar_chart(chart_data)

使用案例

  • 分佈分析:並排比較不同資料集的分佈。
  • 互動式儀表板:建立響應用戶輸入的動態和互動式視覺化。
  • 比較分析:使用多個主題和樣式來突出顯示資料的不同面向。

客製化技巧

  • 主題調整:探索不同的主題以符合您的應用程式的設計。
  • 版面配置:調整版面設定,如邊距、圖例和軸標題,以獲得更好的呈現效果。
  • 進階圖表類型: 嘗試使用 3D 繪圖、熱圖和其他進階圖表類型來實現更複雜的視覺化。

10. pydeck圖表

pydeck簡介

pydeck是deck.gl的Python接口,可實現先進的、高性能的WebGL驅動的可視化。它對於創建複雜的互動式地理空間視覺化特別有用。

建立 pydeck 圖表

import numpy as np
import pandas as pd
import streamlit as st

st.write("### 3. Line Chart")

# Generate random data for the line chart
chart_data = pd.DataFrame(
    np.random.randn(20, 3),
    columns=["col1", "col2", "col3"],
)

# Create a line chart with the random data
st.line_chart(
    chart_data,
    x="col1",
    y="col2",
    color="col3",
)

st.write("#### 3.1 Basic Line Chart")

使用案例

  • 地理空間分析:可視化大型地理空間資料集以識別模式和熱點。
  • 城市規劃:分析人口密度、交通流量或基礎設施分佈。
  • 環境研究:繪製環境資料地圖,例如污染程度或野生動物目擊事件。

客製化技巧

  • 不同的圖層類型:嘗試各種圖層類型,​​如 ScatterplotLayer、ArcLayer 或 PathLayer,以獲得不同的視覺效果。
  • 地圖樣式:更改map_style參數以使用不同的地圖主題(例如衛星、深色模式)。
  • 互動性:透過啟用工具提示、篩選器和動態資料更新來增強互動性。

11. pyplot 圖表

Matplotlib的pyplot簡介

Matplotlib 是 Python 中的基礎繪圖函式庫,pyplot 提供了類似 MATLAB 的介面,用於建立靜態、動畫和互動式視覺化。它具有高度可自訂性,廣泛用於統計數據分析和教育目的。

建立直方圖

import numpy as np
import pandas as pd
import streamlit as st

st.write("### 1. Area Chart")

# Generate random data for the area chart
chart_data = pd.DataFrame(
    np.random.randn(20, 3),
    columns=["col1", "col2", "col3"],
)

# Create an area chart using the random data
st.area_chart(
    chart_data,
    x="col1",
    y=["col2", "col3"],
    color=["#FF0000", "#0000FF"],
)

使用案例

  • 統計分析:可視化資料集的分佈以識別模式和異常。
  • 教育目的:教授機率分佈與資料標準化等概念。
  • 資料探索: 在執行進一步分析之前評估資料的形狀和分佈。

自訂選項

  • 標題和標籤:新增標題、軸標籤和圖例以提供上下文。
  • 顏色和樣式:自訂條形顏色、邊緣樣式和整體繪圖美學。
  • 多個直方圖: 疊加多個直方圖以比較不同的資料集或群組。
  • 進階功能:結合密度圖、累積分佈或註釋以獲得更深入的見解。

12.織女星圖

Vega-Lite簡介

Vega-Lite 是一種用於建立互動式視覺化的高級語法,整合到 Streamlit 以提高靈活性。它允許您使用簡潔的規範來建立複雜且反應迅速的圖表,從而更輕鬆地創建複雜的視覺化效果,而無需大量編碼。

建立 Vega 圖

import numpy as np
import pandas as pd
import streamlit as st

st.write("### 2. Bar Chart")

# Generate random data for the bar chart
chart_data = pd.DataFrame(
    np.random.randn(20, 3),
    columns=["col1", "col2", "col3"],
)

# Display a bar chart using the same data
st.bar_chart(chart_data)

使用案例

  • 複雜的互動式視覺化: 建立複雜的圖表來回應使用者交互,例如懸停、點擊或選擇。
  • 資料探索:使用戶能夠動態探索資料集,透過互動元素發現見解。
  • 嵌入複雜圖表:在 Streamlit 應用程式中整合詳細的互動式圖表,以實現全面的資料示範。

客製化技巧

  • 新增圖層:合併其他圖層,例如線條、條形或區域以豐富視覺化效果。
  • 自訂比例和軸:調整比例、軸標題和標籤以提高可讀性和簡報。
  • 互動式選擇:實作互動式選擇和篩選器,以允許使用者專注於特定的資料子集。
  • 樣式和主題:透過自訂顏色、字體和整體主題設定來增強美感。

圖表類型回顧

在本教程中,我們介紹了 Streamlit 中提供的各種圖表類型,每種圖表類型都適合不同的資料視覺化需求:

  1. 面積圖:非常適合顯示累積總數和趨勢。
  2. 長條圖:非常適合比較離散類別或組別。
  3. 折線圖:非常適合追蹤時間序列等連續資料的變化。
  4. 地圖:對於地理資料視覺化和空間分析至關重要。
  5. 散佈圖:有助於辨識變數之間的關係和相關性。
  6. Altair Chart: 具有聲明性語法的高階互動式視覺化。
  7. Graphviz 圖表:透過圖表視覺化關係和工作流程。
  8. 繪圖圖表:具有廣泛自訂功能的互動式和出版品質的圖表。
  9. pydeck Chart: 使用 WebGL 進行高效能地理空間視覺化。
  10. pyplot 圖表: 使用 Matplotlib 的多功能功能進行基礎繪圖。
  11. Vega Chart: 使用 Vega-Lite 語法進行複雜的互動式視覺化。

?取得程式碼:GitHub - jamesbmour/blog_tutorials
?相關Streamlit教學:JustCodeIt
?支持我的工作:請我喝杯咖啡

以上是Streamlit 部分掌握資料視覺化和圖表類型的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn