pyecharts绘制复联超级英雄战斗力


前几天在网上看到有人用 matplotlib 绘制了漫威里几大英雄的战斗力图,赶脚灰常有意思。作为漫威和 python 的双重粉丝,我这次又 hold 不住了,于是也做了一个 pyecharts 版的实力对比图,在这里分享给大家。

首先放上一张静态图。

图1. 复联超级英雄能力对比

 

这次我绘制的这个图和网上 matplotlib 版本的图有以下区别:

1. 加入了交互功能,可以查看任意一个英雄的数值,真正做到“想点哪里点哪里”(妈妈再也不用担心我的学习了)

2. 将多个英雄的图放在一个图表里,方便对比,同时也可以单独查看某个英雄数值

3. 加入了图片背景,体现作为漫威粉丝的B格

不多说,show you the code!

首先还是导入各种功能模块。opts(options)是 pyecharts 中设置图片详细格式的模块,Radar 是绘制雷达图的类名,因为绘制超级英雄的战斗力(包含多个数值),用雷达图比较适合,JsCode 是 pyecharts 中执行 JavaScript 代码的一个类。

from pyecharts import options as optsfrom pyecharts.charts import Radarfrom pyecharts.commons.utils import JsCode

 

接下来是设置各个超级英雄的战斗力数值,这次的战斗力数值来自于百度百科:

https://baike.baidu.com/item/%E6%BC%AB%E5%A8%81%E4%BA%BA%E7%89%A9%E8%83%BD%E5%8A%9B%E6%95%B0%E5%80%BC/17935032

我们选取复联六巨头的战斗力数值(美国队长、钢铁侠、黑寡妇、鹰眼、绿巨人以及雷神),数值内容并不多,主要代码如下所示:

captain_america = [{"value": [4, 4, 4, 4, 1, 7], "name": "美国队长"}]iron_man= [{"value": [6, 3, 5, 3, 5, 3], "name": "钢铁侠"}]black_widow = [{"value": [3, 3, 2, 3, 2, 7], "name": "黑寡妇"}]hawkeye = [{"value": [3, 3, 3, 2, 3, 7], "name": "鹰眼"}]hulk = [{"value": [2, 7, 3, 7, 1, 3], "name": "绿巨人"}]thor =  [{"value": [2, 7, 6, 7, 7, 6], "name": "雷神"}]

这6个人的数值都用他们各自的英文名作变量名,每个变量是一个 list,里面包含一个 dict,dict 中 value 就代表了每个人的战斗力数值,其同样是一个 list,包含6个数据:智力、力量、速度、耐力、能量发射和战斗技能。后面的 name 则是每个人的中文名,实际上 name 在整个代码中并没有什么作用,只方便显示。

接下来是一个名为 myschema 的变量,是一个 list,里面包含6个 dict,每个 dict 包含3个 key,这6个 dict 主要用来设置雷达图的坐标轴,后面会详细说明。

myschema = [    {"name": '智力', "max": 7, "min": 0},    {"name": '力量', "max": 7, "min": 0},    {"name": '速度', "max": 7, "min": 0},    {"name": '耐力', "max": 7, "min": 0},    {"name": '能量发射', "max": 7, "min": 0},    {"name": '战斗技能', "max": 7, "min": 0}]

然后就开始我们的主要绘图部分。首先生成一个 Radar 类的实例 r,在这里我们设置了图表的背景图,用到的是 opts.InitOpts 中的 bg_color 属性,其值为

{"type": "pattern", "image": JsCode("img"), "repeat": "no-repeat"}

"type": "pattern" 表示我们用图片作背景,"image": JsCode("img") 表示我们用 JavaScript 代码来设置这个背景图,"repeat": "no-repeat" 表示图片不重复。而 add_js_funcs 方法就是执行相关的 JavaScript 代码,这里的 JavaScript 代码也很简单,就设置一个名为 img 的变量,指定一下路径。在这里我们用的图片是本地图片,名为 a5.png,我们要把这个图片放在自己的当前工作目录下,不知道当前工作目录的可以执行下面的代码查看:

