《数据可视化技术》上机报告

一、实验目的及要求

掌握pyecharts数据可视化环境搭建以及pyecharts交互式基础图形的绘制。

(1)掌握pyecharts中初始配置项,系列配置项,全局配置项的配置方法。

(2)掌握pyecharts中条形图的绘制方法。

(3)掌握pyecharts中散点图的绘制方法。

(4)掌握pyecharts中折线图的绘制方法。

(5)掌握pyecharts中箱线图的绘制方法。

(6)掌握pyecharts中3D散点图的绘制方法。

(7)掌握pyecharts中饼图的绘制方法。


第一题

利用pyecharts绘制商家A和商家B销售的条形图,数据:商家A和商家B的各类商品的销售数据.xlsx。要求:要有初始配置项,系列配置项和全局配置项的各种配置,包括:画布宽度,高度,主题风格,添加主标题,标签位置向右,条形图方向为横向,有动画效果,并添加平均值标记线。

商家衬衫毛衣领带裤子风衣高跟鞋袜子
商家A12056289812928107
商家B601401531451607054
from pyecharts import options as opts
from pyecharts.charts import Bar
import pandas as pd
from pyecharts.globals import ThemeType# 读取数据
df = pd.read_excel('商家A和商家B的各类商品的销售数据.xlsx', index_col='商家')# 计算平均值
average_value = df.mean().mean()  # 计算所有商品销售量的平均值# 创建横向条形图
bar = (Bar(init_opts=opts.InitOpts(width='1000px', height='600px', theme=ThemeType.LIGHT)).add_xaxis(df.columns.tolist())  # 设置X轴为商品类型.add_yaxis('商家A', df.loc['商家A'].tolist(),label_opts=opts.LabelOpts(position='right'),  # 标签显示在右侧itemstyle_opts=opts.ItemStyleOpts(color="#C1232B"),markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average", name="商家A平均值")])).add_yaxis('商家B', df.loc['商家B'].tolist(),label_opts=opts.LabelOpts(position='right'),  # 标签显示在右侧itemstyle_opts=opts.ItemStyleOpts(color="#2F4554"),markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average", name="商家B平均值")])).reversal_axis()  # 设置条形图方向为横向.set_global_opts(title_opts=opts.TitleOpts(title='商家A和商家B销售的条形图'),xaxis_opts=opts.AxisOpts(name='销售量'),yaxis_opts=opts.AxisOpts(name='商品类型'),tooltip_opts=opts.TooltipOpts(trigger="axis"),  # 提示框触发方式).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))  # 设置标签格式
)# 渲染图表到HTML文件
bar.render('第一题.html')


 第二题

        利用pyecharts绘制学生身高和体重关系的散点图,数据:学生身高和体重数据.xlsx。要求:要有初始配置项,系列配置项和全局配置项的各种配置,包括:画布宽度,高度,主题风格,添加主标题,标记点大小设置,形状设置,x轴和y轴刻度线设置,分割线设置,对视觉映射配置项VisualMap进行设置,最大值最小值要和数据匹配,标记点的过渡色设置。

from pyecharts.charts import Scatter
from pyecharts import options as opts
import pandas as pd# 读取Excel文件中的数据
df = pd.read_excel('学生身高和体重数据.xlsx')# 确保数据中有 '身高' 和 '体重' 列
height = df['身高'].tolist()
weight = df['体重'].tolist()# 创建一个散点图对象
scatter = Scatter()# 添加数据到散点图
scatter.add_xaxis(height)
scatter.add_yaxis(series_name='学生身高与体重关系',y_axis=weight,symbol_size=10,  # 标记点大小设置symbol='circle',  # 形状设置label_opts=opts.LabelOpts(is_show=False)  # 不显示标签
)# 设置全局配置项
scatter.set_global_opts(title_opts=opts.TitleOpts(title='学生身高和体重关系散点图'),  # 添加主标题xaxis_opts=opts.AxisOpts(type_='value',name='身高 (cm)',axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts(color='#5793f3')),splitline_opts=opts.SplitLineOpts(is_show=True, linestyle_opts=opts.LineStyleOpts(color='#5793f3'))),yaxis_opts=opts.AxisOpts(type_='value',name='体重 (kg)',axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts(color='#d14a61')),splitline_opts=opts.SplitLineOpts(is_show=True, linestyle_opts=opts.LineStyleOpts(color='#d14a61'))),visualmap_opts=opts.VisualMapOpts(max_=max(weight),  # 设置最大值,确保与数据匹配min_=min(weight),  # 设置最小值,确保与数据匹配range_color=['#d14a61', '#dea356', '#f4e925', '#5793f3']  # 标记点的过渡色设置)
)# 渲染图表为HTML文件
scatter.render('第二题.html')


