pyecharts0.5.x制作含地图的数据看板

引言

pyecharts作为Python的数据可视化包,其强大的功能不言而喻,Python + Echart,想想就觉得牛叉。目前pyecharts有两个大的版本,一个是0.5.x版本的,一个是1.0以后版本,而且这两个版本差别很大。如果是有的选,肯定优先选择1.0版本的,功能要比0.5.x版本的强大得多,而且支持链式调用。
但是肯定也有不少用不惯1.0及后续版本的同仁。博主因为之前一直用的是0.5.x版本的,如果要改成1.0版本的,很多项目都要大改,所以一直没有狠下心来换成1.0版本的包。
下面我介绍一下如何用pyecharts制作数据看板。
照样上编译环境:

  • Python3.7
  • 编译器Spyder或者pycharm都可以

另外,本文需要读者对pyecharts有一定的了解,不了解的可以去看看文档,文中有文档的链接,注意仔细看哦。

数据看板

数据看板意思就是,在一块大屏上显示多项数据图,比如地图,折线图,柱状图,漏斗图等等。
其实pyecharts0.5.x版本是支持数据看板功能的,请看pyecharts0.5.x版本的自定义图表接口,其中grid(并行显示多张图表)是最合适做数据看板的,但是开发人员说了:

用户可以自定义结合 Line/Bar/Kline/Scatter/EffectScatter/Pie/HeatMap/Boxplot 图表,将不同类型图表画在多张图上。第一个图需为 有 x/y 轴的图,即不能为 Pie,其他位置顺序任意。

也就是说,只能并行显示Line/Bar/Kline/Scatter/EffectScatter/Pie/HeatMap/Boxplot这几种图,如果要加入地图或者地理信息图,图表的位置就会乱,但是我现在又必须要在我的首页上加上地图,怎么办呢?博主一度无解。
先来看看1.0及后续版本的pyecharts是如何解决这个问题的。

代码请看这里,因为是官方的教程,大家直接去看就行了,我不再贴上来。原理就是用grid来添加各种基础图形,展示结果如下:
在这里插入图片描述
看起来还是很炫很震撼的,也就是博主要实现的功能
现在来介绍一下如何在低版本的pyecharts包里实现这个功能,主要是要把地图加进去。

0.5.x版本的pyecharts程序实现含地图的数据看板

导入包

from pyecharts import *
import os as os
from bs4 import BeautifulSoup
import pandas as pd
import datetime

可能已经有同学看出一些问题来了,导入了bs4,是不是要对网页进行编辑处理呢?

导入数据

我自己做了个excel数据,有3个sheet,其中的数据分别对应三个图,另外一个图,我要画仪表盘图,不需要数据。也就是说,我的数据看板上,有四张图。
首先,定义一个page图

page=Page()

对pyecharts有所了解的同学可能已经知道了,我这是想用page来生成数据看板,但是page图是翻页的,没法在一个页面上展示这么多图,继续看操作。

数据是自己随机生成的,命名为"数据.xlsx"。

f = pd.ExcelFile('数据.xlsx')
sheet = f.sheet_names

分别画出自己想要的四个图

如上面说的,我要在数据看板上画4个图,左上是地图,右上是一个折线图,左下是一个仪表板图,右下是个日历图

地图

直接上代码

d1 = pd.read_excel('数据.xlsx',sheet_name = sheet[0])
map_ = Map('地图数据', title_pos = 'center', title_top = '1%')
province = d1.iloc[:,0]
deaths = pd.Series.tolist(d1.iloc[:,1])
map_.add('', province, deaths, visual_range=[0, max(deaths)], maptype='china', is_visualmap=True,visual_text_color='#000')
page.add_chart(map_, 'map')

画完map图后,记得把map图加到page中去哦(代码块最后一句)

折线图

