pyecharts可视化数据大屏【详细教程】

前言:Pyecharts 是一个用于生成图表的 Python 库,它可以帮助你创建交互式的图表和数据可视化

1、安装 Pyecharts

首先,需要确保已经安装了 Pyecharts。可以通过 pip 安装:

bash 复制代码
pip install pyecharts

2、创建多个图表

我们将创建一个折线图、一个柱状图和一个饼图,并将它们嵌入到一个 HTML 文件中以形成数据大屏。

创建折线图

python 复制代码
from pyecharts import options as opts  # 导入 Pyecharts 的配置选项
from pyecharts.charts import Line  # 从 pyecharts.charts 导入 Line 类

# 创建一个折线图对象
line = Line()

# 添加 x 轴数据(月份)
line.add_xaxis(["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul"])

# 添加 y 轴数据(某系列的值)
line.add_yaxis("Series1", [10, 20, 30, 40, 50, 60, 70])

# 设置全局配置选项,比如标题
line.set_global_opts(
    title_opts=opts.TitleOpts(title="Line Chart Example")  # 设置图表标题
)

# 渲染图表并保存为 HTML 文件
line.render("line_chart.html")

创建柱状图

python 复制代码
from pyecharts import options as opts  # 导入 Pyecharts 的配置选项
from pyecharts.charts import Bar  # 从 pyecharts.charts 导入 Bar 类

# 创建一个柱状图对象
bar = Bar()

# 添加 x 轴数据(类别)
bar.add_xaxis(["Category1", "Category2", "Category3", "Category4"])

# 添加 y 轴数据(某系列的值)
bar.add_yaxis("Series1", [5, 20, 15, 30])

# 设置全局配置选项,比如标题
bar.set_global_opts(
    title_opts=opts.TitleOpts(title="Bar Chart Example")  # 设置图表标题
)

# 渲染图表并保存为 HTML 文件
bar.render("bar_chart.html")

创建饼图

python 复制代码
from pyecharts import options as opts  # 导入 Pyecharts 的配置选项
from pyecharts.charts import Pie  # 从 pyecharts.charts 导入 Pie 类

# 创建一个饼图对象
pie = Pie()

# 添加数据(每个项和对应的值)
pie.add(
    "Pie Chart",
    [("Item1", 30), ("Item2", 20), ("Item3", 40), ("Item4", 10)]
)

# 设置全局配置选项,比如标题
pie.set_global_opts(
    title_opts=opts.TitleOpts(title="Pie Chart Example")  # 设置图表标题
)

# 渲染图表并保存为 HTML 文件
pie.render("pie_chart.html")

3、创建 HTML 页面将图表嵌入到一个数据大屏

创建一个 HTML 文件来将这些图表嵌入到一个页面中。以下是 dashboard.html 文件的代码:

python 复制代码
<!DOCTYPE html>  <!-- 定义文档类型为 HTML5 -->
<html lang="en">  <!-- 定义文档语言为英语 -->
<head>
    <meta charset="UTF-8">  <!-- 设置字符编码为 UTF-8 -->
    <meta name="viewport" content="width=device-width, initial-scale=1.0">  <!-- 设置视口宽度为设备宽度,初始缩放比例为 1.0 -->
    <title>Dashboard</title>  <!-- 网页标题 -->
    <style>
        .container {  <!-- 图表容器的样式 -->
            display: flex;  <!-- 使用弹性布局 -->
            flex-wrap: wrap;  <!-- 允许换行 -->
            gap: 20px;  <!-- 设置项目之间的间隙 -->
        }
        .chart {  <!-- 单个图表的样式 -->
            flex: 1 1 calc(33% - 20px);  <!-- 每个图表占据容器的三分之一宽度,减去间隙 -->
            box-sizing: border-box;  <!-- 包含内边距和边框在内的宽度和高度计算 -->
        }
    </style>
</head>
<body>
    <div class="container">  <!-- 容器,包含所有图表 -->
        <div class="chart">  <!-- 第一个图表的容器 -->
            <iframe src="line_chart.html" width="100%" height="400px" frameborder="0"></iframe>  <!-- 嵌入折线图 -->
        </div>
        <div class="chart">  <!-- 第二个图表的容器 -->
            <iframe src="bar_chart.html" width="100%" height="400px" frameborder="0"></iframe>  <!-- 嵌入柱状图 -->
        </div>
        <div class="chart">  <!-- 第三个图表的容器 -->
            <iframe src="pie_chart.html" width="100%" height="400px" frameborder="0"></iframe>  <!-- 嵌入饼图 -->
        </div>
    </div>
</body>
</html>

