首页  >  文章  >  后端开发  >  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