数据分析 — 动画图 pyecharts

一、概念

Pyecharts 是一个基于 Echarts 的 Python 可视化库,它通过 Python 生成 Echarts 的图表,并支持多种常见的图表类型,如折线图、柱状图、散点图、饼图等。
官网地址:https://pyecharts.org/#/zh-cn/intro

二、安装和导入

pip install pyecharts

from pyecharts.charts import * # 从 pyecharts.charts 模块中导入所有类

三、绘图逻辑

1、选择图表类型

2、声明图形类

3、选择全局变量

4、显示及保存图表

四、绘图

1、柱状图

from pyecharts.charts import Bar  # 从 pyecharts.charts 模块中导入 Bar 类

# 定义月份和对应的消费金额数据
months = ['一月', '二月', '三月', '四月', '五月', '六月']
cost = [1200, 1500, 1800, 1400, 1600, 2000]

# 创建一个 Bar 对象
bar = (
    Bar()  # 调用 Bar 类的构造函数
    .add_xaxis(months)  # 添加 x 轴的数据,即月份
    .add_yaxis('消费金额', cost)  # 添加 y 轴的数据,即消费金额,'消费金额' 为系列的名称
)

# 将图表保存为 HTML 文件,路径为 './bar.html'
bar.render('./bar.html')

在这里插入图片描述

2、折线图

# 从 pyecharts.charts 模块中导入 Line 类
from pyecharts.charts import Line

# 定义一周的日期和对应的温度、湿度数据
days = ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
temperatures = [28, 29, 30, 32, 31, 30, 29]
humidity = [40, 50, 70, 65, 45, 55]

# 创建一个 Line 对象
line = (
    Line()  # 调用 Line 类的构造函数
    .add_xaxis(days)  # 添加 x 轴的数据,即日期
    .add_yaxis('折线图1', temperatures)  # 添加第一条 y 轴的数据,即温度,'折线图1' 为系列的名称
    .add_yaxis('折线图2', humidity)  # 添加第二条 y 轴的数据,即湿度,'折线图2' 为系列的名称
)

# 将图表保存为 HTML 文件,路径为 './line.html'
line.render('./line.html')

在这里插入图片描述

3、散点图

from pyecharts.charts import Scatter  # 从 pyecharts.charts 模块中导入 Scatter 类

# 定义一周的日期和对应的温度、湿度数据
cities = ['北京', '上海', '广州', '深圳', '成都', '重庆']
days = ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
temperatures = [32, 33, 30, 31, 28, 30]
humidity = [40, 50, 70, 65, 45, 55]

# 创建一个 Scatter 对象
scatter = (
    Scatter()  # 调用 Scatter 类的构造函数
    .add_xaxis(days)  # 添加 x 轴的数据,即日期
    .add_yaxis('温度', temperatures)  # 添加第一条 y 轴的数据,即温度,'温度' 为系列的名称
    .add_yaxis('湿度', humidity)  # 添加第二条 y 轴的数据,即湿度,'湿度' 为系列的名称
)

# 将图表保存为 HTML 文件,路径为 './scatter.html'
scatter.render('./scatter.html')

在这里插入图片描述

4、饼图

from pyecharts.charts import Pie  # 从 pyecharts.charts 模块中导入 Pie 类

# 定义水果和对应的销量数据
fruits = ['苹果', '香蕉', '橙子', '草莓', '葡萄']
sales = [45, 30, 25, 20, 15]
# 将水果和销量数据组合成一个列表
data = [list(z) for z in zip(fruits, sales)]

# 创建一个 Pie 对象
pie = (
    Pie()  # 调用 Pie 类的构造函数
    .add(  # 添加数据
        series_name='水果销量',  # 设置系列的名称
        data_pair=data,  # 设置数据对,包含水果和对应的销量
    )
)

# 将图表保存为 HTML 文件,路径为 './pie.html'
pie.render('./pie.html')

在这里插入图片描述

5、南丁格尔图

from pyecharts.charts import Pie  # 从 pyecharts.charts 模块中导入 Pie 类
from pyecharts import options as opts  # 从 pyecharts.options 模块中导入 opts 类

# 定义水果和对应的销量数据
fruits = ['苹果', '香蕉', '橙子', '草莓', '葡萄']
sales = [45, 30, 25, 20, 15]
# 将水果和销量数据组合成一个列表
data = [list(z) for z in zip(fruits, sales)]