4、运行和查看

  • 步骤 1:使用上述 Python 代码生成三个 HTML 文件 (line_chart.htmlbar_chart.html
    pie_chart.html)。
  • 步骤 2:将 HTML 页面代码保存为 dashboard.html
  • 步骤 3:在浏览器中打开 dashboard.html,你将看到一个包含三个图表的数据大屏。

5、聚合到一个py文件内

将生成图表和创建 HTML 数据大屏的步骤整合到一个 Python 文件中:

python 复制代码
from pyecharts import options as opts
from pyecharts.charts import Line, Bar, Pie

# 1. 创建折线图
def create_line_chart():
    line = Line()
    line.add_xaxis(["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul"])
    line.add_yaxis("Series1", [10, 20, 30, 40, 50, 60, 70])
    line.set_global_opts(title_opts=opts.TitleOpts(title="Line Chart Example"))
    line.render("line_chart.html")

# 2. 创建柱状图
def create_bar_chart():
    bar = Bar()
    bar.add_xaxis(["Category1", "Category2", "Category3", "Category4"])
    bar.add_yaxis("Series1", [5, 20, 15, 30])
    bar.set_global_opts(title_opts=opts.TitleOpts(title="Bar Chart Example"))
    bar.render("bar_chart.html")

# 3. 创建饼图
def create_pie_chart():
    pie = Pie()
    pie.add(
        "Pie Chart",
        [("Item1", 30), ("Item2", 20), ("Item3", 40), ("Item4", 10)]
    )
    pie.set_global_opts(title_opts=opts.TitleOpts(title="Pie Chart Example"))
    pie.render("pie_chart.html")

# 4. 创建 HTML 页面来将图表嵌入到数据大屏中
def create_dashboard():
    html_content = '''
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Dashboard</title>
        <style>
            .container {
                display: flex;
                flex-wrap: wrap;
                gap: 20px;
            }
            .chart {
                flex: 1 1 calc(33% - 20px);
                box-sizing: border-box;
            }
        </style>
    </head>
    <body>
        <div class="container">
            <div class="chart">
                <iframe src="line_chart.html" width="100%" height="400px" frameborder="0"></iframe>
            </div>
            <div class="chart">
                <iframe src="bar_chart.html" width="100%" height="400px" frameborder="0"></iframe>
            </div>
            <div class="chart">
                <iframe src="pie_chart.html" width="100%" height="400px" frameborder="0"></iframe>
            </div>
        </div>
    </body>
    </html>
    '''
    with open("dashboard.html", "w") as f:
        f.write(html_content)

# 主函数
def main():
    create_line_chart()  # 创建折线图
    create_bar_chart()   # 创建柱状图
    create_pie_chart()   # 创建饼图
    create_dashboard()   # 创建数据大屏 HTML 页面

# 运行主函数
if __name__ == "__main__":
    main()

说明

1、创建图表:

  • create_line_chart(): 生成折线图并保存为 line_chart.html。
  • create_bar_chart(): 生成柱状图并保存为 bar_chart.html。
  • create_pie_chart(): 生成饼图并保存为 pie_chart.html。

2、创建数据大屏

  • create_dashboard(): 生成一个包含三个图表的 HTML 页面,并保存为 dashboard.html

3、主函数

  • main(): 调用所有创建图表和大屏的函数。

4、执行脚本

  • 如果你运行这个脚本 (python your_script_name.py),它会生成图表并创建包含这些图表的大屏 HTML 文件。

只需要一个 Python 文件来完成所有任务。确保你在执行这个脚本的目录下有写权限,以便生成 HTML 文件

相关推荐
akhfuiigabv1 小时前
使用Neo4j-Cypher-FT实现自然语言查询图数据库
数据库·python·oracle·neo4j
lizi888881 小时前
足球大小球及亚盘数据分析与机器学习实战详解:从数据清洗到模型优化
java·人工智能·机器学习·数据挖掘·数据分析
繁依Fanyi1 小时前
828华为云征文|华为Flexus云服务器搭建OnlyOffice私有化在线办公套件
服务器·开发语言·前端·python·算法·华为·华为云
大模型实战1 小时前
RAPIDS AI 加速制造业预测性维护效率
大数据·人工智能
zhangfeng11331 小时前
在 PyTorch 中,除了 pad_sequence 还有哪些其他处理序列数据的函数?时间序列数据 预处理
人工智能·pytorch·python·深度学习
~在杰难逃~1 小时前
关于订单信息的Excel数据分析报告
笔记·数据分析·excel·数据分析报告
python1561 小时前
Python Numpy布尔数组在数据分析中的应用
python·数据分析·numpy
AIAdvocate2 小时前
力扣-96.不同的二叉搜索树 题目详解
python·算法·动态规划
luthane2 小时前
python 实现entropy熵算法
python·算法·概率论
akhfuiigabv2 小时前
探索Timescale Vector与Postgres数据库的融合:AI应用的新选择
数据库·人工智能·python