import osroot = os.getcwd()print(root)

当然这里我们也可以用网上的图片,只要把 img.src 设置为图片的网址就OK了。

r = Radar(init_opts=opts.InitOpts(            bg_color={"type": "pattern", "image": JsCode("img"), "repeat": "no-repeat"}        )) #初始化雷达图r.add_js_funcs(    """    var img = new Image(); img.src = 'a5.png';    """) #执行js代码

接下来是一个长长的 chaining methods(方法链),虽然内容多了点,但不少都是重复性代码,所以并不难理解,这里介绍一下里面的主要部分。

add_schema 方法就是设置我们的雷达图,参数 schema 设置为 myschema,就是前面我们提到过的那个 list,里面有6个 dict,每个 dict 就是一个径向轴,dict 的 name 就是径向轴的标签,min 和 max 设置径向轴的最小和最大值。shape 是雷达图的形状,这里设置为圆形,也可以设置为多边形 polygon。center=["50%", "50%"] 表示雷达图的中心在当前绘图区域的中点位置,即当前绘图区域的高度和宽度的50%位置,radius="80%" 表示雷达图的半径为当前绘图区域的大小的80%,即这个区域的宽度和高度中的较小者的80%。angleaxis_opts 参数是用来设置角度坐标轴,其2个参数 axistick_opts、axislabel_opts 全都设为不显示,他们的分别代表了角度轴的刻度、标签,大家可以试试把这些参数设置为 True 的结果。然后是参数 radiusaxis_opts,其用来设置径向轴,其最小值为0,最大值为7,间隔为1,其包含的 splitarea_opts 参数用来设置间隔区域,也就是图中灰色的部分。而 polar_opts 参数则是设置这个雷达图的相关属性,这里我们全部采用默认设置。而 add_schema 的另外两个参数 splitline_opt 和 textstyle_opts 则分别用来设置径向轴的分割线和图中文字,这里我们把分割线设为不显示,文章颜色设为黑色。

r 的 add 方法则用来向图中添加数据,每个 add 方法会添加一个数据,因为我们一共有6个超级英雄,所以用了6次 add 方法。add 方法中 series_name 用来设置数据序列的名称,这也就是图中上面一排圆圈后面的文字,data 是所要输入的数据,areastyle_opts 用来设置每个数据序列图形区域的属性,这里把每个图形区域的不透明度设为0.1,linestyle_opts 设置图形连线的属性,这里把线宽设为1。

set_global_opt 则用来设置整个图表的属性,这里我们设置图的标题为"复联六巨头实力对比"。最后我们用 render 生成一个网页。