# 创建一个 Pie 对象,并设置半径、标签格式和玫瑰图样式
pie2 = (
    Pie()  # 调用 Pie 类的构造函数
    .add(  # 添加数据
        series_name='水果销量',  # 设置系列的名称
        data_pair=data,  # 设置数据对,包含水果和对应的销量
        radius=['40%', '60%'],  # 设置饼图的半径范围
        label_opts=opts.LabelOpts(formatter="{b}:{d}%"),  # 设置标签的格式,显示水果名称和销量占比
        rosetype="radius"  # 设置玫瑰图样式,即设置为半径模式
    )
)

# 将图表保存为 HTML 文件,路径为 './pie_radius.html'
pie2.render('./pie2.html')

在这里插入图片描述

6、Geo() 地理坐标第

from pyecharts.charts import Geo  # 从 pyecharts.charts 模块中导入 Geo 类
from pyecharts import options as opts  # 从 pyecharts.options 模块中导入 opts 类
import random  # 导入 random 模块

# 定义省份数据,以及每个省份的随机数据(模拟数据)
province = [
    '广东', '湖北', '湖南', '四川', '重庆', '黑龙江',
    '浙江', '山西', '河北', '安徽', '河南', '山东', '西藏'
]
data = [(i, random.randint(50, 150)) for i in province]

# 创建一个 Geo 对象,并设置地图类型为 "china"
geo = (
    Geo()  # 调用 Geo 类的构造函数
    .add_schema(maptype="china")  # 设置地图类型为中国地图
    .add("", data)  # 添加数据,data 中包含省份和对应的随机数据
    .set_series_opts(label_opts=opts.LabelOpts(is_show=True))  # 设置系列的标签选项,显示省份名称
    .set_global_opts(
        visualmap_opts=opts.VisualMapOpts(  # 设置全局的视觉映射选项
            is_piecewise=True,  # 设置为分段型视觉映射
            pieces=[
                {'min': 50, 'max': 100, 'label': '50-100'},  # 视觉映射的分段设置
                {'min': 100, 'max': 150, 'label': '100-150'}
            ]
        )
    )
)

# 将图表保存为 HTML 文件,路径为 './geo.html'
geo.render('./geo.html')

在这里插入图片描述

7、Map() 绘制区域

from pyecharts.charts import Map  # 从 pyecharts.charts 模块中导入 Map 类
from pyecharts import options as opts  # 从 pyecharts.options 模块中导入 opts 类
import random  # 导入 random 模块

# 定义省份数据,以及每个省份的随机数据(模拟数据)
province = [
    '广东省', '湖北省', '湖南省', '四川省', '重庆市', '黑龙江省',
    '浙江省', '山西省', '河北省', '安徽省', '河南省', '山东省', '西藏自治区'
]
data = [(i, random.randint(50, 250)) for i in province]
# 创建一个 Map 对象,并添加数据
map = Map()
map.add('确诊人数', data)

# 设置全局选项,包括标题和视觉映射的设置
map.set_global_opts(
    title_opts=opts.TitleOpts(title='全国疫情地图'),  # 设置地图的标题
    visualmap_opts=opts.VisualMapOpts(  # 设置视觉映射的选项
        is_piecewise=True,  # 设置为分段型视觉映射
        pieces=[
            {'min': 50, 'max': 99, 'label': '50-99人', 'color': 'yellow'},  # 视觉映射的分段设置
            {'min': 100, 'max': 149, 'label': '100-149人', 'color': 'pink'},
            {'min': 150, 'max': 199, 'label': '150-199人', 'color': 'green'},
            {'min': 200, 'max': 250, 'label': '200-250人', 'color': 'red'}
        ]
    )
)

# 将图表保存为 HTML 文件,路径为 './map.html'
map.render('./map.html')

在这里插入图片描述

8、词云图

from pyecharts.charts import WordCloud  # 从 pyecharts.charts 模块中导入 WordCloud 类

# 定义词云数据,每个元组包含单词和对应的频率
words = [
    ("economy", 1230),
    ("jude", 124),
    ("dont", 436),
    ("make", 255),
    ("it", 247),
    ("bad", 244),
    ("Take", 138),
    ("a sad song", 184),
    ("and", 12),
    ("make", 165),
    ("it", 247),
    ("better", 182),
    ("remember", 255),
    ("to", 150),
    ("let", 162),
    ("her", 266),
    ("into", 60),
    ("your", 82),
    ("heart", 173),
    ("then", 365),
    ("you", 360),
    ("can", 282),
    ("start", 273),
    ("make", 265),
]

# 创建一个 WordCloud 对象,并添加词云数据
wc = (
    WordCloud()  # 调用 WordCloud 类的构造函数
    .add("", words)  # 添加词云数据,空字符串表示没有系列名称
)