第三题

        利用pyecharts绘制商家A和商家B销售的折线图,数据:商家A和商家B的各类商品的销售数据.xlsx,要求:努力美化所画的折线图,可以参照第一个任务的方法。

from pyecharts import options as opts
from pyecharts.charts import Line
import pandas as pd
from pyecharts.globals import ThemeType# 读取数据
df = pd.read_excel('商家A和商家B的各类商品的销售数据.xlsx', index_col='商家')# 创建折线图
line = (Line(init_opts=opts.InitOpts(width='1000px', height='600px', theme=ThemeType.LIGHT))  # 设置主题.add_xaxis(df.columns.tolist())  # 设置X轴为商品类型.add_yaxis('商家A', df.loc['商家A'].tolist(),  # 添加商家A的数据label_opts=opts.LabelOpts(is_show=True, position='top', color='#C1232B'),  # 标签设置symbol='circle', symbol_size=8,  # 设置标记点样式itemstyle_opts=opts.ItemStyleOpts(color='#C1232B'),  # 设置线条颜色markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average", name="商家A平均值")]  # 平均值标线)).add_yaxis('商家B', df.loc['商家B'].tolist(),  # 添加商家B的数据label_opts=opts.LabelOpts(is_show=True, position='top', color='#2F4554'),  # 标签设置symbol='diamond', symbol_size=8,  # 设置标记点样式itemstyle_opts=opts.ItemStyleOpts(color='#2F4554'),  # 设置线条颜色markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average", name="商家B平均值")]  # 平均值标线)).set_global_opts(title_opts=opts.TitleOpts(title='商家A和商家B销售折线图', subtitle='各类商品的销售数据'),xaxis_opts=opts.AxisOpts(name='商品类型',name_location='center',name_gap=30,axislabel_opts=opts.LabelOpts(font_size=12, rotate=45)  # 设置X轴标签字体和旋转角度),yaxis_opts=opts.AxisOpts(name='销售量',name_location='center',name_gap=40,axislabel_opts=opts.LabelOpts(font_size=12)),tooltip_opts=opts.TooltipOpts(trigger="axis"),  # 设置为触发器为 "axis"legend_opts=opts.LegendOpts(pos_top="10%",pos_left="center",textstyle_opts=opts.TextStyleOpts(font_size=14)),toolbox_opts=opts.ToolboxOpts(is_show=True, orient="vertical", pos_left="right", pos_top="center")  # 工具栏).set_series_opts(label_opts=opts.LabelOpts(is_show=True, position="top"),  # 显示数据标签,位置在上方linestyle_opts=opts.LineStyleOpts(width=3, type_='solid')  # 设置折线的样式)
)# 渲染图表到HTML文件
line.render('第三题.html')


第四题

利用pyecharts绘制成绩的箱线图,数据:语文考试成绩.xlsx,要求:努力美化所画的箱线图,可以参照第一个任务的方法。

班级成绩
1班68994677944079208889769295
2班79883557786978997546888789
3班91826386777832968086646796
4班728245100678990908969799192
import pandas as pd
from pyecharts.charts import Boxplot
from pyecharts import options as opts
from pyecharts.globals import ThemeType# 读取Excel文件中的数据,假设第一列是“班级”
df = pd.read_excel('语文考试成绩.xlsx', index_col=0)# 确保“班级”列存在,并将其设置为索引(如果它不是索引的话)
# 但在这个例子中,我们不需要将“班级”设置为索引,因为我们将直接使用它
# 如果“班级”列不是第一列,您可能需要通过列名来引用它,例如 df['班级']# 提取班级和成绩数据
# 我们将使用groupby来按班级聚合成绩
boxplot_data = []
for class_name in df.index:scores = df.loc[class_name, df.columns[1:]]  # 选择除了第一列(班级名)之外的所有列scores_list = scores.tolist()  # 将Pandas Series转换为列表boxplot_data.append(scores_list)  # 将这个列表添加到总列表中categories = df.index.tolist()  # 班级名称作为类别# 创建箱线图
# 绘制箱线图
boxplot = (Boxplot().add_xaxis(categories)  # 设置x轴为班级名称.add_yaxis("语文成绩",  # 系列名称boxplot_data,).set_global_opts(title_opts=opts.TitleOpts(title="各班级语文考试成绩箱线图"),xaxis_opts=opts.AxisOpts(name="班级"),yaxis_opts=opts.AxisOpts(name="成绩"),toolbox_opts=opts.ToolboxOpts(),  # 添加工具箱legend_opts=opts.LegendOpts(is_show=True, pos_left="left")  # 图例显示在左侧)
)# 渲染图表
boxplot.render('第四题.html')


