python可视化——pycharm——Grid - Grid_overlap_multi_xy_axis图

news2024/11/20 13:41:21

这段代码使用了pyecharts库来创建一个Grid-Overlap图,包括柱状图和折线图。

首先,创建了一个柱状图对象bar,并添加了两个y轴的数据。第一个y轴代表csdn博客数量,第二个y轴代表粉丝数量。然后,使用extend_axis方法扩展了两个y轴的配置。其中,第一个y轴设置了名称、取值范围、位置和样式等属性;第二个y轴设置了名称、取值范围、位置、样式和分割线等属性。

接着,使用set_global_opts方法设置了全局配置,包括y轴的一些属性、标题、工具提示和图例等。

接下来,创建了一个折线图对象line,并添加了一个y轴的数据,代表了平均粉丝数量。

最后,通过Grid组件将柱状图和折线图组合在一起,并可以显示在一个图表中。

from pyecharts import options as opts
from pyecharts.charts import Bar, Grid, Line

# 创建柱状图对象
bar = (
    Bar()
    .add_xaxis(["{}月".format(i) for i in range(1, 13)])  # 设置x轴数据,代表月份
    .add_yaxis(
        "csdn博客数量",  # 设置第一个y轴的名称
        [0, 0, 0, 0, 0, 10, 20, 50, 70, 75, 100, 145],  # 设置第一个y轴的数据
        yaxis_index=0,  # 指定使用第一个y轴
        color="#d14a61",  # 设置柱状图的颜色
    )
    .add_yaxis(
        "粉丝数量",  # 设置第二个y轴的名称
        [2, 10, 15, 13, 20, 60, 160, 280, 500, 800, 1260, 1386],  # 设置第二个y轴的数据
        yaxis_index=1,  # 指定使用第二个y轴
        color="#5793f3",  # 设置柱状图的颜色
    )
    # 扩展第一个y轴的配置
    .extend_axis(
        yaxis=opts.AxisOpts(
            name="csdn博客数量",  # 指定第一个y轴的名称
            type_="value",  # 设置y轴的类型为数值型
            min_=0,  # 设置y轴的最小值
            max_=2000,  # 设置y轴的最大值
            position="right",  # 设置y轴的位置为右侧
            axisline_opts=opts.AxisLineOpts(
                linestyle_opts=opts.LineStyleOpts(color="#d14a61")  # 设置y轴的线条样式
            ),
            axislabel_opts=opts.LabelOpts(formatter="{value} 个"),  # 设置y轴的标签格式
        )
    )
    # 扩展第二个y轴的配置
    .extend_axis(
        yaxis=opts.AxisOpts(
            type_="value",  # 设置y轴的类型为数值型
            name="数量",  # 指定第一个y轴的名称
            min_=0,  # 设置y轴的最小值
            max_=2000,  # 设置y轴的最大值
            position="left",  # 设置y轴的位置为左侧
            axisline_opts=opts.AxisLineOpts(
                linestyle_opts=opts.LineStyleOpts(color="#675bba")  # 设置y轴的线条样式
            ),
            axislabel_opts=opts.LabelOpts(formatter="{value} 个"),  # 设置y轴的标签格式
            splitline_opts=opts.SplitLineOpts(
                is_show=True, linestyle_opts=opts.LineStyleOpts(opacity=1)  # 设置是否显示分割线和样式
            ),
        )
    )
    # 设置全局配置
    .set_global_opts(
        yaxis_opts=opts.AxisOpts(
            name="粉丝数量",  # 设置第二个y轴的名称
            min_=0,  # 设置y轴的最小值
            max_=2000,  # 设置y轴的最大值
            position="right",  # 设置y轴的位置为右侧
            offset=80,  # 设置与图表的距离
            axisline_opts=opts.AxisLineOpts(
                linestyle_opts=opts.LineStyleOpts(color="#5793f3")  # 设置y轴的线条样式
            ),
            axislabel_opts=opts.LabelOpts(formatter="{value} 个"),  # 设置y轴的标签格式
        ),
        title_opts=opts.TitleOpts(title="Grid-Overlap-多 X/Y 轴示例"),  # 设置标题
        tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),  # 设置鼠标悬停提示框
        legend_opts=opts.LegendOpts(pos_left="25%"),  # 设置图例的位置
    )
)