# 将词云图保存为 HTML 文件,路径为 './wc.html'
wc.render('./wc.html')

在这里插入图片描述

9、层叠图

from pyecharts.charts import Bar, Line  # 从 pyecharts.charts 模块中导入 Bar 和 Line 类

# 定义横轴数据(x 轴)
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
# 定义柱状图的纵轴数据
y_data_bar = [123, 153, 89, 107, 98, 23]
# 定义折线图的纵轴数据
y_data_line = [153, 107, 23, 89, 123, 107]

# 创建柱状图对象,添加横轴和纵轴数据
bar = (
    Bar()  # 调用 Bar 类的构造函数
    .add_xaxis(x_data)  # 添加横轴数据
    .add_yaxis('', y_data_bar)  # 添加柱状图的纵轴数据,空字符串表示没有系列名称
)
# 创建折线图对象,添加横轴和纵轴数据
line = (
    Line()  # 调用 Line 类的构造函数
    .add_xaxis(x_data)  # 添加横轴数据
    .add_yaxis('', y_data_line)  # 添加折线图的纵轴数据,空字符串表示没有系列名称
)

# 将折线图和柱状图进行重叠
overlap = line.overlap(bar)
# 将重叠图保存为 HTML 文件,路径为 './overlap.html'
overlap.render('./overlap.html')

在这里插入图片描述

10、3D 图

from pyecharts.charts import Bar3D  # 从 pyecharts.charts 模块中导入 Bar3D 类

# 定义三维柱状图的数据,数据为一个二维列表
data = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]
# 创建一个三维柱状图对象,添加数据
bar3d = Bar3D()  # 调用 Bar3D 类的构造函数
bar3d.add("", data)  # 添加三维柱状图的数据,空字符串表示没有系列名称

# 将三维柱状图保存为 HTML 文件,路径为 './bar3d.html'
bar3d.render('./bar3d.html')

在这里插入图片描述

11、仪表板

import numpy as np  # 导入 NumPy 库并使用别名 np
from pyecharts.charts import *  # 从 pyecharts.charts 模块中导入所有类
from pyecharts.charts import Page  # 从 pyecharts.charts 模块中导入 Page 类

# 定义柱状图函数
def bar():
    # 定义横轴和纵轴数据
    x_data = ["水笔", "铅笔", "钢笔", "圆珠笔"]
    y_data = [40, 30, 98, 42]

    # 创建柱状图对象,添加横轴和纵轴数据
    bar = (
        Bar()
        .add_xaxis(x_data)
        .add_yaxis("", y_data)
    )
    return bar

# 定义折线图函数
def line():
    # 定义横轴和纵轴数据
    x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
    y_data = [123, 153, 89, 107, 98, 23]

    # 创建折线图对象,添加横轴和纵轴数据
    line = (
        Line()
        .add_xaxis(x_data)
        .add_yaxis('呵呵', y_data)
    )
    return line

# 定义散点图函数
def scatter():
    # 生成正弦函数数据
    x = np.linspace(0, 2 * np.pi, 100)
    y = np.sin(x)

    # 创建散点图对象,添加横轴和纵轴数据
    scatter = (
        Scatter()
        .add_xaxis(x)
        .add_yaxis("正弦", y)
    )
    return scatter

# 定义饼图函数
def pie():
    # 定义饼图数据
    num = [110, 136, 108, 48, 111, 112, 103]
    lab = ['哈士奇', '萨摩耶', '泰迪', '金毛', '牧羊犬', '吉娃娃', '柯基']
    data_pair_ = list(zip(lab, num))

    # 创建饼图对象,添加数据
    pie = (
        Pie()
        .add('饼图',
             data_pair=data_pair_,
             rosetype='radius',
             radius=["20%", "45%"])
    )
    return pie

# 创建一个可拖动页面,设置页面标题
page = Page(layout=Page.DraggablePageLayout, page_title='haha')

# 添加各种图表到页面
page.add(
    bar(),
    line(),
    scatter(),
    pie()
)

# 将页面保存为 HTML 文件,路径为 './大屏.html'
page.render('./大屏.html')

在这里插入图片描述

拖动图表排列顺序后,点击 Save Config 按钮,将下载的 chart_config.json 保存至 大屏.html 同目录下

from pyecharts.charts import Page  # 从 pyecharts.charts 模块中导入 Page 类
# 创建一个可拖动页面,设置页面标题
page = Page(layout=Page.DraggablePageLayout, page_title='haha')
# 保存配置后的文件
# page.save_resize_html(原html文件,拖拽保存的配置文件,成品的保存路径)
page.save_resize_html(r'./大屏.html',cfg_file='chart_config.json',dest="./大屏显示.html")