第五题

        利用pyecharts绘制有关运动员的最大携氧能力、体重和运动后心率三者关系的3D散点图,数据:运动员的最大携氧能力、体重和运动后心率数据.xlsx,要求:努力美化所画的3D散点图,可以参照第一个任务的方法。

import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import Scatter3D# 读取CSV文件
file_path = '运动员的最大携氧能力、体重和运动后心率数据.csv'
df = pd.read_csv(file_path)# 将DataFrame转换为列表,准备绘图
data = df.values.tolist()# 创建3D散点图
scatter3d = (Scatter3D().add(series_name="运动员数据",data=data,xaxis3d_opts=opts.Axis3DOpts(name='最大携氧能力 (ml/min)', type_='value'),yaxis3d_opts=opts.Axis3DOpts(name='体重 (kg)', type_='value'),zaxis3d_opts=opts.Axis3DOpts(name='运动后心率 (次/分钟)', type_='value'),).set_global_opts(title_opts=opts.TitleOpts(title="运动员最大携氧能力、体重与运动后心率的关系"),visualmap_opts=opts.VisualMapOpts(max_=180,range_color=['#313695', '#4575b4', '#74add1', '#abd9e9', '#e0f3f8', '#ffffbf', '#fee090', '#fdae61','#f46d43', '#d73027'],),)
)# 渲染图表
scatter3d.render('第五题.html')


第六题

        利用pyecharts的饼图的绘制商家A的销售情况,数据:商家A和商家B的各类商品的销售数据.csv,要求:努力美化所画的饼图,可以参照第一个任务的方法。

#导入整个实验所需的包
import pandas as pd
from pyecharts import options as opts
from pyecharts.globals import ThemeType
from pyecharts.charts import Pie#读取“商家A和商家B的各类商品的销售数据.xlsx”文件数据
data = pd.read_excel('商家A和商家B的各类商品的销售数据.xlsx',index_col='商家', engine="openpyxl")
#设置了图表的初始选项,包括图表的宽度、高度以及主题(这里设置为亮色主题)
init_opts = opts.InitOpts(width='1000px', height='450px', theme=ThemeType.LIGHT)
#绘制两个商家的柱形图
pie = (Pie().add('', [list(z) for z in zip(data.columns.tolist(), data.loc['商家A'].tolist())]).set_global_opts(title_opts=opts.TitleOpts(title='商家A销售情况饼图')).set_series_opts(label_opts=opts.LabelOpts(formatter='{b}:{c} ({d}%)')))
pie.render_notebook()
#渲染图表
pie.render('第六题.html')

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

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

相关文章

️虚拟机配置NAT和Bridge模式

虚拟机的网络配置 桥接 通过使用物理机网卡 具有单独ip NAT 把物理机为路由器进行上网 NAT模式: 所谓nat模式,就是虚拟系统会通过宿主机的网络来访问外网,而这里的宿主机相当于有两个网卡,一个是真实网卡,一个是虚拟…

2023年值得关注的9大零售趋势

图片来源:Photo by Heidi Fin on Unsplash 随着经济衰退的威胁日益迫近,新的一年带给零售商一系列挑战,而后者刚从一年的供应链瓶颈和库存过剩中恢复过来。当然,2023年并非一直悲观。随着越来越多的零售商找到新的机会&#xff0c…

杰控通过 OPCproxy 获取数据发送到服务器

把数据从 杰控 取出来发到服务器 前提你在杰控中已经有变量了(wincc 也适用) 打开你的opcproxy 软件包 opcvarFile 添加变量 写文件就写到 了 opcproxy.ini中 这个文件里就是会读取到的数据 然后 opcproxy.exe发送到桌面快捷方式再考回来 &#…

DVWA靶场通关——SQL Injection篇

一,Low难度下unionget字符串select注入 1,首先手工注入判断是否存在SQL注入漏洞,输入1 这是正常回显的结果,再键入1 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for…

鸿蒙学习生态应用开发能力全景图-三方库(3)

鸿蒙生态三方库,是在鸿蒙系统上可重复使用的软件库,可帮助开发者重用技术资产,快速开发鸿蒙生态应用、元服务,提升开发效率。根据不同的开发语言分为两种:  ArkTS/TS/JS 语言的三方库,可直接导入并使用。…

OpenAI官方发布:利用ChatGPT提升写作的12条指南

近日,OpenAI官方发布了学生如何利用ChatGPT提升写作的12条指南,值得深入研究学习。 在如今AIGC应用爆发增长的时间点,如何充分利用生成式AI工具,如ChatGPT,有效切快速的提升写作和学习能力,成为每个学生、…