d3 = pd.read_excel('数据.xlsx',sheet_name = sheet[1])
line = Line('数据1&数据2','', title_pos = 'center', title_top = '2%')
def request_date(x):return x[0:10]
index = d3.iloc[:,0].apply(str).apply(request_date)
series1 = pd.Series.tolist(d3.iloc[:, 1])
series2 = pd.Series.tolist(d3.iloc[:, 2])
line.add('数据1',index,series1,mark_point = ['max'],is_datazoom_show=True, xaxis_rotate=90)
line.add('数据2',index,series2,mark_point = ['max'],is_datazoom_show=True, xaxis_rotate=90,legend_pos = 'left',)
page.add_chart(line, name = 'line')

这里为啥要写个函数request_date,你可以自己试试不写的后果,excel读数据不像读csv数据,如果数据是时间格式的,那么用pandas读出来的数据自带时间格式,后面有时分秒,如果不处理一下,折线图一直出不来.

仪表盘图

gauge = Gauge('同期比例',title_pos = 'center', title_top = '1%')
gauge.add('','同比',67.3)
page.add_chart(gauge, 'gauge')

这个最简单,不解释

日历图

d4 = pd.read_excel('数据.xlsx',sheet_name = sheet[2])
begin = datetime.date(2020,1,1)
end = datetime.date(2020,3,31)
data = [[str(begin + datetime.timedelta(days=i)), d4.iloc[i,1]]for i in range((end - begin).days + 1)
]
heatmap = HeatMap("日历分布", "", title_pos = 'center', title_top = '2%')
heatmap.add("",data,is_calendar_heatmap=True,visual_text_color="#000",visual_range_text=["", ""],visual_range=[0, max(d4['数据'])],calendar_cell_size=["auto", 30],is_visualmap=True,calendar_date_range=["2020-1-1",'2020-4-30'],visual_orient="horizontal",visual_pos="center",visual_top="80%",is_piecewise=True,
)
page.add_chart(heatmap, name = 'heatmap')

这个图有点复杂,有很多参数的设置需要去看文档,文档在这里
好了,画好4个图了,并且都添加到page里面去了,下面渲染成网页

page.render("page.html")

如果只是到这里,那就是文档中最简单的page图,需要从上往下翻页,而不是直观的展示是一个页面上,结果如下:
在这里插入图片描述
没达到目标是吧,别着急,bs4一直还没用呢

对html文件进行处理

不说废话,直接上代码

with open(os.path.join(os.path.abspath("."),"page.html"),'r+',encoding="utf8") as html:html_bf=BeautifulSoup(html,"lxml")divs=html_bf.find_all("div")divs[0]["style"]="width:750px;height:350px;position:absolute;top:70px;left:0px;border-style:solid;border-color:#FFFFFF;border-width:3px;"    #修改图表大小、位置、边框divs[1]["style"]="width:750px;height:350px;position:absolute;top:70px;left:750px;border-style:solid;border-color:#FFFFFF;border-width:3px;"  #修改图表大小、位置、边框divs[2]["style"]="width:750px;height:350px;position:absolute;top:420px;left:0px;border-style:solid;border-color:#FFFFFF;border-width:3px;"  #修改图表大小、位置、边框divs[3]["style"]="width:750px;height:350px;position:absolute;top:420px;left:750px;border-style:solid;border-color:#FFFFFF;border-width:3px;"  #修改图表大小、位置、边框body=html_bf.find("body")#body["style"]="background-color:#333333;"div_title="<div align=\"center\" style=\"width:1500px;\">\n<span style=\"font-size:32px;font face=\'黑体\';color:#000000\"><b>第一季度总体情况</b></div>"    #修改页面背景色、追加标题body.insert(0,BeautifulSoup(div_title,"lxml").div)html_new=str(html_bf)html.seek(0,0)html.truncate()html.write(html_new)html.close()

再看结果:
在这里插入图片描述
这就对了
今天没空了,后面有时间,我在仔细解释beautifulsoup是如何来对网页进行修改的。

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

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

相关文章

antv/g2图表tooltip自定义并展示坐标之外的数据

