用pyecharts制作炫酷的可视化大屏

AI科技大本营 AI科技大本营     2023-01-15     192

关键词:

作者 | 俊欣

来源 | 关于数据分析与可视化

前两篇Pyecharts的文章来帮我们简单的梳理了一下可以用Pyecharts来绘制哪些图表之后,本篇文章我们用pyecharts里面的一些组件,将绘制的图表都组合起来

首先Grid组件

首先介绍Pyecharts模块当中的Grid组件,使用Grid组件可以很好地将多张图无论是上下组合还是左右组合,都能够很好地拼接起来,我们先来看第一个例子

bar = (
    Bar()
    .add_xaxis(Faker.choose())
    .add_yaxis("商家1", Faker.values())
    .add_yaxis("商家2", Faker.values())
    .set_global_opts(title_opts=opts.TitleOpts(title="直方图"))
)
line = (
    Line()
    .add_xaxis(Faker.choose())
    .add_yaxis("商家1", Faker.values())
    .add_yaxis("商家2", Faker.values())
    .set_global_opts(
        title_opts=opts.TitleOpts(title="折线图", pos_top="48%"),
        legend_opts=opts.LegendOpts(pos_top="48%"),
    )
)


grid = (
    Grid()
    .add(bar, grid_opts=opts.GridOpts(pos_bottom="60%"))
    .add(line, grid_opts=opts.GridOpts(pos_top="50%"))
    .render("水平组合图_test.html")
)

我们可以看到两张图表被以上下组合的方式拼接起来,当然除了上下的拼接以外,我们还可以左右来拼接,代码如下

bar = (
    Bar()
    .add_xaxis(Faker.choose())
    .add_yaxis("商家1", Faker.values())
    .add_yaxis("商家2", Faker.values())
    .set_global_opts(title_opts=opts.TitleOpts(title="直方图"),legend_opts=opts.LegendOpts(pos_left="20%"),)
)
line = (
    Line()
    .add_xaxis(Faker.choose())
    .add_yaxis("商家1", Faker.values())
    .add_yaxis("商家2", Faker.values())
    .set_global_opts(
        title_opts=opts.TitleOpts(title="折线图", pos_right="5%"),
        legend_opts=opts.LegendOpts(pos_right="20%"),
    )
)


grid = (
    Grid()
    .add(bar, grid_opts=opts.GridOpts(pos_left="60%"))
    .add(line, grid_opts=opts.GridOpts(pos_right="50%"))
    .render("垂直组合图_test.html")
)

可以看到我们无论是想上下拼接还是左右拼接,都可以通过调整参数“pos_left”、“pos_right”、“pos_top”以及“pos_bottom”这几个参数来实现,我们再来看一下下面这个例子,我们也可以将地图和直方图两者拼接起来

bar = (
    Bar()
    .add_xaxis(Faker.choose())
    .add_yaxis("商家1", Faker.values())
    .add_yaxis("商家2", Faker.values())
    .set_global_opts(legend_opts=opts.LegendOpts(pos_left="20%"))
)


map = (
    Map()
    .add("商家1", [list(z) for z in zip(Faker.provinces, Faker.values())], "china")
    .set_global_opts(title_opts=opts.TitleOpts(title="地图-基本示例"))
)


grid = (
    Grid()
    .add(bar, grid_opts=opts.GridOpts(pos_top="50%", pos_right="75%"))
    .add(map, grid_opts=opts.GridOpts(pos_left="60%"))
    .render("地图+直方图.html")
)

再谈Overlap组件

英文单词“overlap”的意思是重叠,那么放在这里,也就指的是可以将多张图合并成一张,那么该怎么结合才好呢?我们来看一下下面这个例子,我们将直方图和折线图通过overlap组件组合到一起

v1 = Faker.values()
v2 = Faker.values()
v3 = Faker.values()