line = (
    Line()  # 创建一个 Line 图表实例
    .add_xaxis(["{}月".format(i) for i in range(1, 13)])  # 设置 x 轴数据,代表月份,使用列表推导式生成 1 到 12 月份的列表
    .add_yaxis(
        "平均粉丝",  # 设置 y 轴的名称
        [20, 22, 33, 45, 63, 102, 203, 234, 230, 1650, 1200, 1620],  # 设置 y 轴数据,代表每个月的平均粉丝数
        yaxis_index=2,  # 设置该系列数据对应的 y 轴索引为 2
        color="#675bba",  # 设置该系列数据的线条颜色为紫色
        label_opts=opts.LabelOpts(is_show=False),  # 配置标签选项,设置为不显示标签
    )
)

bar1 = (
    Bar()
    .add_xaxis(["{}月".format(i) for i in range(1, 13)])
    .add_yaxis(
        "分数",
        [63, 100, 70, 80.2, 90, 76.7, 100, 100, 90, 60, 60, 90.3],
        color="#d14a61",
        xaxis_index=1,
        yaxis_index=3,
    )
    .add_yaxis(
        "绩点",
        [2.6, 5.0, 2.0, 3.0, 4.0, 2.8, 5.0, 5.0, 4.0, 1.0, 1.0, 4.03],
        color="#5793f3",
        xaxis_index=1,
        yaxis_index=4,
    )
    .extend_axis(
        yaxis=opts.AxisOpts(
            name="分数",
            type_="value",
            min_=0,
            max_=100,
            position="right",
            axisline_opts=opts.AxisLineOpts(
                linestyle_opts=opts.LineStyleOpts(color="#d14a61")
            ),
            axislabel_opts=opts.LabelOpts(formatter="{value} 分"),
        )
    )
    .extend_axis(
        yaxis=opts.AxisOpts(
            type_="value",
            name="数量",
            min_=0,
            max_=100,
            position="left",
            axisline_opts=opts.AxisLineOpts(
                linestyle_opts=opts.LineStyleOpts(color="#675bba")
            ),
            axislabel_opts=opts.LabelOpts(formatter="{value} 分"),
            splitline_opts=opts.SplitLineOpts(
                is_show=True, linestyle_opts=opts.LineStyleOpts(opacity=1)
            ),
        )
    )
    .set_global_opts(
        xaxis_opts=opts.AxisOpts(grid_index=1),
        yaxis_opts=opts.AxisOpts(
            name="绩点",
            min_=0,
            max_=5.0,
            position="right",
            offset=80,
            axisline_opts=opts.AxisLineOpts(
                linestyle_opts=opts.LineStyleOpts(color="#5793f3")
            ),
            axislabel_opts=opts.LabelOpts(formatter="{value} "),
        ),
        tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),
        legend_opts=opts.LegendOpts(pos_left="65%"),
    )
)

line1 = (
    Line()
    .add_xaxis(["{}月".format(i) for i in range(1, 13)])
    .add_yaxis(
        "平均绩点",
        [2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2],
        color="#675bba",
        label_opts=opts.LabelOpts(is_show=False),
        xaxis_index=1,
        yaxis_index=5,
    )
)

overlap_1 = bar.overlap(line)  # 将柱状图 bar 与折线图 line 叠加在一起,得到 overlap_1
overlap_2 = bar1.overlap(line1)  # 将柱状图 bar1 与折线图 line1 叠加在一起,得到 overlap_2