(    r.add_schema( #设置雷达图的各种属性        schema=myschema,        shape="circle",        center=["50%", "50%"], #图片中心位置        radius="80%", #雷达图半径大小        angleaxis_opts=opts.AngleAxisOpts(            axistick_opts=opts.AxisTickOpts(is_show=False),            axislabel_opts=opts.LabelOpts(is_show=False),        ),        radiusaxis_opts=opts.RadiusAxisOpts(            min_=0,            max_=7,            interval=1,            splitarea_opts=opts.SplitAreaOpts(                is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)            )        ), polar_opts=opts.PolarOpts(),        splitline_opt=opts.SplitLineOpts(is_show=False),        textstyle_opts=opts.TextStyleOpts(color="black"),    )    .add(        series_name="美国队长",        data=captain_america,        areastyle_opts=opts.AreaStyleOpts(opacity=0.1),        linestyle_opts=opts.LineStyleOpts(width=1),    )    .add(        series_name="钢铁侠",        data=iron_man,        areastyle_opts=opts.AreaStyleOpts(opacity=0.1),        linestyle_opts=opts.LineStyleOpts(width=1),    )    .add(        series_name="黑寡妇",        data=black_widow,        areastyle_opts=opts.AreaStyleOpts(opacity=0.1),        linestyle_opts=opts.LineStyleOpts(width=1),    )    .add(        series_name="鹰眼",        data=hawkeye,        areastyle_opts=opts.AreaStyleOpts(opacity=0.1),        linestyle_opts=opts.LineStyleOpts(width=1),    )    .add(        series_name="绿巨人",        data=hulk,        areastyle_opts=opts.AreaStyleOpts(opacity=0.1),        linestyle_opts=opts.LineStyleOpts(width=1),    )    .add(        series_name="雷神",        data=thor,        areastyle_opts=opts.AreaStyleOpts(opacity=0.1),        linestyle_opts=opts.LineStyleOpts(width=1),    )    .set_global_opts(        title_opts=opts.TitleOpts(title="复联六巨头实力对比")    )    .render('ht1.html'))

生成的结果如图2所示:

图2. 生成的动态效果图

 

在我们绘制的图中,如果想只查看某个英雄的数值,我们则可以单击其他英雄的序列名称,就是图中上面那一排小圆圈和后面的文字,每次单击就会使这个英雄的名称变成灰色,其代表的图形也会在图中消失,再次单击则会复原,这样就会只留下我们需要的英雄的数值。如图3所示,我们只留下绿巨人的图。

图3. 绿巨人战斗力图

 

pyecharts 的优点是绘图快、交互设计好,它提供了很多 matplotlib 不具备或很难实现的功能,这给我们在绘制交互式图表时提供了更好的选择。本文所有图片和代码都已上传,如有需要可自行下载:

https://gitee.com/crossin/snippet/tree/master/marvel-radar

作者简介:

小李子,数据分析爱好者,擅长数据可视化,比较关注机器学习领域,希望能和业内朋友多学习交流,个人微信tyrant100。


_往期文章推荐_

谁才是漫威的绝对C位


Crossin的编程教室
关注 关注
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
python画钢铁侠_Matplotlib绘制漫威英雄战力,带你飞起来!
weixin_42236938的博客
01-13 3064
前言我们平常玩游戏或者看电影的时候,会看到里面介绍各种人的能力指标,以百度百科提供的漫威人物能力数值为例,如下分别介绍了各个超级英雄的智力、力量、速度、耐力、能量发射、战斗技能。但是吧,光是这样的表格,并不能很直观的看出英雄的能力,我们需要一个战斗力分布。话不多说,先上成品:期望功能传入战力指标、超级英雄能力数值,生成上面的战力分布能力指标 = ['智力', '力量', '速度', '耐力'...
5G出来这么久了,到底5G对我们的生活带来了哪些便利呢?Python实现5G数据可视化,带你切实体验5G
Python4857的博客
12-16 555
前言 利用Python实现5G 手机价格 及芯片、5G下载网速,5G网络城市数据可视化,废话不多说~ 让我们愉快地开始吧~ 开发工具 Python版本: 3.6.4 相关模块: pyecharts模块; 以及一些Python自带的模块。 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可。 今天将对5G 手机价格 及芯片、5G下载网速,5G网络城市等相关数据进行可视化 各品牌5G手机价位比较 一共有17个品牌,其中realme是一个新兴的手机品牌,2018年才创
Matplotlib绘制漫威英雄战力,带你飞起来!
终极冥帝
02-28 657
目录 前言 期望功能 代码实现一、导入matplotlib依赖包 二、支持显示中文 三、使用ggplot主题 四、根据能力项等分圆 五、生成n个子 六、获取支持的颜色 六、绘制所有子 更多...
漫威超级英雄大全(一)
elsery
11-09 4564
漫威超级英雄大全 一部超级英雄漫画的灵魂是什么?是不拘一格的世界观?还是五花八门的特异人设?答案远没有那么复杂,超级英雄漫画的灵魂当然就是英雄本人。如果英雄不出彩,任你处心积虑搞出种种奇葩设置,都挽回不了颓势。显然,漫威在塑造”灵魂”方面颇有心得,斯坦·李等一干画手瞅准时代趋势、市场需要等等因素,创造出了一批批高光亮眼又各不相同的超级英雄,支撑着漫威宇宙的王朝模式,并使之异彩纷呈。美国队长 原名:
表 API
风花雪月,品霖千年之情
03-16 3910
表 API Base 类是所有表的基类,包括组合表,Base 类 API 如下 func pyecharts.Base.add_js_funcs 新增 js 代码,js 代码会被渲染进 HTML 中执行 def add_js_funcs(*fns): func pyecharts.Base.set_colors 设置全局 Label 颜色 def set_colors(colors: colors: Sequence[str]) func pyecharts.Base.get_options 获取全局
pythonpyecharts绘制各种表详细(附代码)
09-18
主要介绍了pythonpyecharts绘制各种表详细(附代码),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
Pyecharts绘制全球流向的示例代码
09-18
Pyecharts绘制全球流向详解》 Pyecharts是一个强大的Python数据可视化库,它提供了丰富的表类型,其中就包括全球流向。本篇文章将深入探讨如何使用Pyecharts绘制全球流向,以及解决在绘制过程中可能遇到...
使用pyecharts绘制直方
最新发布
01-17
使用pyecharts绘制直方
urllib+pyecharts绘制
02-02
代码使用的是pyechartsv1.0+版本,而网上许多为v0.5,v0.5.X和v1间不兼容,v1是一个全新的版本,我比较了一下发现v1的显示效果更丰富,也更简单,而网上v1的例子却较少.
pyecharts 通过本地加载js文件
weixin_42185136的博客
09-01 2558
参考链接,博主写的很好原博文链接 条形 from pyecharts.charts import Bar from pyecharts import options as opts from pyecharts.globals import ThemeType bar = ( Bar( init_opts=opts.InitOpts( theme=ThemeType.LIGHT, js_host="./js/" #本地js路径
JS-funcs:JavaScript辅助函数
05-07
JS功能 越来越多的其他JavaScript功能集合在某些特定情况下可能会有用。
html调用js函数_pyecharts 彩蛋函数 -- add_js_funcs
weixin_39714191的博客
11-22 976
简介这次主要讲一个内置的函数 -- add_js_funcs这个函数的作用顾名思义就是添加一个自定义的 javascript 函数Demo下面通过一个简单的例子给大家展示一下话不多说直接上 Demo Code:from 效果 1讲解这张之所以能够放到我们画的背后主要有以下几个点:1、InitOpts 中 bg_Color 的字典(核心是:JsCode("img"))2、代码中的 add_js...
pyecharts中高阶用法:JScode
woysihsb的博客
12-22 6229
**JScode**的使用 导入Jscode from pyecharts.commons.utils import JsCode JScode对于pyecharts jscode对于pyecharts其实没有任何意义,无论怎么写都不会影响pyecharts的渲染 jscode实际上只是一段字符串(包含着javascript的代码),在渲染到html的时候变成html可识别的 js匿名函数 什么是JScode JScode简单来说:就是一段javascript代码,作用是为了对应jscode的参数
PyEcharts入门到精通
Father_Of_Soft的博客
06-12 1811
PyEcharts入门
Python数据分析+可视化项目案例教学:亚马逊平台用户订单数据分析
chinaherolts2008的博客
08-19 3776
前言 关于亚马逊订单数据的探索! 次项目大家就仅当作学习使用好了 导入库 import pandas as pd from pyecharts.charts import * from pyecharts import options as opts from pyecharts.commons.utils import JsCode Python从零基础入门到实战系统教程、源码、视频,想要数据集的同学也可以点这里 数据处理 对时间字段进行处理,转为datetime; 对配送州字段进行
pyecharts 详细教程与案例 秒入门
大义Python
06-11 4072
这里写目录标题概况特性(完虐matplotlib.pyplot)快速开始查询版本绘制第一个表bar对象的可用方法: 概况 Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了。 如何查看使用的 pyecharts 版本? 特性(完虐matplotlib.pyplot) 1简洁的 API 设计,使用如丝滑般流畅,支持链式调用 2囊括了 30
画【Python折线】的一百个学习报告(二、pyecharts引入js文件)
红目香薰
01-13 842
画【Python折线】的一百个学习报告(二、pyecharts引入js文件) 由于pyecharts生成的文件是html文件,那么,如果我们想自定义一些样式应该怎么样操作呢,如果纯原生的写js那可是非常麻烦的呢,所以我们引入jQuery插件来方便我们操作页面。
v1版pyecharts,初识如何看官方文档,时间轴,饼,柱状,折线,词云实例
xzc的博客
04-05 1767
闲话 相信有些同学在会遇到传递参数数据类型、属性取值、如何设置样式等问题,这个时候建议看文档,毕竟不可能一辈子在百度找人家的教程,看文档的能力是要具备的。当然,我的经验也不丰富,下面是我的一些见解,希望有所帮助。 如何看懂pyecharts官方文档 全局配置 ...
pyecharts绘制直方
09-21
对于使用pyecharts绘制直方,它没有专门的直方函数,但是可以通过使用Bar函数来实现。你可以通过设置不同的参数来调整Bar函数的效果,从而实现绘制直方的目的。 以下是使用pyecharts绘制直方的步骤: 1. ...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 电视剧里的代码真能运行吗? 49237
  • 羊了个羊,但是Python简(li)单(pu)版 16099
  • 我是如何在自学编程9个月后找到工作的 12480
  • ChatGPT被玩坏了 10965
  • 你的游戏开发第0课 10450

分类专栏

  • 编程笔记 77篇

最新评论

  • Python版 孤勇者 | 画图+演奏+音乐可视化

    qq_42753983: 孤勇者

  • 羊了个羊,但是Python简(li)单(pu)版

    qq_42753983: 您好我这边已经好了 可以打开了

  • 羊了个羊,但是Python简(li)单(pu)版

    qq_42753983: 您好 我这个已经安装了pgzero插件 在编辑器中再sheep.py右键使用Run sheep.py。命令启动后 终端里是这样的(pygame 2.5.2 (SDL 2.28.3, Python 3.12.2) Hello from the pygame community. https://www.pygame.org/contribute.html Process finished with exit code 0) 会出现一个小窗口但是一会儿就消失了。编辑器中sheep.py文件中 这些字段(Rect music Actor screen)会标红。而且我也按照文件最上方注释掉这一行 pgzrun.go(),然后再220924羊了个羊里打开终端运行 pgzrun sheep.py还是不行,会报(pyzrun : 无法将“pyzrun”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然 后再试一次。)所以想问问您应该怎么解决这种情况。谢谢您了

  • 羊了个羊,但是Python简(li)单(pu)版

    Crossin的编程教室: 你看下代码里开头有注释,讲了如何运行。这个是用了pgzero的库,有特殊的运行方式

  • 羊了个羊,但是Python简(li)单(pu)版

    qq_42753983: 您好我这个是一启动sheep.py 就会pygame 2.5.2 (SDL 2.28.3, Python 3.12.2) Hello from the pygame community. https://www.pygame.org/contribute.html 这是怎么回事。该如何解决呢 还有事报Rect Music is not defined

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 网上套路深,我的书成了别人赚钱的工具
  • 无需4090,超低成本搭建一套不限量的AI短视频创作工具
  • Python字典到底有序还是无序?
2024年12篇
2023年69篇
2022年31篇
2021年7篇
2020年11篇
2019年35篇
2018年37篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Crossin的编程教室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

聚圣源燕秀工具箱gbc游戏lesporn陈米麒我和我们在一起剧情介绍延边富德一号店服务电话孩子缺金起名能不能带木宝宝起名孟属虎的要起什么名字比较好和邪社彭丹电影夏虫漫画首字母起名咱们穿越吧第一季商品取名起名大全angelbeats游戏七七四十九是什么生肖婴儿免费起名生辰八字测试绝代双骄梁朝伟版雄霸天下全集高起专和专升本的报名时间给宝宝起名姓罗的鄢胜宇清华学姐爆料学弟性骚扰已和解6月9日是什么星座dinput8.dll注册公司起名字大全免费另一种灿烂生活演员表女孩起名程姓吗淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化