Python-数据分析组合可视化实例图【附完整源码】

数据分析组合可视化实例图

开篇:应女朋友的要求,于是写下了这篇详细的数据可视化代码及完整注释

一:柱状图、折线图横向组合网格布局

本段代码使用了pyecharts库来创建一个包含多个图表(柱状图、折线图)和网格布局的复杂可视化。以下是关于每一行代码的详细解释:

实现效果展示:
在这里插入图片描述

# 从pyecharts库中导入options模块,并将其重命名为opts。
from pyecharts import options as opts
# 从pyecharts.charts模块中导入Bar(柱状图)、Grid(网格布局)和Line(折线图)类。
from pyecharts.charts import Bar, Grid, Line# 创建第一个柱状图(bar)
# 初始化一个Bar对象。
bar = (Bar()# 使用.add_xaxis()方法添加X轴数据,这里是月份。.add_xaxis(["{}月".format(i) for i in range(1, 13)])# 使用.add_yaxis()方法添加两组Y轴数据(蒸发量和降水量),并为它们设置不同的颜色和Y轴索引。.add_yaxis("蒸发量",[2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3],yaxis_index=0,color="#d14a61",).add_yaxis("降水量",[2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3],yaxis_index=1,color="#5793f3",)# 使用.extend_axis()方法扩展两个额外的Y轴,分别用于表示蒸发量和温度,设置它们的名称、位置、范围和样式。.extend_axis(yaxis=opts.AxisOpts(name="蒸发量",type_="value",min_=0,max_=250,position="right",axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts(color="#d14a61")),axislabel_opts=opts.LabelOpts(formatter="{value} ml"),)).extend_axis(yaxis=opts.AxisOpts(type_="value",name="温度",min_=0,max_=25,position="left",axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts(color="#675bba")),axislabel_opts=opts.LabelOpts(formatter="{value} °C"),splitline_opts=opts.SplitLineOpts(is_show=True, linestyle_opts=opts.LineStyleOpts(opacity=1)),))# 使用.set_global_opts()方法设置全局配置,包括Y轴配置、标题、提示框和图例。.set_global_opts(yaxis_opts=opts.AxisOpts(name="降水量",min_=0,max_=250,position="right",offset=80,axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts(color="#5793f3")),axislabel_opts=opts.LabelOpts(formatter="{value} ml"),),title_opts=opts.TitleOpts(title="多X/Y轴可视化示例"),tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),legend_opts=opts.LegendOpts(pos_left="25%"),)
)# 创建第一个折线图(line)
# 初始化一个Line对象。
line = (Line()# 使用.add_xaxis()方法添加X轴数据。.add_xaxis(["{}月".format(i) for i in range(1, 13)])# 使用.add_yaxis()方法添加一组Y轴数据(平均温度),并设置颜色和Y轴索引。.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],yaxis_index=2,color="#675bba",label_opts=opts.LabelOpts(is_show=False),)
)# 创建第二个柱状图(bar1)
# 类似于第一个柱状图的创建,但X轴和Y轴索引不同,用于在网格布局中定位。
bar1 = (Bar().add_xaxis(["{}月".format(i) for i in range(1, 13)]).add_yaxis("蒸发量 1",[2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3],color="#d14a61",xaxis_index=1,yaxis_index=3,).add_yaxis("降水量 2",[2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3],color="#5793f3",xaxis_index=1,yaxis_index=3,).extend_axis(yaxis=opts.AxisOpts(name="蒸发量",type_="value",min_=0,max_=250,position="right",axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts(color="#d14a61")),axislabel_opts=opts.LabelOpts(formatter="{value} ml"),)).extend_axis(yaxis=opts.AxisOpts(type_="value",name="温度",min_=0,max_=25,position="left",axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts(color="#675bba")),axislabel_opts=opts.LabelOpts(formatter="{value} °C"),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_=250,position="right",offset=80,grid_index=1,axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts(color="#5793f3")),axislabel_opts=opts.LabelOpts(formatter="{value} ml"),),tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),legend_opts=opts.LegendOpts(pos_left="65%"),)
)# 创建第二个折线图(line1)
# 类似于第一个折线图的创建,但X轴和Y轴索引不同,用于在网格布局中定位。
line1 = (Line().add_xaxis(["{}月".format(i) for i in range(1, 13)]).add_yaxis("平均温度 1",[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()方法将第一个柱状图和折线图重叠。
overlap_1 = bar.overlap(line)
# 使用.overlap()方法将第二个柱状图和折线图重叠。
overlap_2 = bar1.overlap(line1)# 创建网格布局(grid)
grid = (# 初始化一个Grid对象,并设置初始宽度和高度。Grid(init_opts=opts.InitOpts(width="1200px", height="500px"))# 使用.add()方法将第一个重叠图表添加到网格的右侧。.add(overlap_1, grid_opts=opts.GridOpts(pos_right="58%"), is_control_axis_index=True)# 使用.add()方法将第二个重叠图表添加到网格的左侧。.add(overlap_2, grid_opts=opts.GridOpts(pos_left="58%"), is_control_axis_index=True)# 使用.render()方法生成并保存HTML文件,该文件包含所有图表和网格布局的可视化。.render("重叠图表和网格.html")
)

二:散点图与折线图横向组合网格布局

本段代码展示了如何使用pyecharts库来创建并组合一个散点图和一个折线图,并将它们放置在一个网格(Grid)布局中。以下是关于每一行代码的详细解释:

实现效果展示:
在这里插入图片描述

# 导入pyecharts库中的options模块(并设置别名为opts)
from pyecharts import options as opts
# 导入Grid、Line、Scatter这三个图表类。
from pyecharts.charts import Grid, Line, Scatter# 定义了两组X轴数据(x_data_a和x_data_b)以及四组Y轴数据(y_data_a、y_data_b、y_date_c、y_date_d)。这些数据将用于创建散点图和折线图
x_data_a = ['草莓', '西瓜', '香蕉', '椰子', '蓝莓', '榴莲', '牛油果']
x_data_b = ['香菜', '蘑菇', '柿子', '黄瓜', '菠菜', '韭菜', '南瓜']
y_data_a = [10, 23, 46, 70, 54, 31, 28]
y_data_b = [15, 20, 31, 55, 35, 43, 68]
y_date_c = [23, 35, 31, 50, 54, 13, 67]
y_date_d = [56, 23, 45, 32, 12, 67, 40]# 这创建了一个散点图对象scatter
scatter = (Scatter()# 设置X轴数据为x_data_a.add_xaxis(x_data_a)# 分别添加两组Y轴数据,并设置其系列名称为“售出”和“收益”。.add_yaxis("售出", y_data_a).add_yaxis("收益", y_data_b)# 设置全局配置项,包括标题、图例位置和X轴标签的旋转角度。.set_global_opts(title_opts=opts.TitleOpts(title="蔬菜"),legend_opts=opts.LegendOpts(pos_left="20%"),xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45)),)
)# 创建了一个折线图对象line
line = (Line()# 设置X轴数据为x_data_b.add_xaxis(x_data_b)# 分别添加两组Y轴数据,并设置其系列名称为“售出”和“收益”.add_yaxis("售出", y_date_c).add_yaxis("收益", y_date_d)# 设置全局配置项,包括标题、图例位置和X轴标签的旋转角度.set_global_opts(title_opts=opts.TitleOpts(title="水果", pos_right="5%"),legend_opts=opts.LegendOpts(pos_right="20%"),xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45)),)
)# 这段代码创建了一个Grid对象,用于将散点图和折线图组合在一起
grid = (Grid()# 将散点图添加到网格中,并设置其位置为左侧55%的位置.add(scatter, grid_opts=opts.GridOpts(pos_left="55%"))# 将折线图添加到网格中,并设置其位置为右侧55%的位置.add(line, grid_opts=opts.GridOpts(pos_right="55%"))# 渲染图表,并将其保存为HTML文件,文件名为“散点与折线组合.html”.render("散点与折线组合.html")
)

三:柱状图、折线图竖向组合网格布局

本段代码展示了如何使用pyecharts库创建一个包含柱状图和折线图的竖向网格布局图表,并自定义了x轴和y轴的标签和数据。以下是关于每一行代码的详细解释:

实现效果展示:
在这里插入图片描述

# 导入pyecharts库中的options模块,并重命名为opts,用于设置图表的各种选项
from pyecharts import options as opts
# 导入pyecharts库中的Bar(柱状图)、Grid(网格布局)、Line(折线图)图表类
from pyecharts.charts import Bar, Grid, Line# 定义一个列表,自定义x轴标签
x_axis_data = ["西瓜", "香蕉", "蓝莓", "椰子", "榴莲", "草莓", "木瓜", "水蜜桃"]# 定义两个列表,自定义柱状图和折线图的y轴数据
bar_y_axis_data = [18, 25, 30, 44, 53, 34, 79, 56]
line_y_axis_data = [13, 30, 67, 45, 55, 67, 89, 54]# 创建一个柱状图对象,并设置其x轴标签、y轴数据(包括销售量和利润),以及全局选项(如标题)
bar = (Bar().add_xaxis(x_axis_data)  # 使用自定义的x轴标签.add_yaxis("销售量", bar_y_axis_data)  # 添加一个名为“销售量”的系列,数据为bar_y_axis_data.add_yaxis("利润", [v * 0.5 for v in bar_y_axis_data])  # 添加一个名为“利润”的系列,数据为销售量的一半.set_global_opts(title_opts=opts.TitleOpts(title="柱状图"))  # 设置全局选项,包括图表标题
)# 创建一个折线图对象,并设置其x轴标签、y轴数据(包括销售量和利润),以及全局选项(如标题和图例位置)
line = (Line().add_xaxis(x_axis_data)  # 使用自定义的x轴标签.add_yaxis("销售量", line_y_axis_data)  # 添加一个名为“销售量”的系列,数据为line_y_axis_data.add_yaxis("利润", [v * 0.5 for v in line_y_axis_data])  # 添加一个名为“利润”的系列,数据为销售量的一半.set_global_opts(title_opts=opts.TitleOpts(title="折线图", pos_top="48%"),  # 设置图表标题及其位置legend_opts=opts.LegendOpts(pos_top="48%"),  # 设置图例位置)
)# 创建一个网格布局对象,将柱状图和折线图添加到布局中,并设置它们的位置,最后渲染图表到HTML文件
grid = (Grid().add(bar, grid_opts=opts.GridOpts(pos_bottom="60%"))  # 将柱状图添加到网格布局中,并设置其位置.add(line, grid_opts=opts.GridOpts(pos_top="60%"))  # 将折线图添加到网格布局中,并设置其位置.render("柱状图和折线图的网格布局图表.html")  # 渲染图表到HTML文件
)

四:柱状图、折线图内嵌组合网格布局

本段代码展示了如何使用pyecharts库创建并保存一个包含柱状图和折线图的复合图表,通过设置不同的Y轴索引和扩展Y轴,实现了多Y轴的效果。以下是关于每一行代码的详细解释:

实现效果展示:
在这里插入图片描述

# 导入pyecharts库中的options模块和Bar, Grid, Line图表类。
from pyecharts import options as opts
from pyecharts.charts import Bar, Grid, Line
# 创建一个列表x_data,包含1到12月的字符串表示。
x_data = ["{}月".format(i) for i in range(1, 13)]
# 创建一个Bar对象,并添加X轴数据。
bar = (Bar().add_xaxis(x_data)# 添加一个名为"蒸发量"的Y轴系列,设置其数据、Y轴索引、颜色等属性。.add_yaxis("蒸发量",[2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3],yaxis_index=0,color="#d14a61",)#  添加一个名为"降水量"的Y轴系列,设置其数据、Y轴索引、颜色等属性。.add_yaxis("降水量",[2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3],yaxis_index=1,color="#5793f3",)# 扩展一个名为"蒸发量"的Y轴,设置其名称、类型、最小值、最大值、位置、轴线样式、标签格式等属性。.extend_axis(yaxis=opts.AxisOpts(name="蒸发量",type_="value",min_=0,max_=250,position="right",axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts(color="#d14a61")),axislabel_opts=opts.LabelOpts(formatter="{value} ml"),))# 扩展一个名为"温度"的Y轴,设置其名称、类型、最小值、最大值、位置、轴线样式、标签格式、分割线样式等属性。.extend_axis(yaxis=opts.AxisOpts(type_="value",name="温度",min_=0,max_=25,position="left",axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts(color="#675bba")),axislabel_opts=opts.LabelOpts(formatter="{value} °C"),splitline_opts=opts.SplitLineOpts(is_show=True, linestyle_opts=opts.LineStyleOpts(opacity=1)),)).set_global_opts(yaxis_opts=opts.AxisOpts(name="降水量",min_=0,max_=250,position="right",offset=80,axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts(color="#5793f3")),axislabel_opts=opts.LabelOpts(formatter="{value} ml"),),title_opts=opts.TitleOpts(title="多Y轴示例"),tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),)
)# 创建一个Line对象,并添加X轴数据和名为"平均温度"的Y轴系列,设置其数据、Y轴索引、颜色、标签显示等属性。
line = (Line().add_xaxis(x_data).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],yaxis_index=2,color="#675bba",label_opts=opts.LabelOpts(is_show=False),)
)# 将折线图line重叠到柱状图bar上。
bar.overlap(line)
# 创建一个Grid对象。
grid = Grid()
# 将bar图表添加到Grid中,并设置其位置参数,以及是否控制轴索引。
grid.add(bar, opts.GridOpts(pos_left="5%", pos_right="20%"), is_control_axis_index=True)
# 将Grid图表渲染为HTML文件,文件名为"树状与折线.html"。
grid.render("柱状与折线内嵌图.html")

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

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

相关文章

第一周:李宏毅机器学习笔记

第一周学习周报 摘要一、机器学习基础理论1. 什么是机器学习?2. 机器学习“寻找”的函数有哪些类型?3. 机器学习中机器如何“寻找”函数?三步走3.1 第一步:设定函数的未知量(Function with Unknown Parameters&#xf…

Vue3 按钮根据屏幕宽度展示折叠按钮

文章目录 一、组件封装二、使用三、最终效果(参考)四、参考 一、组件封装 ButtonFold.vue 1、获取父组件的元素,根据元素创建动态插槽 2、插槽中插入父元素标签。默认效果和初始状态相同。 3、当屏幕宽度缩小时,部分按钮通过 dropdown 的方式展示出来&a…

springboot使用测试类报空指针异常

检查了Service注解,还有Autowired注解,还有其他注解,后面放心没能解决问题,最后使用RunWith(SpringRunner.class)解决了问题!! 真的是✓8了,烦死了这个✓8报错!

C语言 | Leetcode C语言题解之第200题岛屿数量

题目: 题解: void cleanLand(char** grid, int gridSize, int ColSize,int row,int column) {if(grid[row][column] 1){//不等于1则清零grid[row][column] 0;}else{//不等于1则返回return ;}int newRow;int newColumn;//上if(row ! 0) //还能上{ne…

每天五分钟计算机视觉:人体姿势识别

本文重点 人体姿势识别是计算机视觉领域的一个重要研究方向,旨在通过图像或视频数据自动检测并识别出人体的各种姿势和动作。随着深度学习技术的快速发展,基于神经网络的方法在这一领域取得了显著进展。神经网络,特别是卷积神经网络(CNN)和循环神经网络(RNN),因其强大…

基于YOLOv9的PCB板缺陷检测

数据集 PCB缺陷检测,我们直接采用北京大学智能机器人开放实验室数据提供的数据集, 共六类缺陷 漏孔、鼠咬、开路、短路、杂散、杂铜 已经对数据进行了数据增强处理,同时按照YOLO格式配置好,数据内容如下 模型训练 ​ 采用YOLO…

idea乱码问题解决

乱码问题产生的根本原因 数据的编码和解码使用的不是同一个字符集 使用了不支持某个语言文字的字符集 Tomcat控制台乱码 在tomcat10.1.7这个版本中,修改 tomcat/conf/logging.properties中,所有的UTF-8为GBK即可 sout乱码问题,设置JVM加载.class文件时使用UTF-8字符集 设置虚…

RedisAtomicInteger并发案例

🍰 个人主页:__Aurora__ 🍞文章有不合理的地方请各位大佬指正。 🍉文章不定期持续更新,如果我的文章对你有帮助➡️ 关注🙏🏻 点赞👍 收藏⭐️ RedisAtomicInteger 提供了对整数的原子性操作&a…

【SkiaSharp绘图12】SKCanvas方法详解(一)清空、裁切区域设置、连接矩阵、注释、弧与扇形、图集、九宫格绘图、圆

文章目录 SKCanvas 方法Clear 清空ClipPath/ClipRect/ClipRegion/ClipRoundRect 设置裁切区域Concat 连接矩阵DrawAnnotation绘制注释DrawArc绘制椭圆弧、扇形DrawAtlas绘制图集(一个图像、多个区域、多个缩放、一次绘制)DrawBitmap绘制图像DrawBitmapNinePatch九宫…

深度学习评价指标:Precision, Recall, F1-score, mIOU, 和 mDice

在深度学习和机器学习中,评价模型性能是至关重要的一环。本文将详细讲解一些常见的评价指标,包括精确率(Precision)、召回率(Recall)、F1-score、平均交并比(mIOU)和平均Dice系数&am…

5.6 0-1背包问题

#include<iostream> #include<string> #include<stdlib.h> #include<bits/stdc.h> using namespace std;int c;//背包容纳的重量 int n;//物品数量 int cw;//当前重量 int cv;//当前价值 int bestv;//当前最优价值 int x[100]; int bestx[100]; struct…

Linux 交叉编译工具链格式 sqlite3编译示例

1、交叉编译工具链 1.1 定义 交叉编译工具链是一个由编译器、连接器和解释器组成的综合开发工具集&#xff0c;它允许开发者在一个平台上&#xff08;例如高性能的PC或服务器&#xff09;编译生成另一个平台&#xff08;例如嵌入式系统或不同的操作系统和硬件架构&#xff09…

pyqt 文件浏览列表视图和图标视图

pyqt 文件浏览列表视图和图标视图 目的效果代码 目的 使用pyqt实现文件浏览列表视图和图标视图&#xff0c;像电脑文件浏览一样。如下图所示。 效果 代码 import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QToolBar, QAction, Q…

03-权限绕过漏洞

一、基础知识 水平越权 水平越权是指用户在系统中拥有超出其权限范围的访问权限。这可能导致安全漏洞和潜在的风险&#xff0c;因为用户可以访问他们不应该有权访问的敏感信息或执行他们不应该执行的操作。 垂直越权 垂直越权是指用户或攻击者利用系统中的漏洞或错误配置&a…

Orangepi Zero2使用外设驱动库wiringOP配合定时器驱动SG90舵机

目录 一、舵机的基本认知和硬件接线 1.1 舵机的基本认知&#xff1a; 1.2 硬件接线&#xff1a; 1.3 怎么控制舵机旋转不同的角度&#xff1a; 二、Linux定时器 2.1 定时器setitimer()函数原型和头文件&#xff1a; 2.2 信号处理函数signal()原型和头文件&#xff1a; 2…

<电力行业> - 《第10课:变电》

1 变电 变电环节&#xff0c;顾名思义就是改变电压的环节&#xff0c;主要是在变电站和变电所完成的。变电站和变电所主要区别在于&#xff1a;变电站比变电所更大。 发电厂的变压器和配电变压器也属于“变电”&#xff0c;但我们在说电网环节时&#xff0c;变电特指电网公司…

【STM32嵌入式系统设计与开发---传感器拓展】——1_4_标准库FreeRTOS移植实验

目录 雅俗理解源码下载链接知识拓展步骤1&#xff1a;stm32f103vet6移植freeRTOS步骤:&#xff08;1&#xff09;准备开发环境&#xff08;2&#xff09;添加FreeRTOS移植 致谢 雅俗理解 雅&#xff1a;FreeRTOS是一个开源的实时操作系统&#xff08;RTOS&#xff09;&#xf…

RabbitMQ-交换机的类型以及流程图练习-01

自己的飞书文档:‌‍‬‍‬‍​‍‬​⁠‍​​​‌⁠​​‬‍​​​‬‬‌​‌‌​​&#xfeff;​​​​&#xfeff;‍​‍​‌&#xfeff;⁠‬&#xfeff;&#xfeff;&#xfeff;​RabbitMQ的流程图和作业 - 飞书云文档 (feishu.cn) 作业 图片一张 画rabbit-mq 消息发…

测试开发工程师需要掌握什么技能?

测试开发工程师是软件开发中至关重要的角色之一。他们负责编写、维护和执行自动化测试脚本、开发测试工具和框架&#xff0c;以确保软件的质量和稳定性。为了成为一名优秀的测试开发工程师&#xff0c;你需要掌握以下技能&#xff1a; 1. 编程技能&#xff1a; 作为测试开发工…

LabVIEW程序员应该怎么提高自己的工作能力?

作为一名LabVIEW程序员&#xff0c;提升工作能力可以从以下几个方面入手&#xff1a; 1. 深入理解LabVIEW基础 掌握LabVIEW编程语言&#xff1a;熟悉LabVIEW的图形化编程方式&#xff0c;理解其数据流编程模型。熟悉常用的VI&#xff08;虚拟仪器&#xff09;和函数&#xff1…