在这里插入图片描述

记录学习过程,欢迎讨论交流,尊重原创,转载请注明出处~

  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: pyecharts是一个用于生成图表的Python库,可以帮助用户轻松地创建各种类型的图表,例如折线图、柱状图、饼图等。而动态数据大屏是基于pyecharts开发的一种可视化展示工具,可以将动态数据以更直观的方式呈现出来。 动态数据大屏主要借助pyecharts库提供的接口来实现动态数据更新和图表的刷新。用户可以通过编写Python代码来获取实时动态数据,并使用pyecharts库生成对应的图表。然后,通过动态数据大屏工具的配置,将生成的图表展示在大屏上。 动态数据大屏可以帮助用户实时监控和展示数据的变化趋势,从而更好地把握数据的动态变化情况。用户可以根据自身需求,选择合适的图表类型和展示方式,将复杂的数据以直观、易懂的方式展示出来。 例如,用户可以使用动态数据大屏来展示某个城市的即时天气情况,通过pyecharts生成柱状图显示温度变化趋势,折线图展示风速变化,饼图展示降水量比例等。通过动态数据大屏,用户可以实时了解天气情况的变化,并更加直观地观察到各项数据的变化趋势。 总的来说,pyecharts动态数据大屏为用户提供了一种便捷的方式来展示动态数据,通过合理的选择和配置,能够创造出高效、直观、易懂的大屏展示效果。它在数据可视化方面具有较高的灵活性和扩展性,可以满足用户对于动态数据展示的需求。 ### 回答2: pyecharts是一款基于Python的数据可视化库,可以生成各种形式的图表。动态数据大屏是指能够实时展示数据的大屏幕应用。结合pyecharts,我们可以快速搭建一个功能强大的动态数据大屏。 首先,我们需要导入所需的库,包括pyecharts、pandas和time等。 然后,我们可以使用pandas库来读取数据源,比如Excel或CSV文件。接着,利用pyecharts提供的各种图表类型和样式设置,生成所需的图表。 在动态数据大屏中,我们需要实时更新数据并展示最新的信息。为此,我们可以使用定时器函数来定时刷新数据,并更新图表展示。比如,每隔1分钟读取一次最新的数据,并重新绘制图表。 同时,为了更好地展示数据,我们可以利用pyecharts提供的交互功能,比如添加鼠标悬停提示、点击事件等。这样用户就可以通过鼠标与图表进行交互,查看详细的数据信息。 另外,为了增强可视化效果,我们还可以添加一些动画效果。比如,可以使用pyecharts提供的动画插件,实现图表的平滑过渡和动态效果。 最后,将生成的图表展示在大屏幕上,并适当调整图表的布局和大小,以适应大屏幕的展示。 综上所述,利用pyecharts可以方便地实现一个功能强大且美观的动态数据大屏。它不仅能展示实时更新的数据,还能提供交互功能和动画效果,帮助用户更好地理解和分析数据。 ### 回答3: pyecharts是一种基于Python的数据可视化库,可以用于创建各种各样的图表和大屏展示。动态数据大屏是指在展示数据的过程中,数据会不断发生变化,而且这种变化是实时呈现在大屏上的。 使用pyecharts创建动态数据大屏可以分为以下几个步骤: 1. 数据获取:首先需要获取数据,可以通过各种方式,比如数据库查询、API调用等。获取到的数据应该是实时变化的数据。 2. 数据处理:对获取到的数据进行处理,使其符合pyecharts的数据格式要求,比如将数据转化为字典或列表形式。 3. 创建图表:使用pyecharts提供的各种图表类型,比如折线图、柱状图等,根据需求选择合适的图表类型,将处理后的数据传入并生成图表。 4. 更新数据:通过定时任务或其他方式,定期获取最新的数据,并更新到已创建的图表中,实现图表的动态变化。 5. 展示大屏:将生成的图表以合适的布局方式展示在大屏上,可以选择使用Web框架进行展示,比如Flask或Django,或者直接使用图形化界面工具。 6. 设置交互:在大屏上设置一些交互功能,比如点击图表可以查看详细信息、切换不同的时间范围等,增加用户体验。 通过以上步骤,就可以实现使用pyecharts创建动态数据大屏。在展示过程中,数据会不断更新,用户可以实时观察数据变化,从而更好地了解数据趋势和变化。这种动态数据大屏可以应用于各种场景,比如实时监控、数据分析等,帮助用户做出更准确的决策。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值