【数据库系列】Spring Data Neo4j Cypher 查询使用进阶指南

在 Neo4j 中,Cypher 查询语句并不像 MySQL 的 mapper XML 那样直接支持拆分和组织。然而,你可以使用一些策略来管理和重用 Cypher 查询,使其更易于维护和组织。以下是几种方法: 1. 使用 Spring Data Neo4j 的 Repository 接口 通…

.net core开发windows程序在国产麒麟操作系统中运行

.net core自从3.1版本号后,完全是一个独立的开源的多平台开发组件,目前国产化是趋势,不少项目需要开发国产如Kylin操作系统中运行的程序,无论是Web程序还是桌面程序,都有这样的需求。 首先,可明确的的.net…

基于 Python 的 Bilibili 评论分析与可视化

一、项目概述 本项目利用 Python 对 Bilibili (哔哩哔哩)平台上的视频评论数据进行爬取、清洗和分析,并通过可视化展示数据的主要特征。我们通过以下几个步骤实现了这一过程: 数据爬取:使用 Bilibili 提供的 API 获取…

如何禁用VMware虚拟网卡

安装VMWare虚拟机之后,会在本地创建两个虚拟网卡VMware Network Adapter VMnet1和VMware Network Adapter VMnet8,如果使用iNode客户端联网时会进行禁用多网卡检测,否则无法联网。因此,问题根源就在于虚拟网卡未禁用。 1、网络和…

ElasticSearch备考 -- Cross cluster replication(CCR)

一、题目 操作在cluster1(local)中操作索引task,复制到cluster2(remote)中 二、思考 CCR 我们可以对标MySQL 理解为为主从,后者备份。主节点负责写入数据,从/备节点负责同步时主节点的数据。 …

界面控件DevExpress WPF中文教程:TreeList视图及创建分配视图

DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…

基于Java的药店管理系统

药店管理系统 一:基本介绍开发环境管理员功能模块图系统功能部分数据库表设计 二:部分系统页面展示登录界面管理员管理进货信息界面管理员管理药品信息界面管理员管理员工界面管理员管理供应商信息界面管理员管理销售信息界面员工对信息进行管理员工对销…

Qwen2-VL:发票数据提取、视频聊天和使用 PDF 的多模态 RAG 的实践指南

概述 随着人工智能技术的迅猛发展,多模态模型在各类应用场景中展现出强大的潜力和广泛的适用性。Qwen2-VL 作为最新一代的多模态大模型,融合了视觉与语言处理能力,旨在提升复杂任务的执行效率和准确性。本指南聚焦于 Qwen2-VL 在三个关键领域…

探索Python的HTTP利器:Requests库的神秘面纱

文章目录 **探索Python的HTTP利器:Requests库的神秘面纱**一、背景:为何选择Requests库?二、Requests库是什么?三、如何安装Requests库?四、Requests库的五个简单函数使用方法1. GET请求2. POST请求3. PUT请求4. DELET…

信号保存和信号处理

目录 信号保存中重要的概念 内核中信号的保存 对sigset_t操作的函数 对block,pendding,handler三张表的操作 sigpromask ​编辑 sigpending 是否有sighandler函数呢? 案例 信号处理 操作系统是如何运行的? 硬件中断 …

基于HTTP编写ping操作

基于HTTP编写ping操作 前言 在上一集我们就完成了创建MockServer的任务,那么我们就可以正式开始进行网络的通讯,那么我们今天就来基于HTTP来做一个客户端ping服务端的请求,服务端返回pong的响应。 需求分析 基于HTTP,实现ping…

机器学习 贝叶斯公式

这是条件概率的计算公式 𝑃(𝐴|𝐵)𝑃(B|A)𝑃(𝐴)/𝑃(𝐵) 全概率公式 𝑃(𝐵)𝑃(𝐵|𝐴)𝑃(𝐴)&am…

【工具插件类教学】在 Unity 中使用 iTextSharp 实现 PDF 文件生成与导出

目录 一、准备工作 1. 安装 iTextSharp 2. 准备资源文件 二、创建 ExportPDFTool 脚本 1、初始化 PDF 文件,设置字体 2、添加标题、内容、表格和图片 三、使用工具类生成 PDF 四、源码地址 在 Unity 项目中,我们有时会需要生成带有文本、表格和图片的 PDF 文件,以便…

Java 责任链模式 减少 if else 实战案例

一、场景介绍 假设有这么一个朝廷,它有 县-->府-->省-->朝廷,四级行政机构。 这四级行政机构的关系如下表: 1、县-->府-->省-->朝廷:有些地方有完整的四级行政机构。 2、县-->府-->朝廷:直…