首先使用itemTpl自定义tooltip 效果是这样的tooltip展示坐标之外的数据 感觉Antv文档很不详细&#xff0c;写这块时找了好久才找到方法&#xff0c;现在记一下&#xff0c;方便今后的观看和其他遇到此问题的同学解决办法。 itemTpl this.chart.tooltip({showCrosshairs: true,…

pyecharts源码解读(13)图表类包charts之组合图表:直角坐标系(网格布局)Grid

当前pyecharts的版本为1.9.0。 概述 pyecharts/charts/composite_charts/包中的四个模块分别定义了组合图表类&#xff0c;其中pyecharts/charts/composite_charts/grid.py模块只定义了网格布局类Grid。 Grid类继承自图表基类Base&#xff0c;作用为在一个echarts实例中利用…

宇宙中大数字

1、高德纳箭头 2、葛力函数 如果脑子里面装一个葛里恒数&#xff0c;脑子就成了黑洞了。 后来人们研究出tree3

CCF-CSP 小中大 C语言

时间限制&#xff1a;0.1s 空间限制&#xff1a;512.0MB #include<stdio.h> int main() { int n,max,min,mid,midd,i; scanf("%d",&n); int a[n]; for(i0;i<n;i) {scanf("%d",&a[i]);} //输入 if(a[0]>a[n-1]){maxa[0];mina[n-1];} e…

redis中大Value问题的解决

我们日常在使用redis的时候, 有时会碰到大Value的问题, 超级大的一个Value存到redis中去, 这样其实不好, 我们可以把value进行压缩. 下面我们使用java自带的压缩, 对字符串进行压缩. /*** 使用gzip压缩字符串** param originString 要压缩的字符串* return 压缩后的字符串*/…

java中大素数生成算法

目前的公开密钥 算法大部分基于大整数分解、有限域上的离散对数问题和椭 圆曲线上的离散对数问题&#xff0c;这些数学难题的构建大部分都需 要生成一种超大的素数&#xff0c;尤其在经典的RSA算法中&#xff0c;生成的素数的质量对系统的安全性有很大的影响。 1.原理 费马小…

解决js中大数的问题

大数的理解: 就是由于数字太大了,然后js解析不了,不认识. 就比如实际生活中,在双11的时候,我们知道淘宝一夜之间总购买量肯定是一个很大很大的金额,当我们前端碰到一个非常大的数字的时候,js可能会解析不了. JS中的安全数字: > Number.MAX_SAFE_INTEGER 可以查看js中的…

CSP 201903-1 小中大

题目链接&#xff1a; 计算机软件能力认证考试系统http://118.190.20.162/view.page?gpidT89 【分析】主要学一下java的四舍五入&#xff0c;String,format("%.f", double&#xff09;&#xff1b; import java.util.Arrays; import java.util.Scanner;public cla…

CSP:小中大

试题编号&#xff1a;201903-1 试题名称&#xff1a;小中大 时间限制&#xff1a;1.0s 内存限制&#xff1a;512.0MB 思路&#xff1a;题目很简单&#xff0c;依次输出最大值&#xff0c;中位数&#xff0c;最小值。输出中位数的时候很神奇的出错。。。费了好半天事才改对。…

ccf小中大

试题编号&#xff1a;201903-1试题名称&#xff1a;小中大时间限制&#xff1a;1.0s内存限制&#xff1a;512.0MB问题描述&#xff1a; 思路很简单&#xff0c;但是有很多细节要考虑 如果中位数是小数&#xff0c;则要四舍五入&#xff0c;保留一位小数 否则直接输出整…

Spring中大事务拆分方案

Spring中大事务拆分方案 模块设计的时序图 启动流程 激活事件 完成事件 长事务造成的影响 由于现在事件的完成及后续激活都在一个事务中&#xff0c;比如完成融资申请事件之后会去激活批次启动签约&#xff0c;前置协议&#xff0c;资质认证等事件&#xff0c;这些操作…

AI 将完全取代前端开发吗?