grid = (
    Grid(init_opts=opts.InitOpts(width="1200px", height="800px"))  # 创建一个 Grid 实例,并设置初始配置项,指定宽度和高度
    .add(
        overlap_1, 
        grid_opts=opts.GridOpts(pos_right="58%"),  # 添加 overlap_1 到 Grid 中,并设置展示位置在右边 58% 的位置
        is_control_axis_index=True  # 设置是否控制坐标轴索引
    )
    .add(
        overlap_2,
        grid_opts=opts.GridOpts(pos_left="58%"),  # 添加 overlap_2 到 Grid 中,并设置展示位置在左边 58% 的位置
        is_control_axis_index=True  # 设置是否控制坐标轴索引
    )
    .render("grid_overlap_multi_xy_axis.html")  # 渲染并保存为 HTML 文件
)
overlap_1 = bar.overlap(line)  # 将柱状图 bar 与折线图 line 叠加在一起,得到 overlap_1
overlap_2 = bar1.overlap(line1)  # 将柱状图 bar1 与折线图 line1 叠加在一起,得到 overlap_2

grid = (
    Grid(init_opts=opts.InitOpts(width="1200px", height="800px"))  # 创建一个 Grid 实例,并设置初始配置项,指定宽度和高度
    .add(
        overlap_1, 
        grid_opts=opts.GridOpts(pos_right="58%"),  # 添加 overlap_1 到 Grid 中,并设置展示位置在右边 58% 的位置
        is_control_axis_index=True  # 设置是否控制坐标轴索引
    )
    .add(
        overlap_2,
        grid_opts=opts.GridOpts(pos_left="58%"),  # 添加 overlap_2 到 Grid 中,并设置展示位置在左边 58% 的位置
        is_control_axis_index=True  # 设置是否控制坐标轴索引
    )
    .render("grid_overlap_multi_xy_axis.html")  # 渲染并保存为 HTML 文件
)

上面的代码中,首先使用 bar 和 line 的 overlap 方法将柱状图和折线图叠加在一起得到 overlap_1,使用 bar1 和 line1 的 overlap 方法将另外一组柱状图和折线图叠加在一起得到 overlap_2

然后创建一个 Grid 实例,设置初始配置项,指定宽度和高度为 1200px 和 800px。通过 add 方法将 overlap_1 和 overlap_2 添加到 Grid 中,分别使用 pos_right 和 pos_left 参数控制它们的展示位置。

最后使用 render 方法将 Grid 渲染为 HTML 文件,并保存为 “grid_overlap_multi_xy_axis.html”。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/955266.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

6、深入解析Kotlin类与对象:构造、伴生、单例全面剖析

前言 本篇文章将带您了解Kotlin编程中的重要概念:类及构造函数、访问修饰符、伴生对象和单例模式。就像搭积木一样,我们会逐步揭开这些概念的面纱,让您轻松理解它们的作用和用法。无论您是编程新手还是有经验的开发者,本文都将为…

一个独立的测试人如何完成一个项目的测试 + 发布