bar = (
    Bar()
    .add_xaxis(Faker.provinces)
    .add_yaxis("商家A", v1)
    .add_yaxis("商家B", v2)
    .extend_axis(
        yaxis=opts.AxisOpts(
            axislabel_opts=opts.LabelOpts(formatter="value 个"), interval=20
        )
    )
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Overlap-bar+line"),
        yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(formatter="value 个")),
    )
)


line = Line().add_xaxis(Faker.provinces).add_yaxis("商家C", v3, yaxis_index=1)
bar.overlap(line)
bar.render("直方图+折线图Overlap.html")

除此之外,我们也可以将散点图和折线图合并在一张图上面,在代码上就只要将直方图的代码替换成散点图的就行,这边也就具体不做演示

Grid组件 + Overlap组件相结合

我们也可以将上面提高的两个组件结合起来使用,以此来绘制多条Y轴的直方图图表,代码如下

Bar()
    .add_xaxis(x_data)
    .add_yaxis(
        "A",
        [具体相关的数据],
        yaxis_index=0,
        color="#d14a61",
    )
    .add_yaxis(
        "B",
        [具体相关的数据],
        yaxis_index=1,
        color="#5793f3",
    )
    .直方图的全局配置代码....
    
line = (
    Line()
    .add_xaxis(x_data)
    .add_yaxis(
        "C",
        [具体相关的数据],
        yaxis_index=2,
        color="#675bba",
        label_opts=opts.LabelOpts(is_show=False),
    )
)


bar.overlap(line)
grid = Grid()
grid.add(bar, opts.GridOpts(pos_left="5%", pos_right="20%"), is_control_axis_index=True)
grid.render("test.html")

分页组件Tab

我们在用Pyecharts绘制了多张图表之后,可以直接Tab组件将多张图表连起来,一页放一张图表,具体看下面的例子和代码,

def bar_datazoom_slider() -> Bar:
    c = (
        Bar()
        .add_xaxis(Faker.days_attrs)
        .add_yaxis("商家A", Faker.days_values)
        .set_global_opts(
            title_opts=opts.TitleOpts(title="Bar-DataZoom(slider-水平)"),
            datazoom_opts=[opts.DataZoomOpts()],
        )
    )
    return c


def line_markpoint() -> Line:
    c = (
        Line()
        .add_xaxis(Faker.choose())
        .add_yaxis(
            "商家A",
            Faker.values(),
            markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="min")]),
        )
        .set_global_opts(title_opts=opts.TitleOpts(title="折线图"))
    )
    return c


def pie_rosetype() -> Pie:
    v = Faker.choose()
    c = (
        Pie()
        .add(
            "",
            [list(z) for z in zip(v, Faker.values())],
            radius=["30%", "75%"],
            center=["25%", "50%"],
            rosetype="radius",
            label_opts=opts.LabelOpts(is_show=False),
        )
        .set_global_opts(title_opts=opts.TitleOpts(title="饼图-玫瑰图示例"))
    )
    return c
    
tab = Tab()
tab.add(bar_datazoom_slider(), "直方图")
tab.add(line_markpoint(), "折线图")
tab.add(pie_rosetype(), "饼图")
tab.render("tab_base.html")

分别将所绘制的三张图表放置在三个页面当中,通过pyecharts库当中的tab串联起来

最后是Page组件

和上面Tab组件不一样的是,Tab组件是一页放一张图表,有几张图表就分成几页,而Page组件则是将绘制完成的多张图表统统放在一张页面里面,代码的改动上面也十分的简单,只要将上面代码的Tab部分改成Page()即可,如下

def bar_datazoom_slider() -> Bar:
    c = (
        Bar()
        .add_xaxis(Faker.days_attrs)
        .add_yaxis("商家A", Faker.days_values)
        .set_global_opts(
            title_opts=opts.TitleOpts(title="Bar-DataZoom(slider-水平)"),
            datazoom_opts=[opts.DataZoomOpts()],
        )
    )
    return c


def line_markpoint() -> Line:
    c = (
        Line()
        .add_xaxis(Faker.choose())
        .add_yaxis(
            "商家A",
            Faker.values(),
            markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="min")]),
        )
        .set_global_opts(title_opts=opts.TitleOpts(title="折线图"))
    )
    return c