注&#xff1a;今晨&#xff0c;我浏览 Medium&#xff0c;看到了篇颇为标题党的文章&#xff0c;于是我就将它抛给了 ChatGPT。本篇文章全部由 ChatGPT 所写。同时&#xff0c;我也请 ChatGPT 分享了它对此的观点。 最近&#xff0c;我的同事向我讲述了他与他老板的一次谈话。…

全网多种方法解决未连接到互联网 代理服务器出现问题,或者地址有误的错误

文章目录 1. 复现错误2. 分析错误3. 解决错误4. 解决该错误的其他方法5. 补充说明 1. 复现错误 今天&#xff0c;单位的实习生准备下载公司的代码&#xff0c;由于公司的代码放在gitlab上&#xff0c;需要内网才能登录gitlab。 而登陆内网需借助Hillstone Secure Connect&…

【实战篇】37 # 如何使用 QCharts 图表库绘制常用数据图表?

说明 【跟月影学可视化】学习笔记。 QCharts 图表库 QCharts 是一个基于 spritejs 封装的图表库&#xff0c;可以让用户以组件的形式组合出各种图表&#xff1a;https://www.qcharts.cn/#/home QCharts 图表的基本用法 最简单的方式是&#xff0c;直接通过 CDN&#xff0c;…

2021年微软研究博士奖研金名单出炉!三位华人博士生入选,每人42000美元

点击上方“CVer”&#xff0c;选择加"星标"置顶 重磅干货&#xff0c;第一时间送达 本文转载自&#xff1a;AI科技评论 作者 | 陈大鑫 就在今日&#xff0c;微软研究院宣布了2021年微软研究博士奖研金获奖名单&#xff01; 今年一共有十位在读博士生荣获此殊荣&…

新加坡管理大学何盛烽团队招收计算机视觉、图像生成方向全奖博士生

点击下方卡片&#xff0c;关注“CVer”公众号 AI/CV重磅干货&#xff0c;第一时间送达 点击进入—> CV 微信技术交流群 博士申请 | 新加坡管理大学&#xff08;SMU&#xff09;何盛烽副教授招收计算机视觉、图像生成方向全奖博士生 新加坡管理大学 新加坡管理大学&#xff0…

【硕博士推荐】国内有哪些不错的CV(计算机视觉)团队?

来源&#xff1a;深度学习技术前沿 编辑: Evans 转载请注明来源&#xff01; 【导读】计算机视觉是当前人工智能领域的超级热门&#xff0c;本文为大家总结了当前国内比较优秀的计算机视觉团队信息&#xff0c;希望能在大家申请硕士或者博士的过程中&#xff0c;提供一些参考信…

加州大学UC Santa Cruz CSE系助理教授招收多名AI方向全奖博士生及暑期实习生

点击下方卡片&#xff0c;关注“CVer”公众号 AI/CV重磅干货&#xff0c;第一时间送达 作者&#xff1a;Yuyin Zhou | 源&#xff1a;知乎 https://zhuanlan.zhihu.com/p/437891533 加州大学UC Santa Cruz计算机科学与工程系 (UC Santa Cruz CSE) 周郁音博士招收人工智能方向…

剑桥CS博士推荐,毕业前要掌握的 9 个工具

无论你在创业还是在做学术研究&#xff0c;这些工具都将使你的技能更上一层楼。 学术界在推进技术方面发挥了巨大作用&#xff0c;但学术界和工业界往往存在一种分割状态。我们经常会看到这种现象&#xff1a;无数很棒的辅助工具在学术界被忽视&#xff0c;但在工业界很受欢迎…

科研工作专用ChatGPT

最近&#xff0c;一位开发者在 GitHub 上开源了一个「科研工作专用 ChatGPT」项目&#xff0c;让众多科研工作者大受好评。这个项目能够一键完成论文润色、语法检查、中英互译、代码解释等任务&#xff0c;非常方便实用。 自从 ChatGPT 诞生以来&#xff0c;越来越多的科研工作…