其实啊,每个人都可以「独立完成一个项目的测试 发布」 很多同学,工作了五六年,都没有机会(也许是:不敢)独立负责一个完整项目的测试(独立负责一个项目测试后的上线流程,机会就更少…

手把手教你调用5个公共API获取数字货币市场数据(内附详细源码)

数量技术宅团队在CSDN学院推出了量化投资系列课程 欢迎有兴趣系统学习量化投资的同学,点击下方链接报名: 量化投资速成营(入门课程) Python股票量化投资 Python期货量化投资 Python数字货币量化投资 C语言CTP期货交易系统开…

three.js(十):线性几何体

线性几何体 WireframeGeometry 网格几何体EdgesGeometry 边缘几何体 WireframeGeometry 网格几何体 WireframeGeometry( geometry : BufferGeometry ) geometry — 任意几何体对象。 const geometry new SphereGeometry(); const wireframe new WireframeGeometry(geometr…

2022年06月 C/C++(五级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题:逃离迷宫 你在一个地下迷宫中找到了宝藏,但是也触发了迷宫机关,导致迷宫将在T分钟后坍塌,为此你需要在T分钟内逃离迷宫,你想知道你能不能逃离迷宫。迷宫是一个边长为m的正方形,其中"S"表示…

完善会计流程的关键功能:了解必备的会计软件功能!

会计软件已经成为许多大小企业的财务管理标配。会计软件可以帮助企业自动化财务流程,提高工作效率,减少错误,并提供准确和可靠的财务数据。一款合格的会计软件应该具备什么功能呢? 会计软件应有的功能 1、账户管理:会…

overlayfs

参考:How containers work: overlayfs how overlays work Overlay filesystems, also known as “union filesystems” or “union mounts” let you mount a filesystem using 2 directories: a “lower” directory, and an “upper” directory. Basically: t…

C语言之练习题

欢迎来到我的:世界 希望作者的文章对你有所帮助,有不足的地方还请指正,大家一起学习交流 ! 目录 前言填空题:第一题第二题第三题第四题 编程题:第一题:第二题: 总结 前言 填空题: …

网御ACM上网行为管理系统bottomframe.cgi接口存在SQL注入漏洞 附POC

文章目录 网御ACM上网行为管理系统bottomframe.cgi接口存在SQL注入漏洞 附POC1. 网御ACM上网行为管理系统简介2.漏洞描述3.影响版本4.fofa查询语句5.漏洞复现6.POC&EXP7.整改意见8.往期回顾 网御ACM上网行为管理系统bottomframe.cgi接口存在SQL注入漏洞 附POC 免责声明&am…

three.js(九):内置的路径合成几何体

路径合成几何体 TubeGeometry 管道LatheGeometry 车削ExtrudeGeometry 挤压 TubeGeometry 管道 TubeGeometry(path : Curve, tubularSegments : Integer, radius : Float, radialSegments : Integer, closed : Boolean) path — Curve - 一个由基类Curve继承而来的3D路径。 De…

关于Linux系统时间的问题

关于Linux系统时间的问题 当我们进行一些特定的业务需求时,需要修改当前Linux系统的系统时间。我们可以用以下命令进行修改时间。 data -s "2022-08-31 15:00:00"当我们将时间设置为某个时间点后,Linux系统的时间会出现一个问题:…

React原理 - React Reconciliation-上

目录 扩展学习资料 React Reconciliation Stack Reconciler【15版本、栈协调】 Stack Reconciler-事务性 事务性带来的弊端: 扩展学习资料 名称 链接 备注 官方文档 Reconciliation – React 英文 stack reconciler Implementation Notes – React 英文…

IntelliJ IDEA 2023.2.1使用Git时弹出“使用访问令牌登录”问题解决

这里写目录标题 一、内网Git环境GitLabGogsGitea 二、外网Git环境GitHubGitee 升级为IntelliJ IDEA 2023.2.1后,使用Git时弹出“使用访问令牌登录”的窗口,习惯使用Git帐号密码登录的用户,面对这个突如其来的弹窗真的很懵。 一、内网Git环境 …

虚拟化技术原理

计算虚拟化 介绍 把物理主机上物理资源(CPU,内存,IO外设),通过虚拟化层抽象成超量、等量的逻辑资源(虚拟CPU,虚拟内存,虚拟IO设备),然后重新组合形成新的虚…

大数据学习:impala基础

impala基础 1. impala介绍 1.1 impala概述 Impala是Cloudera公司推出,提供对HDFS、Hbase数据的高性能、低延迟的交互式SQL查询功能。官方测试性能比hive快10到100倍,其sql查询比sparkSQL还要更加快速,号称是当前大数据领域最快的查询sq工具…

【排序】快排非递归

模拟递归的下标,让他们入栈

投票同款特效样式

先看效果&#xff1a; 再看代码&#xff08;查看更多&#xff09;&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style>import url("https://fonts.…

vant2 van-calendar组件增加清除按钮和确定按钮

利用自定义插槽增加一个清除按钮 <van-calendar ref"fTime1" select"selectTimePicker" confirm"changeTimePicker" :default-date"null" :show-confirm"false" v-model"timePickerShow" type"range&quo…