def pie_rosetype() -> Pie:
    v = Faker.choose()
    c = (
        Pie()
        .add(
            "",
            [list(z) for z in zip(v, Faker.values())],
            radius=["30%", "75%"],
            center=["25%", "50%"],
            rosetype="radius",
            label_opts=opts.LabelOpts(is_show=False),
        )
        .set_global_opts(title_opts=opts.TitleOpts(title="饼图-玫瑰图示例"))
    )
    return c
    
page = Page(layout=Page.SimplePageLayout)
page.add(
    bar_datazoom_slider(),
    line_markpoint(),
    pie_rosetype(),
)
page.render("page_simple_layout.html")

上图所示的图表在页面当中是不能被挪动的,在Page()组件当中我们还能够使得图表按照我们所想的那样随意的挪动

## 上面的代码都一样,
page = Page(layout=Page.DraggablePageLayout)
page.add(
    bar_datazoom_slider(),
    line_markpoint(),
    pie_rosetype(),
)
page.render("page_draggable_layout.html")

大会

腾讯、阿里、字节是这么做数据的?

资讯

微软、英伟达联手推出最大语言模型

大赛

API 大赛决赛名单出炉!

技术

ST-GCN 实现人体姿态行为分类

分享

点收藏

点点赞

点在看

推荐8个炫酷的数据可视化大屏项目!

今天来推荐8个炫酷的数据可视化大屏项目!GoViewGoView是一个高效的拖拽式低代码数据可视化开发平台,将图表或页面元素封装为基础组件,无需编写代码即可制作数据大屏。Gitee:https://gitee.com/MTrun/go-viewvue-big-scre... 查看详情

精选30个炫酷的数据可视化大屏(含源码),拿走就用!

大屏数据可视化是以大屏为主要展示载体的数据可视化设计。“大面积、炫酷动效、丰富色彩”,大屏易在观感上给人留下震撼印象,便于营造某些独特氛围、打造仪式感。原本看不见的数据可视化后,便能调动人的... 查看详情

python机器学习---pyecharts制作可视化大屏(代码片段)

文章目录Pyecharts可视化Map世界地图柱状图、饼图Pyecharts组合图表ECharts是由百度开源的基于JS的商业级数据图表库,有很多现成的图表类型和实例,而Pyecharts则是为了方便我们使用Python实现ECharts的绘图。使用Pyecharts制作可... 查看详情

太炫酷了,python这款工具制作数据面板大屏非常棒(代码片段)

...tly模块和Pyecharts模块。今天我为大家来推荐两个用于制作可视化大屏的库,分别叫做hvPlot以及Panel,非常不错,喜欢记得收藏、关注、点赞。【注】完整代码、数据、技术交流,文末获取用pandas以及hvPlot结合生成... 查看详情

分享几个pyecharts技巧,助你画出更直观/炫酷的图表(代码片段)

作者|俊欣来源| 关于数据分析与可视化想必大家应该也已经看到很多关于数据分析的内容了,今天小编就为大家来分享一下国产可视化库pyecharts在绘制图表时一些的技巧,帮助读者画出更加酷炫以及可读性更高的图,... 查看详情

不到100行python代码教你做出精美炫酷的可视化大屏(代码片段)

作者|俊欣来源|关于数据分析与可视化“碳达峰、碳中和”是2021年政府在不断强调与非常重视的事儿,那什么是“碳达峰”、什么又是“碳中和”呢?这里小编来为大家科普一下,所谓的“碳达峰”指的是在某一时间... 查看详情

python制作炫酷的个人足迹地图(代码片段)

用Python来绘制自己的个人足迹地图,精确到市级别。首先我们需要安装以下Python的第三方模块:echarts-china-cities-pypkg==0.0.9echarts-china-provinces-pypkg==0.0.3pyecharts==1.6.2PyYAML==5.3.1本项目的完整结构如下&#x 查看详情

