(5)所有角色数据分析页面的构建-5
所有角色数据分析页面,包括一个时间轴柱状图、六个散点图、六个柱状图(每个属性角色的生命值/防御力/攻击力的max与min的对比)。
"""绘图"""
from pyecharts.charts import Timeline
from find_type import FindType
import pandas as pd
from pyecharts.charts import Bar, Page
from pyecharts import options as opts
from pyecharts.charts import Scatter# 全部角色
def x():tl = Timeline()for i in ["火", "水", "冰", "风", "雷", "岩"]:role_things = pd.read_excel("C:/Users/YHT/Desktop/项目/原神各属性角色信息.xlsx", header=0, index_col=0)role_things = role_things.fillna(axis=0, method="ffill")things_list = role_things.groupby("属性").groupsprint(role_things.loc[things_list[i]]["角色"])bar = (Bar().add_xaxis(list(role_things.loc[things_list[i]]["角色"])).add_yaxis("生命值", list(role_things.loc[things_list[i]]["生命值"])).add_yaxis("防御力", list(role_things.loc[things_list[i]]["防御力"])).add_yaxis("攻击力", list(role_things.loc[things_list[i]]["攻击力"])).set_global_opts(title_opts=opts.TitleOpts()))tl.add(bar, f"{i}属性")return tl# 火
def y():return_things = FindType("火").find_type()df = return_things.drop(["属性", "突破加成"], axis=1)list_source = [["produce", "max", "min"]]print(df)list_source = list_source + [["生命值"] + list(df[df["生命值"] == df["生命值"].max()]["生命值"]) + list(df[df["生命值"] == df["生命值"].max()]["生命值"])] + [["防御力"] + list(df[df["防御力"] == df["防御力"].max()]["防御力"]) + list(df[df["防御力"] == df["防御力"].max()]["防御力"])] + [["攻击力"] + list(df[df["攻击力"] == df["攻击力"].max()]["攻击力"]) + list(df[df["攻击力"] == df["攻击力"].max()]["攻击力"])]c = (Bar().add_dataset(source=list_source).add_yaxis(series_name="max", y_axis=[]).add_yaxis(series_name="min", y_axis=[]).set_global_opts(title_opts=opts.TitleOpts(title="火属性"),xaxis_opts=opts.AxisOpts(type_="category"),))return c# 水
def z():return_things = FindType("水").find_type()df = return_things.drop(["属性", "突破加成"], axis=1)list_source = [["produce", "max", "min"]]print(df)list_source = list_source + [["生命值"] + list(df[df["生命值"] == df["生命值"].max()]["生命值"]) + list(df[df["生命值"] == df["生命值"].max()]["生命值"])] + [["防御力"] + list(df[df["防御力"] == df["防御力"].max()]["防御力"]) + list(df[df["防御力"] == df["防御力"].max()]["防御力"])] + [["攻击力"] + list(df[df["攻击力"] == df["攻击力"].max()]["攻击力"]) + list(df[df["攻击力"] == df["攻击力"].max()]["攻击力"])]c = (Bar().add_dataset(source=list_source).add_yaxis(series_name="max", y_axis=[]).add_yaxis(series_name="min", y_axis=[]).set_global_opts(title_opts=opts.TitleOpts(title="水属性"),xaxis_opts=opts.AxisOpts(type_="category"),))return c# 冰
def a():return_things = FindType("冰").find_type()df = return_things.drop(["属性", "突破加成"], axis=1)list_source = [["produce", "max", "min"]]print(df)list_source = list_source + [["生命值"] + list(df[df["生命值"] == df["生命值"].max()]["生命值"]) + list(df[df["生命值"] == df["生命值"].max()]["生命值"])] + [["防御力"] + list(df[df["防御力"] == df["防御力"].max()]["防御力"]) + list(df[df["防御力"] == df["防御力"].max()]["防御力"])] + [["攻击力"] + list(df[df["攻击力"] == df["攻击力"].max()]["攻击力"]) + list(df[df["攻击力"] == df["攻击力"].max()]["攻击力"])]c = (Bar().add_dataset(source=list_source).add_yaxis(series_name="max", y_axis=[]).add_yaxis(series_name="min", y_axis=[]).set_global_opts(title_opts=opts.TitleOpts(title="冰属性"),xaxis_opts=opts.AxisOpts(type_="category"),))return c# 风
def b():return_things = FindType("风").find_type()df = return_things.drop(["属性", "突破加成"], axis=1)list_source = [["produce", "max", "min"]]print(df)list_source = list_source + [["生命值"] + list(df[df["生命值"] == df["生命值"].max()]["生命值"]) + list(df[df["生命值"] == df["生命值"].max()]["生命值"])] + [["防御力"] + list(df[df["防御力"] == df["防御力"].max()]["防御力"]) + list(df[df["防御力"] == df["防御力"].max()]["防御力"])] + [["攻击力"] + list(df[df["攻击力"] == df["攻击力"].max()]["攻击力"]) + list(df[df["攻击力"] == df["攻击力"].max()]["攻击力"])]c = (Bar().add_dataset(source=list_source).add_yaxis(series_name="max", y_axis=[]).add_yaxis(series_name="min", y_axis=[]).set_global_opts(title_opts=opts.TitleOpts(title="风属性"),xaxis_opts=opts.AxisOpts(type_="category"),))return c# 雷
def c():return_things = FindType("雷").find_type()df = return_things.drop(["属性", "突破加成"], axis=1)list_source = [["produce", "max", "min"]]print(df)list_source = list_source + [["生命值"] + list(df[df["生命值"] == df["生命值"].max()]["生命值"]) + list(df[df["生命值"] == df["生命值"].max()]["生命值"])] + [["防御力"] + list(df[df["防御力"] == df["防御力"].max()]["防御力"]) + list(df[df["防御力"] == df["防御力"].max()]["防御力"])] + [["攻击力"] + list(df[df["攻击力"] == df["攻击力"].max()]["攻击力"]) + list(df[df["攻击力"] == df["攻击力"].max()]["攻击力"])]c = (Bar().add_dataset(source=list_source).add_yaxis(series_name="max", y_axis=[]).add_yaxis(series_name="min", y_axis=[]).set_global_opts(title_opts=opts.TitleOpts(title="雷属性"),xaxis_opts=opts.AxisOpts(type_="category"),))return c# 岩
def d():return_things = FindType("岩").find_type()df = return_things.drop(["属性", "突破加成"], axis=1)list_source = [["produce", "max", "min"]]print(df)list_source = list_source + [["生命值"] + list(df[df["生命值"] == df["生命值"].max()]["生命值"]) + list(df[df["生命值"] == df["生命值"].max()]["生命值"])] + [["防御力"] + list(df[df["防御力"] == df["防御力"].max()]["防御力"]) + list(df[df["防御力"] == df["防御力"].max()]["防御力"])] + [["攻击力"] + list(df[df["攻击力"] == df["攻击力"].max()]["攻击力"]) + list(df[df["攻击力"] == df["攻击力"].max()]["攻击力"])]c = (Bar().add_dataset(source=list_source).add_yaxis(series_name="max", y_axis=[]).add_yaxis(series_name="min", y_axis=[]).set_global_opts(title_opts=opts.TitleOpts(title="岩属性"),xaxis_opts=opts.AxisOpts(type_="category"),))return cdef e():role_things = pd.read_excel("C:/Users/YHT/Desktop/项目/原神各属性角色信息.xlsx", header=0, index_col=0)role_things = role_things.fillna(axis=0, method="ffill")print(role_things)return_things = FindType("岩").find_type()df = return_things.drop(["属性", "突破加成"], axis=1)Name = df["角色"]Hp = df["生命值"]Def = df["防御力"]Atk = df["攻击力"]c = (Scatter().add_xaxis(list(Name)).add_yaxis("生命值", list(Hp)).add_yaxis("防御力", list(Def)).add_yaxis("攻击力", list(Atk)).set_global_opts(title_opts=opts.TitleOpts(title="岩属性"),visualmap_opts=opts.VisualMapOpts(type_="size", max_=150, min_=20),xaxis_opts=opts.AxisOpts(axislabel_opts={"rotate": 45})))return cdef f():role_things = pd.read_excel("C:/Users/YHT/Desktop/项目/原神各属性角色信息.xlsx", header=0, index_col=0)role_things = role_things.fillna(axis=0, method="ffill")print(role_things)return_things = FindType("火").find_type()df = return_things.drop(["属性", "突破加成"], axis=1)Name = df["角色"]Hp = df["生命值"]Def = df["防御力"]Atk = df["攻击力"]c = (Scatter().add_xaxis(list(Name)).add_yaxis("生命值", list(Hp)).add_yaxis("防御力", list(Def)).add_yaxis("攻击力", list(Atk)).set_global_opts(title_opts=opts.TitleOpts(title="火属性"),visualmap_opts=opts.VisualMapOpts(type_="size", max_=150, min_=20),xaxis_opts=opts.AxisOpts(axislabel_opts={"rotate": 45})))return cdef g():role_things = pd.read_excel("C:/Users/YHT/Desktop/项目/原神各属性角色信息.xlsx", header=0, index_col=0)role_things = role_things.fillna(axis=0, method="ffill")print(role_things)return_things = FindType("水").find_type()df = return_things.drop(["属性", "突破加成"], axis=1)Name = df["角色"]Hp = df["生命值"]Def = df["防御力"]Atk = df["攻击力"]c = (Scatter().add_xaxis(list(Name)).add_yaxis("生命值", list(Hp)).add_yaxis("防御力", list(Def)).add_yaxis("攻击力", list(Atk)).set_global_opts(title_opts=opts.TitleOpts(title="水属性"),visualmap_opts=opts.VisualMapOpts(type_="size", max_=150, min_=20),xaxis_opts=opts.AxisOpts(axislabel_opts={"rotate": 45})))return cdef h():role_things = pd.read_excel("C:/Users/YHT/Desktop/项目/原神各属性角色信息.xlsx", header=0, index_col=0)role_things = role_things.fillna(axis=0, method="ffill")print(role_things)return_things = FindType("冰").find_type()df = return_things.drop(["属性", "突破加成"], axis=1)Name = df["角色"]Hp = df["生命值"]Def = df["防御力"]Atk = df["攻击力"]c = (Scatter().add_xaxis(list(Name)).add_yaxis("生命值", list(Hp)).add_yaxis("防御力", list(Def)).add_yaxis("攻击力", list(Atk)).set_global_opts(title_opts=opts.TitleOpts(title="冰属性"),visualmap_opts=opts.VisualMapOpts(type_="size", max_=150, min_=20),xaxis_opts=opts.AxisOpts(axislabel_opts={"rotate": 45})))return cdef I():role_things = pd.read_excel("C:/Users/YHT/Desktop/项目/原神各属性角色信息.xlsx", header=0, index_col=0)role_things = role_things.fillna(axis=0, method="ffill")print(role_things)return_things = FindType("风").find_type()df = return_things.drop(["属性", "突破加成"], axis=1)Name = df["角色"]Hp = df["生命值"]Def = df["防御力"]Atk = df["攻击力"]c = (Scatter().add_xaxis(list(Name)).add_yaxis("生命值", list(Hp)).add_yaxis("防御力", list(Def)).add_yaxis("攻击力", list(Atk)).set_global_opts(title_opts=opts.TitleOpts(title="风属性"),visualmap_opts=opts.VisualMapOpts(type_="size", max_=150, min_=20),xaxis_opts=opts.AxisOpts(axislabel_opts={"rotate": 45})))return cdef K():role_things = pd.read_excel("C:/Users/YHT/Desktop/项目/原神各属性角色信息.xlsx", header=0, index_col=0)role_things = role_things.fillna(axis=0, method="ffill")print(role_things)return_things = FindType("雷").find_type()df = return_things.drop(["属性", "突破加成"], axis=1)Name = df["角色"]Hp = df["生命值"]Def = df["防御力"]Atk = df["攻击力"]c = (Scatter().add_xaxis(list(Name)).add_yaxis("生命值", list(Hp)).add_yaxis("防御力", list(Def)).add_yaxis("攻击力", list(Atk)).set_global_opts(title_opts=opts.TitleOpts(title="雷属性"),visualmap_opts=opts.VisualMapOpts(type_="size", max_=150, min_=20),xaxis_opts=opts.AxisOpts(axislabel_opts={"rotate": 45})))return cpage = Page(layout=Page.DraggablePageLayout)
page.add(a(), b(), c(), d(), x(), y(), z(), e(), f(), g(), h(), I(), K())
# page.render(".html")
# Page.save_resize_html(".html", cfg_file="chaonfig.json", dest="./templates/无.html")
运行结果:

相关文章:
(5)所有角色数据分析页面的构建-5
所有角色数据分析页面,包括一个时间轴柱状图、六个散点图、六个柱状图(每个属性角色的生命值/防御力/攻击力的max与min的对比)。 """绘图""" from pyecharts.charts import Timeline from find_type import FindType import pandas …...
专利进阶(三):专利撰写资料汇总
文章目录 一、前言二、资料汇总三、拓展阅读 一、前言 在专利撰写前,需要首先了解专利撰写所需遵守的基本规则。可以借助的撰写工具是什么。文献检索在哪里?注意事项是什么?本篇博文会就以上问题进行逐一解答。 专利撰写基本原则࿱…...
maven编译始终提示无效的目标发行版的解决方法
摘自个人印象笔记2021-05-07:https://app.yinxiang.com/fx/55e1d5f4-aeea-446a-a768-0f1a48195f5b(图显示不完整可查看原笔记内容)1:确保IDE中的编译版本正确 在idea中,主要看项目属性中和setting的java compiler中对应的jdk版本是否正确&…...
系统架构设计高级技能 · 软件可靠性分析与设计(三)【系统架构设计师】
系列文章目录 系统架构设计高级技能 软件架构概念、架构风格、ABSD、架构复用、DSSA(一)【系统架构设计师】 系统架构设计高级技能 系统质量属性与架构评估(二)【系统架构设计师】 系统架构设计高级技能 软件可靠性分析与设计…...
界面控件DevExpress WPF Chart组件——拥有超快的数据可视化库!
DevExpress WPF Chart组件拥有超大的可视化数据集,并提供交互式仪表板与高性能WPF图表库。DevExpress Charts提供了全面的2D / 3D图形集合,包括数十个UI定制和数据分析/数据挖掘选项。 PS:DevExpress WPF拥有120个控件和库,将帮助…...
【网络安全】等保测评安全物理环境
【网络安全】等保测评&安全物理环境 前言第1章 安全物理环境1.1 物理位置选择1.2 物理访问控制(高风险项)1.3 防盗窃1.4 防雷击1.5 防火1.6 防水防潮1.7 防静电1.8 温湿度控制1.9 电力供应1.10 电磁防护 前言 等级保护对象是由计算机或其他信息终端…...
Intellij IDEA 导入 eclipse web 项目详细操作
Eclipse当中的web项目都会有这两个文件。但是idea当中应该是没有的,所以导入会出现兼容问题。但是本篇文章会教大家如何导入,并且导入过后还能使用tomcat运行。文章尽可能以图片的形式进行演示。我的idea使用的版本是2022.3.3版本。当然按正常来说版本之…...
安卓java A应用切换到B应用,来回切换不执行OnCreate
需求:安卓java如何做到A应用切换到B应用,如果B应用没启动就启动,如果B应用已经启动就仅仅切换到B应用。B应用再切换回A应用,不要重复执行OnCreate! 在 A 应用中的: 在 A 应用中,如果你希望在切换回 B 应用…...
【Linux】批量恢复文件权限
批量恢复文件权限 Linux 中,如果意外误操作将根目录目录权限批量设置,比如 chmod -R 777 / ,系统中的大部分服务以及命令将无法使用,这时候可以通过系统自带的 getfacl 命令来拷贝和还原系统权限,若是其他系统目录被误…...
数据可视化(八)堆叠图,双y轴,热力图
1.双y轴绘制 #双Y轴可视化数据分析图表 #add_subplot() dfpd.read_excel(mrbook.xlsx) x[i for i in range(1,7)] y1df[销量] y2df[rate] #用来正常显示负号 plt.rcParams[axes.unicode_minus]False figplt.figure() ax1fig.add_subplot(1,1,1)#一行一列,第一个区域…...
前台自动化测试:基于敏捷测试驱动开发(TDD)的自动化测试原理
一、自动化测试概述 自动化测试主要应用到查询结果的自动化比较,把借助自动化把相同的数据库数据的相同查询条件查询到的结果同理想的数据进行自动化比较或者同已经保障的数据进行不同版本的自动化比较,减轻人为的重复验证测试。多用户并发操作需要自动…...
基于SLAM的规划算法仿真复现|SLAM|智能规划
图片来自百度百科 前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。 高质量博客汇总https://blog.csdn.n…...
sqlite3多线程操作问题
在项目中使用sqlite3,有时会报database is locked 两种方式 1、多线程读,多线程写,只使用共同一个数据库连接,即使用同一个SQLiteHelper连接,调用sqlite3_busy_timeout 2、多线程读,单线程写,每…...
ACCESS数据库增删改查
[添加COM组件] A: Microsoft ADO Ext. 2.8 for DDL and Security B: Microsoft ActiveX Data Objects 2.8 Library [添加头文件]using System.Data.OleDb; using System.Data; using ADOX; using System.IO; using System; using System.Collections.Generic; using System.L…...
动捕系统mockup_optitrack替换为VRPN传递信息
motive:启动→载入已有→layout选择capture→view选择data streming→复选marker右键create刚体→rename刚体→修改local interface为本机ip→勾选vrpn ROS端:roslaunch vrpn_client_ros vrpn_efy.launch 记得修改server地址为motiveip地址 关掉motive…...
【服务平台】Rancher运行和管理Docker和Kubernetes,提供管理生产中的容器所需的整个软件堆栈
Rancher是一个开源软件平台,使组织能够在生产中运行和管理Docker和Kubernetes。使用Rancher,组织不再需要使用一套独特的开源技术从头开始构建容器服务平台。Rancher提供了管理生产中的容器所需的整个软件堆栈。 完整软件堆栈 Rancher是供采用容器的团…...
二叉树的完全性检验
给定一个二叉树的 root ,确定它是否是一个 完全二叉树 。 在一个 完全二叉树 中,除了最后一个关卡外,所有关卡都是完全被填满的,并且最后一个关卡中的所有节点都是尽可能靠左的。它可以包含 1 到 2h 节点之间的最后一级 h 。 示…...
激活函数总结(六):ReLU系列激活函数补充(RReLU、CELU、ReLU6)
激活函数总结(六):ReLU系列激活函数补充 1 引言2 激活函数2.1 RReLU激活函数2.2 CELU激活函数2.3 ReLU6 激活函数 3. 总结 1 引言 在前面的文章中已经介绍了介绍了一系列激活函数 (Sigmoid、Tanh、ReLU、Leaky ReLU、PReLU、Swish、ELU、SEL…...
tp5中的事务处理
使用事务首先要数据库支持事务; 如下MySQL数据库user表开启事务支持,即设计表->引擎设置为InnoDB->保存 事务处理 1. 数据库的表引擎需要是 InnoDB 才可以使用,如果不是调整即可; 2. 事务处理,需要执行多个 SQ…...
论文总结《Towards Evaluating the Robustness of Neural Networks(CW)》
原文链接 C&W 这篇论文更像是在讲一个优化问题,后面讲述如何针对生成对抗样本的不可解问题近似为一个可解的问题,很有启发。本文后面将总结论文各个部分的内容。 Motivation 文章提出了一个通用的设计生成对抗样本的方法,根据该论文提…...
定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...
上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式
简介 在我的 QT/C 开发工作中,合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式:工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...
Spring Boot + MyBatis 集成支付宝支付流程
Spring Boot MyBatis 集成支付宝支付流程 核心流程 商户系统生成订单调用支付宝创建预支付订单用户跳转支付宝完成支付支付宝异步通知支付结果商户处理支付结果更新订单状态支付宝同步跳转回商户页面 代码实现示例(电脑网站支付) 1. 添加依赖 <!…...
