引言

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是如何来对网页进行修改的。

pyecharts0.5.x制作含地图的数据看板相关推荐

  1. python作中国地图背景气泡图_exce表格中怎么制作中国地图背景数据气泡图

    exce表格中怎么制作中国地图背景数据气泡图 exce表格中怎么制作中国地图背景数据气泡图?excel表格中想要在中国地图上显示气泡来看看地区分布情况,该怎么设置中国地图气泡图表呢?下面我们就来看看详 ...

  2. 用tableau制作某咖啡店订单数据看板

    数据用的是某家咖啡店的订单和销售数据.点击左上角城市表(切片器)可以看到该咖啡品牌不同城市的销售情况.

  3. mysql+地图网格数据下载_echarts 中国各省市 echarts地图数据,含世界地图

    [实例简介] echarts 中国各省市 echarts地图数据,含世界地图,含各省地市数据 [实例截图] [核心代码] echarts_map_data ├── anhui │   ├── anhu ...

  4. dev里timeedit控件如何赋值_如何制作高逼格的数据地图(二)

    上一期介绍的是如何通过Power Map制作数据地图.但如果Excel在没有安装该组件,应该怎么办?如果希望实现更加个性化的设置,又有什么方法? 那么,通过VBA代码也可以实现数据地图的制作. 相比之 ...

  5. 如何利用自己的数据制作社交地图?只显示可视区域内的标注

    地址:http://www.cnblogs.com/milkmap/archive/2012/02/02/2335989.html [百度地图API]如何利用自己的数据制作社交地图?只显示可视区域内的 ...

  6. 【百度地图API】如何利用自己的数据制作社交地图?只显示可视区域内的标注...

    原文:[百度地图API]如何利用自己的数据制作社交地图?只显示可视区域内的标注 摘要:如果你自己的数据已经超过1万个,如何进行合理的显示?除了聚合marker外,还有一个办法.那就是,只显示可视区域内 ...

  7. 【百度地图API】如何利用自己的数据制作社交地图?只显示可视区域内的标注

    [百度地图API]如何利用自己的数据制作社交地图?只显示可视区域内的标注 摘要:如果你自己的数据已经超过1万个,如何进行合理的显示?除了聚合marker外,还有一个办法.那就是,只显示可视区域内的标注 ...

  8. 思迈特软件Smartbi:10分钟教会你制作高难度的数据地图!

    在数据可视化中,地图可视化是高频应用的一种.我们在一些新闻报道和商业杂志上,会经常看到运用地图来分析展示商业现象,这样的利用地图来反映和分析数据的形式叫数据地图. 数据地图可以最直观的表达出数据之间的 ...

  9. 三步制作一张业务数据地图

    在<可视化图表入门教程>这篇文章中,我们学会了基础可视化图表的使用,以及在<可视化图表进阶教程:业务数据地图的绘制>这篇文章中,我们掌握了可视化图表类型的业务应用.本篇文章将带 ...

最新文章

  1. Jenkins使用Publish Over FTP Plugin插件上传FTP详解
  2. NSDateFormatter 时间格式转换
  3. 我国拟开展2016年新型智慧城市评价工作
  4. 金额大小写转换(1)
  5. boost::serialization模块测试extended_type_info的实现,使用多个共享库时有效
  6. 使用atp-get安装Python-pip时遇到如下问题,附解决方案
  7. python设计模式总结
  8. php代码的健壮性,代码健壮性的几点思考 - 逍遥客 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
  9. mysql binlog备份_MySQL mysqldump + mysqlbinlog 备份和还原
  10. swagger怎么看接口数量_vue编写的功能强大的swagger-ui
  11. 实战JavaScript:实现贪吃蛇——面向对象练习
  12. SAP软件财务月结之往来重分类
  13. 李涛专家主讲PS高手之路经典视频教程(1G打包下载)
  14. 论文阅读:Audio-Driven Emotional Video Portraits
  15. python图像检测_图像检索系列——利用 Python 检测图像相似度
  16. 大脚插件服务器金币显示,关于魔兽世界的大脚插件无法显示金钱的问题
  17. Audio Unit
  18. mbit职业测试软件,MBTI职业性格测试(高考专业填报版)(手机版)
  19. 前端学习打卡day05
  20. 高通平台晶振校准-为什么要做晶振校准

热门文章

  1. Crack8 + QQ吻的教程更新110个(20091016)
  2. C/C++教程 第二十七章 —— 脚本开发
  3. 计算1000以内的质数 (质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。)
  4. 基于遗传模拟退火算法的模糊C-均值聚类算法(SAGAFCM)—MATLAB实现
  5. TorchProtein教程--预训练的蛋白质结构表示(5)
  6. linux和windows上使用jpype的区别
  7. NC用友导入凭证失败错误:凭证内部错误号:[10044]
  8. 2.shell语法:shell变量定义和使用
  9. OpenGL ES 3.0 简介
  10. 外星人系统下载Alienware X17R2系统dell原厂预装版 WIN11-21H2外星人原厂WIN11系统下载,附创建带F12 SupportAssist OS Recovery恢复功能教程