如何用python制作炫酷的个人足迹地图?(代码片段)

嗨害大家好鸭!我是小熊猫🖤用Python来绘制自己的个人足迹地图,精确到市级别。首先我们需要安装以下Python的第三方模块:echarts-china-cities-pypkg==0.0.9echarts-china-provinces-pypkg==0.0.3pyecharts==1.6.2PyYAML 查看详情

如何使用炫酷的图标(代码片段)

...a-view'Vue.use(dataV)3.就可以使用大屏数据展示页面即数据可视化地址:介绍|DataV4.就简单写一个使用方法 <template><div 查看详情

40份炫酷可视化大屏模板,一个代码都不敲,半天学不会来找我

...值,并且还同时具有炫酷的效果,毫无疑问只有可视化大屏了。说到大屏,你可能第一时间就想到是这样的:我印象中大概是从2015年开始,可视化大屏突然就成了BI项目中很火的需求了,其实在此之前࿰... 查看详情

基于requests+pyecharts+mysql的疫情可视化bi大屏(代码片段)

...于生成Echarts图表的类库。 echarts 是百度开源的一个数据可视化JS库,主要用于数据可视化。pyecharts是一个用于生成Echarts图表的类库。实际上就是Echarts与Python的对接。使用pyecharts 可以生成独立的网页,也可 查看详情

百度前端技术学院2018笔记之利用cssanimation制作一个炫酷的slider(代码片段)

前言题目地址利用CSSanimation制作一个炫酷的Slider思路整理首先页面包含三种东西一个是type为radio的input其实就是单选框二是每个单选框对应的label三是你要用作背景的每个图片然后具体实现思路是你点击每个label然后出现对应的图... 查看详情

使用three.js实现炫酷的赛博朋克风格3d数字地球大屏🌐

...时间,结合Three.js和CSS实现赛博朋克2077风格视觉效果实现炫酷3D数字地球大屏页面。页面使用React+Three.js+Echarts+stylus技术栈,本文涉及到的主要知识点包括:THREE.Spherical球体坐标系的应用、Shader结合TWEEN实现飞线和冲击波动画效果... 查看详情

优维出品:又一个很酷的资源可视化大屏!

...理需求快速开发自有IT管理工具的平台型产品。通过提供可视化编排界面、控件元素和成熟稳定的模块,零门槛快速可视化制作,极致展示数据魅力,全方位满足企业的可视化需求。作为EasyMABuilder的编外灵感大使,这款资源大屏... 查看详情

手把手教你做一个python+matplotlib的炫酷的数据可视化动图(代码片段)

...,不是真实数据,请别误传。当自己需要对真实数据进行可视化时,可进行适当修改。 3.代码:#第1步:导出模块,固定importpandasaspdimportmatplotlib.pyplotaspltimportmatplotlib.tickerastickerimportmatplotlib.anima 查看详情

pyecharts绘制20钟不同风格的炫酷交互式图表,建议收藏(代码片段)

作者|俊欣来源|关于数据分析与可视化今天小编来给大家介绍一下如何在Pyecharts当中画出炫酷的图表,通过该模块当中的一系列设置,本文我们大致会介绍pyecharts当中的Theme图表背景Pyecharts模块内部内置了10多种不同风格... 查看详情

7000字23张图,pandas一键生成炫酷的动态交互式图表(代码片段)

作者|俊欣来源 |关于数据分析与可视化今天小编来演示一下如何用pandas一行代码来绘制可以动态交互的图表,并且将绘制的图表组合到一起,组成可视化大屏,本次小编将要绘制的图表有折线图散点图直方图柱状图... 查看详情

100+大屏模板免费领!葡萄城bi行业应用方案重磅发布!

...作为基础战略资源和关键生产要素的地位日益凸显。数据可视化大屏作为一种用于数据分析的热门应用,能够帮助企业有效挖掘海量数据资产、实现差异化竞争。但我们发现在实际应用场景中,设计出完美适配行业典型... 查看详情