精华内容
下载资源
问答
  • B站数据可视化排行榜项目入门指南

    万次阅读 多人点赞 2018-08-07 10:57:04
    Jannchie基于d3.js做的一个将历史数据排名转化为动态柱状图图表的数据可视化项目。 源码下载地址:1.https://github.com/Jannchie/Historical-ranking-data-visualization-based-on-d3.js 注:下载点击进入界面右...

    Jannchie基于d3.js做的一个将历史数据排名转化为动态柱状图图表的数据可视化项目。

    源码下载地址:1. https://github.com/Jannchie/Historical-ranking-data-visualization-based-on-d3.js

                              注:下载点击进入界面右下角的"Clone or download"按钮即可

    说明:因为项目持续更新,目前最新的项目和博文里面界面展示已经有比较大的差异,所以下面放两个历史版本的链接:

            1.百度网盘:https://pan.baidu.com/s/1VIWifPTBD3TSDS6R-jw9kQ 密码:w4gp

            2.gitHub历史版本:https://github.com/Jannchie/Historical-ranking-data-visualization-based-on-d3.js/tree/b1d4ba9749c32e6a5debd171fa2c5c49b8000d6d

    说明:针对最近问的很多关于右上角计数的问题,已经测试了,具体修改内容在文章最后,见图2-1.

    另外,由于项目作者不断在更新自己的项目,而我只是闲暇时间来更新,可能跟不上作者的更新速度,所以难免有错误的地方,请大家见谅!!

    效果展示:

                                                                图(1-1)

    首先: 解压下载的压缩包,我们可以首先打开README.md(可以用notepad++、Editplus、Sublime 等文本编辑器打开)看一下                项目简介:

                                                              图(1-2)

    从上图我们可以了解到 一些关于此项目的基本信息:这是基于D3.js(https://d3js.org/,基于javascript的一个实现数据可视化的函数库)开发的一个将历史数据排名转化为动态柱状图的图表。

    数据格式: 压缩包给我们提供了一个样例数据,路径为:/Historical-ranking-data-visualization-based-on-d3.js-master/dist/example.csv(csv用excel就可以编辑)。

    强调:数据格式必须以下图格式,四列name+type+value+date!!!

     

                                                                 图(1-3)

    我们在操作时把自己的数据填充进去就可以。

    然后我们测试一下效果:用浏览器(建议用谷歌)打开bargraph.html路径为/Historical-ranking-data-visualization-based-on-d3.js-master/dist/bargraph.html,点选择文件,选择修改过后的example.csv,可以看到基本效果如下:

                                                                  图(1-4)

    我们发现颜色有点单调,因为默认的话颜色是随机的,那我们如何自定义颜色呢?

    我们要先打开/Historical-ranking-data-visualization-based-on-d3.js-master/dist/config.js,把use_custom_color:false属性的false改为true,即use_custom_color:true。 此属性确定是否使用自定义颜色。默认为false。

                                                                    图(1-5)

    其次在修改color.css样式文件之前,我们首先要考虑一下我们的颜色根据什么区分,在config.js里面有两个属性,

    use_type_info : true, divide_by_type: true,这两个控制以type进行颜色分类,这个type也就是我们example.csv里面的type,举个例子 { name : 马龙, type : 中国},{ name : 张怡宁, type : 中国},想让马龙和张怡宁大魔王都显示中国红,那么在color.css里写样式  

    .中国 {
      fill: red
    }
    
    .马龙 {
      fill: blue
    }
    
    .张怡宁 {
      fill:  gray
    }

                                                                   图(1-6)

    这时候只有第一个样式中国 fill:red(type) 生效,因为此时是以type分类

                                                                  图(1-7)

    另外,我们除了以type为颜色分组之外,还可以以name分组,比如给张怡宁大魔王来个粉红色,龙队来个绿色,我们需要修改config.js里面的 divide_by_type: false,false代表不以type分组,默认以name分组。

    .马龙 {
      fill: green
    }
    
    .张怡宁 {
      fill:  pink
    }

                                                                     图(1-8)

     

                                                                图(1-9)

    其次就是根据喜好在color.css设置你自己喜欢的颜色了,颜色有三种格式 :①英文颜色,比如blue,yellow ②rgb(x,x,x)  ③#xxxxxx(十六进制颜色)  可参考:http://www.runoob.com/cssref/css-colorsfull.html

    再说一下其他的属性config.js:

    max_number : 每个时间节点最多显示的条目数(同一时间点页面显示的最多条数)

    itemLabel : "左边信息",顶部左边显示的提示信息

    typeLabel : "右边信息",顶部右边显示的提示信息

    use_counter: 计数器会出现在右上角,记录着当前榜首的持续时间,这个加了之后会报错Uncaught TypeError: Cannot read                              property 'data' of undefined,源码里it.data(j).text(function(){})报data的错,大家斟酌使用。


     left_margin : 230,  // 图表左间距。

     right_margin : 150, //图表右间距

     top_margin : 200,  //图表上间距

     bottom_margin : 0,  //图表下间距

    首先看看右上角计数的效果:

                                                                          图(2-1) 

    右上角计数需要修改如下:

    第一:用编辑器打开config.js文件,开启计数功能,即把cuse_counter属性设置由false设置为为true,具体如下:

      // 使用计数器
      // 注意!使用计时器和使用类型目前不能兼容,即不能同时开启!
      // 计数器会出现在右上角,记录着当前榜首的持续时间。
      use_counter: true,

    第二:根据自己的需求更改右上角的文字说明:比如我这里更改右上角文字说明为"榜首持续时间(天)",具体在config.js中修改如下:

      // 附加信息内容。
      itemLabel: "左侧文字",
      typeLabel: "榜首持续时间(天)",

    第三,更改step属性,我目前的版本step默认属性值为"7",即为7天计数器记为“1”,意思就是如果榜首累计占据了7天,那么我右上角显示“1”,如果榜首累计占据了14天,那么右上角显示“2”,我自己展示的把step属性改为了“1”,意思就是占据榜首1天,右上角计数器+1,所以上图显示为3;

    // 每个时间节点对于计数器的步长。
    // 比如时间节点日期的间隔可能为1周(七天),那么step的值就应该为7。
    step: 1,

    第四:根据自己的实际需要调节右上角的文字说明计数器位置偏移,防止文字重叠,参数如下:

      // 右侧文字横坐标,即为右上角文字说明的部分
      text_x: 1000,
      // 偏移量,即为右上角计数器相对文字说明的位置
      offset: 500,

     

    展开全文
  • 数据可视化练习-用powerBI生成自动播放的动态排行榜前言1. 前期准备:账号注册及软件下载2、数据获取及预处理3、可视化效果搭建4、发布共享其他 前言 最近在B站很流行各种动态排行榜视频,动态排行榜制作源代码...

    前言

    最近在B站很流行各种动态排行榜视频,动态排行榜制作源代码来自一位大神基于d3.js做的一个将历史数据排名转化为动态柱状图图表的数据可视化项目,但原项目中的图表在网页上是一次性运行,除非实时录屏,否则在其他电脑上需重做,无法直接分享,本人新入数据分析行业,尝试利用powerBI仿制可直接分享的动态排行榜

    1. 前期准备:账号注册及软件下载

    poweiBI Desktop 为在自己电脑上制作图表的BI软件
    注册powerBI账号可以在power BI online 将自己在Desk上制作的图表共享到网络
    powerBI Desktop 下载地址:https://www.microsoft.com/zh-CN/download/details.aspx?id=45331
    powerBI 账号注册官网:https://powerbi.microsoft.com/zh-cn/get-started/
    注意powerBI账号只能用企业型邮箱注册

    2、数据获取及预处理

    本次要做的排行数据为全国主要城市年末总人口排名,数据来源为国家统计局http://data.stats.gov.cn/easyquery.htm?cn=E0105&zb=A02&reg=110000&sj=2016
    powerBI Desk 可以从web获得不需验证的公开数据,但统计局网站数据下载需要登陆验证,鉴于爬虫功夫还没到家,我还是老实注册账号登陆下载数据
    数据初始格式如下
    在这里插入图片描述
    在powerBI里数据是以power query 编辑器模式打开,每一列是一个特征,只能做特征内值的比较而不能直接做特征之间比较,因此要做成动态排行榜,需要把上表里所有城市融为一列,所有人口数据融为一列,最终每行只有单城市在单独年份的人口数据
    要做这种转置在excel里很麻烦,但是在powerBI的power query 编辑器里确很简单,我们先打开power BI Desktop 在“开始”-“获得数据”-“excel”里选择刚才下载的表格
    在这里插入图片描述

    选取文件点击打开后,在弹出到导航器中勾选图表,并点击左下角中间按钮 “编辑”
    在这里插入图片描述
    如此便进入了powerquery 编辑器
    在这里插入图片描述
    首先通过“删除行”中的“删除前几行”和“删除后几行”将头三行及最末行的文字内容删除,通过删除列将最后一列数据有确实的1997年数据删除
    在这里插入图片描述
    然后通过“将第一行用作标题”将首行转为标题
    在这里插入图片描述
    接下来是第一个重点-转置环节,按住shift选中除地区列职位所有年份数值列,然后点击‘转换’中的**“逆透视列”**
    在这里插入图片描述
    转换结果如下
    在这里插入图片描述
    最后通过空值替换的方式把年份列中的“年”字全部清除掉,并将”属性“列选中,右键重命名为”年份“,数据的预处理就完成了
    在这里插入图片描述
    点击“关闭及应用”进入画布
    在这里插入图片描述

    3、可视化效果搭建

    首先我们来搭一个普通的排行榜
    选择画布右边可视化效果中的“簇状条形图”,然后将最右边的字段中“地区”拉到可视化效果编辑器中的“轴”,将字段“值”拉到编辑器中的“值
    在这里插入图片描述
    如果默认没有排序或不是按值排序可以通过可视化窗口右上角的下拉菜单进行调整
    在这里插入图片描述
    接下来是第二个重点-时间轴的引入
    在powerBI默认的可视化效果中并没有时间轴,这个效果叫做Play Axis,我们需要在powerBI的Marketplace中搜索并添加
    在这里插入图片描述
    导入成功后,点击画布上的空白地方,再点击可视化效果中的 play axis ,将字段中的“年份”拖到可视化编辑器中的“field”里
    在这里插入图片描述
    ok,时间轴和排行榜都到了,接着要解决它们的联动问题,因为直接点击播放会是这个样子
    在这里插入图片描述
    这是因为排行榜中默认的值显示方式是所有年份值的总和,而深绿色是对应时间轴单独年份的值,要解决这个问题我们进入下一步
    接下来是第三个重点-编辑交互
    点击菜单栏“格式”-“编辑交互”,会发现可视化窗口的右上角出现了三个小图标,点击最左边的漏斗型“筛选图表”
    在这里插入图片描述
    现在再按一下play axis 里的 播放键 会发现这次排行榜只显示当年的数据并且在动态变化了!
    如果要特别显示第一的城市,可以新建个卡片可视化窗口单独标注
    选择可视化效果“卡片图”,将“地区”拖到“字段”,在下方的筛选器中将“值”拖入视觉筛选器,筛选器类型下拉菜单选择“前N个”,显示项目下拉选择“上”,右边的空格中填入1,然后再次把“值”拖到下面的“按值”中
    在这里插入图片描述
    大致步骤已经完成了,细节部分可以通过可视化编辑器中间刷子按钮进入调整,比如设置柱条颜色,以及将时间轴设为自动播放和循环播放
    在这里插入图片描述

    4、发布共享

    点击”开始“-右上角“发布”将做好的表格发布到powerBI网页版,发布完成后,在网页版中可以打开在线编辑
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    再点击网页版的左上角文件里可以发布到web网页或者发布为ppt
    在这里插入图片描述
    发布网页会生成嵌入代码
    在这里插入图片描述
    如果不小心关掉了网页,重新登陆powerbi主业后点工作区-报表即可看到自己发布过的报表
    在这里插入图片描述

    编辑后我做的动态报表示例如下

    < width="800" height="600" src="https://app.powerbi.com/view?r=eyJrIjoiNDNlNzBkNDEtOWU5Yy00ZjlhLTlhZTktZjMxYTMzZGM1ZjMzIiwidCI6ImU4OGQ5ODBhLWQyYjAtNGEzMS05NWZhLTUxOTg2OTU3OTE2OCIsImMiOjN9" frameborder="0" allowFullScreen="true">

    web网址:https://app.powerbi.com/view?r=eyJrIjoiNDNlNzBkNDEtOWU5Yy00ZjlhLTlhZTktZjMxYTMzZGM1ZjMzIiwidCI6ImU4OGQ5ODBhLWQyYjAtNGEzMS05NWZhLTUxOTg2OTU3OTE2OCIsImMiOjN9

    其他

    目前大致框架就是这样,其实还有很多小细节有待改进,比如报表的动态效果还是不够流畅,后期会继续研究,另附B站动态排行榜大神Jannchie的js教程[B站数据可视化排行榜项目入门指南]

    展开全文
  • python爬虫福布斯排行榜数据并可视化

    千次阅读 多人点赞 2020-08-25 18:59:40
    使用python requests库爬取福布斯排行榜数据存放到本地excel文件,并通过matplotlab将数据进行分析和可视化 原网页如下所示 https://www.phb123.com/renwu/fuhao/shishi_1.html 保存的excel数据如下所示 福布斯前...
    • 使用python requests库爬取福布斯排行榜数据存放到本地excel文件,并通过matplotlab将数据进行分析和可视化
    • 原网页如下所示 https://www.phb123.com/renwu/fuhao/shishi_1.html
      在这里插入图片描述
    • 保存的excel数据如下所示
      在这里插入图片描述
    • 福布斯前十排行的数据可视化效果
      在这里插入图片描述
    • 各个国家上榜人数所占比例的统计与可视化
      在这里插入图片描述
    • 爬取网页数据解析为一个list集合的代码
    ## 读取一页的数据
    def loaddata(url):
       from bs4 import BeautifulSoup
       import requests
       headers = {
           'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) '
                        'Chrome/72.0.3626.121 Safari/537.36'
       }
       f = requests.get(url,headers=headers)   #Get该网页从而获取该html内容
       soup = BeautifulSoup(f.content, "lxml")  #用lxml解析器解析该网页的内容, 好像f.text也是返回的html
       # print(f.content.decode())        #尝试打印出网页内容,看是否获取成功
       ranktable = soup.find_all('table',class_="rank-table" )[0]   #获取排行榜表格
       trlist = ranktable.find_all('tr') #获取表格中所有tr标签
       trlist.pop(0) #去掉第一个元素
       persionlist = []
       for tr in trlist:
          persion = {}
          persion['num'] = tr.find_all('td')[0].string  #编号
          persion['name'] = tr.find_all('td')[1].p.string #名称
          persion['money'] = tr.find_all('td')[2].string #财产
          persion['company'] = tr.find_all('td')[3].string #企业
          persion['country'] = tr.find_all('td')[4].a.string #国家
          persionlist.append(persion)
       print("页面"+url+"爬取成功")
       return persionlist
    
    
    ## 读取所有福布斯排行榜数据
    def loadalldata():
       alldata = []
       for i in range(1,16,1):
          url = "https://www.phb123.com/renwu/fuhao/shishi_"+str(i)+".html"
          data = loaddata(url)
          alldata = alldata + data
       return alldata
    
    • 将爬取的list集合保存到本地excel文件的代码
    ## 将爬取的数据保存到文件
    def savedata(path,persionlist):
       import xlwt
       workbook = xlwt.Workbook()
       worksheet = workbook.add_sheet('test')
       worksheet.write(0, 0, '排名')
       worksheet.write(0, 1, '姓名')
       worksheet.write(0, 2, '财富')
       worksheet.write(0, 3, '企业')
       worksheet.write(0, 4, '国家')
       for i in range(1,len(persionlist)+1,1):
          worksheet.write(i, 0, persionlist[i-1]['num'])
          worksheet.write(i, 1, persionlist[i-1]['name'])
          worksheet.write(i, 2, persionlist[i-1]['money'])
          worksheet.write(i, 3, persionlist[i-1]['company'])
          worksheet.write(i, 4, persionlist[i-1]['country'])
       workbook.save(path)
       print("数据保存成功:"+path)
    
    • 读取excel文件数据进行分析绘制条形图和饼状图的代码
    
    ## 取出排行榜前十的姓名和财富数据 以两个list返回
    def loadtop10(path):
        import xlrd
        book = xlrd.open_workbook(path)
        sheet1 = book.sheets()[0]
        namelist = sheet1.col_values(1)
        moneylist = sheet1.col_values(2)
        namelist = namelist[1:11]
        moneylist = moneylist[1:11]
    
        moneylist2 = []
        for a in moneylist:
            a = int(a[0:-3])
            moneylist2.append(a)
        print("取出排行榜前十的姓名和财富数据")
        print(namelist)
        print(moneylist2)
        return namelist,moneylist2
    
    ## 统计排行榜中每个国家的上榜人数 以字典list返回
    def countcountrynum(path):
       import xlrd
       book = xlrd.open_workbook(path)
       sheet1 = book.sheets()[0]
       countrylist = sheet1.col_values(4)[1:-1]
       print(countrylist)
       countryset = list(set(countrylist))
       dictlist = []
       for country in countryset:
          obj = {"name":country,"count":0}
          dictlist.append(obj)
       ## 统计出每个国家对应的数量
       for obj in dictlist:
          for a in countrylist:
             if obj['name'] == a:
                obj['count'] = obj['count'] + 1
       print(dictlist)
       ## 将dictlist排序 数量多的放前面 8 5 6 9 3 2 4
       for i in range(0,len(dictlist),1):
          for j in range(0,len(dictlist)-i-1,1):
              if dictlist[j]['count'] < dictlist[j+1]['count']:
                 temp = dictlist[j]
                 dictlist[j] = dictlist[j+1]
                 dictlist[j+1] = temp
       dictlist2 = dictlist[0:5]
       set2 = []
       for a in dictlist2:
          set2.append(a['name'])
       othercount = 0;
       for a in dictlist:
          if a['name'] not in set2:
             othercount = othercount + 1
       dictlist2.append({"name":"其他","count":othercount})
       print('获取排行榜中每个国家的上榜人数')
       print(dictlist2)
       return dictlist2
    
    ## 绘制条形图和饼状图
    def drow():
       import matplotlib.pyplot as plt
       plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置中文字体
       plt.figure('福布斯前十榜',figsize=(15,5))
    
       ## 读取福布斯排行榜前十的数据
       listx,listy = loadtop10('rank.xls')
    
       plt.title('福布斯前十榜', fontsize=16)
       plt.xlabel('人物', fontsize=14)
       plt.ylabel('金额/亿美元', fontsize=14)
       plt.tick_params(labelsize=10)
       plt.grid(linestyle=':', axis='y')
       a = plt.bar(listx, listy, color='dodgerblue', label='Apple', align='center')
       # 设置标签
       for i in a:
          h = i.get_height()
          plt.text(i.get_x() + i.get_width() / 2, h, '%d' % int(h), ha='center', va='bottom')
       ## -------------------------------------------------------------------------
       dictlist = countcountrynum("rank.xls")
       plt.figure('各国家上榜人数所占比例')
       labels = []
       sizes = []
       for a in dictlist:
          labels.append(a['name'])
          sizes.append(a['count'])
       explode = (0.1, 0, 0, 0, 0, 0)
       plt.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', shadow=False, startangle=150)
       plt.title("各国家上榜人数所占比例", fontsize=16)
       plt.axis('equal')  # 该行代码使饼图长宽相等
    
       plt.show()
    
    • 完整代码如下
    
    ## 读取一页的数据
    def loaddata(url):
       from bs4 import BeautifulSoup
       import requests
       headers = {
           'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) '
                        'Chrome/72.0.3626.121 Safari/537.36'
       }
       f = requests.get(url,headers=headers)   #Get该网页从而获取该html内容
       soup = BeautifulSoup(f.content, "lxml")  #用lxml解析器解析该网页的内容, 好像f.text也是返回的html
       # print(f.content.decode())        #尝试打印出网页内容,看是否获取成功
       ranktable = soup.find_all('table',class_="rank-table" )[0]   #获取排行榜表格
       trlist = ranktable.find_all('tr') #获取表格中所有tr标签
       trlist.pop(0) #去掉第一个元素
       persionlist = []
       for tr in trlist:
          persion = {}
          persion['num'] = tr.find_all('td')[0].string  #编号
          persion['name'] = tr.find_all('td')[1].p.string #名称
          persion['money'] = tr.find_all('td')[2].string #财产
          persion['company'] = tr.find_all('td')[3].string #企业
          persion['country'] = tr.find_all('td')[4].a.string #国家
          persionlist.append(persion)
       print("页面"+url+"爬取成功")
       return persionlist
    
    
    ## 读取所有福布斯排行榜数据
    def loadalldata():
       alldata = []
       for i in range(1,16,1):
          url = "https://www.phb123.com/renwu/fuhao/shishi_"+str(i)+".html"
          data = loaddata(url)
          alldata = alldata + data
       return alldata
    
    ## 将爬取的数据保存到文件
    def savedata(path,persionlist):
       import xlwt
       workbook = xlwt.Workbook()
       worksheet = workbook.add_sheet('test')
       worksheet.write(0, 0, '排名')
       worksheet.write(0, 1, '姓名')
       worksheet.write(0, 2, '财富')
       worksheet.write(0, 3, '企业')
       worksheet.write(0, 4, '国家')
       for i in range(1,len(persionlist)+1,1):
          worksheet.write(i, 0, persionlist[i-1]['num'])
          worksheet.write(i, 1, persionlist[i-1]['name'])
          worksheet.write(i, 2, persionlist[i-1]['money'])
          worksheet.write(i, 3, persionlist[i-1]['company'])
          worksheet.write(i, 4, persionlist[i-1]['country'])
       workbook.save(path)
       print("数据保存成功:"+path)
    
    ## 取出排行榜前十的姓名和财富数据 以两个list返回
    def loadtop10(path):
        import xlrd
        book = xlrd.open_workbook(path)
        sheet1 = book.sheets()[0]
        namelist = sheet1.col_values(1)
        moneylist = sheet1.col_values(2)
        namelist = namelist[1:11]
        moneylist = moneylist[1:11]
    
        moneylist2 = []
        for a in moneylist:
            a = int(a[0:-3])
            moneylist2.append(a)
        print("取出排行榜前十的姓名和财富数据")
        print(namelist)
        print(moneylist2)
        return namelist,moneylist2
    
    ## 统计排行榜中每个国家的上榜人数 以字典list返回
    def countcountrynum(path):
       import xlrd
       book = xlrd.open_workbook(path)
       sheet1 = book.sheets()[0]
       countrylist = sheet1.col_values(4)[1:-1]
       print(countrylist)
       countryset = list(set(countrylist))
       dictlist = []
       for country in countryset:
          obj = {"name":country,"count":0}
          dictlist.append(obj)
       ## 统计出每个国家对应的数量
       for obj in dictlist:
          for a in countrylist:
             if obj['name'] == a:
                obj['count'] = obj['count'] + 1
       print(dictlist)
       ## 将dictlist排序 数量多的放前面 8 5 6 9 3 2 4
       for i in range(0,len(dictlist),1):
          for j in range(0,len(dictlist)-i-1,1):
              if dictlist[j]['count'] < dictlist[j+1]['count']:
                 temp = dictlist[j]
                 dictlist[j] = dictlist[j+1]
                 dictlist[j+1] = temp
       dictlist2 = dictlist[0:5]
       set2 = []
       for a in dictlist2:
          set2.append(a['name'])
       othercount = 0;
       for a in dictlist:
          if a['name'] not in set2:
             othercount = othercount + 1
       dictlist2.append({"name":"其他","count":othercount})
       print('获取排行榜中每个国家的上榜人数')
       print(dictlist2)
       return dictlist2
    
    ## 绘制条形图和饼状图
    def drow():
       import matplotlib.pyplot as plt
       plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置中文字体
       plt.figure('福布斯前十榜',figsize=(15,5))
    
       ## 读取福布斯排行榜前十的数据
       listx,listy = loadtop10('rank.xls')
    
       plt.title('福布斯前十榜', fontsize=16)
       plt.xlabel('人物', fontsize=14)
       plt.ylabel('金额/亿美元', fontsize=14)
       plt.tick_params(labelsize=10)
       plt.grid(linestyle=':', axis='y')
       a = plt.bar(listx, listy, color='dodgerblue', label='Apple', align='center')
       # 设置标签
       for i in a:
          h = i.get_height()
          plt.text(i.get_x() + i.get_width() / 2, h, '%d' % int(h), ha='center', va='bottom')
       ## -------------------------------------------------------------------------
       dictlist = countcountrynum("rank.xls")
       plt.figure('各国家上榜人数所占比例')
       labels = []
       sizes = []
       for a in dictlist:
          labels.append(a['name'])
          sizes.append(a['count'])
       explode = (0.1, 0, 0, 0, 0, 0)
       plt.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', shadow=False, startangle=150)
       plt.title("各国家上榜人数所占比例", fontsize=16)
       plt.axis('equal')  # 该行代码使饼图长宽相等
    
       plt.show()
    
    if __name__ == '__main__':
    
       ## 爬取数据
       # data = loadalldata()
       ## 保存数据
       # savedata("rank.xls",data)
       ## 展示数据
       drow()
    
    展开全文
  • 本文实例为大家分享了python可视化动态CPU性能监控的具体代码,供大家参考,具体内容如下打算开发web性能监控,以后会去学js,现在用matp来补救下,在官网有此类模板,花了一点时间修改了下,有兴趣的可以去官网看看...

    本文实例为大家分享了python可视化动态CPU性能监控的具体代码,供大家参考,具体内容如下

    打算开发web性能监控,以后会去学js,现在用matp来补救下,在官网有此类模板,花了一点时间修改了下,有兴趣的可以去官网看看。

    基于matplotoilb和psutil,matplotoilb是有名的数据数据可视化工具,psutil是性能监控工具,所以你需要这两个环境,本文不多说环境的安装。

    以下是代码:

    #!/usr/bin/env python

    #-*-coding:utf-8 -*-

    import matplotlib.pyplot as plt

    import matplotlib.animation as animation

    import psutil

    def data_gen(t=0): #设置xy变量

    x = 0

    y = 1

    while True:

    y = psutil.cpu_percent(interval=1) #获取cpu数值,1s获取一次。

    x += 1

    yield x,y

    def init():

    ax.set_xlim(0, 10) #起始x 1-10

    ax.set_ylim(0, 100) #设置y相当于0%-100%

    del xdata[:]

    del ydata[:]

    line.set_data(xdata, ydata)

    return line,

    fig, ax = plt.subplots()

    line, = ax.plot([], [], lw=2) #线像素比

    ax.grid()

    xdata, ydata = [], []

    def run(data):

    # update the data

    t, y = data

    xdata.append(t)

    ydata.append(y)

    xmin, xmax = ax.get_xlim()

    if t >= xmax: #表格随数据移动

    ax.set_xlim(xmin+10, xmax+10)

    ax.figure.canvas.draw()

    line.set_data(xdata, ydata)

    return line,

    ani = animation.FuncAnimation(fig, run, data_gen, blit=False, interval=10,

    repeat=False, init_func=init)

    plt.show()

    下面是效果图,还有很多地方不完善,以后会花点时间完成。

    2018621111408424.jpg?2018521111420

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    展开全文
  • 为了解决这个问题,新型的动态可视化开源模块Plotly应运而生。由于Plotly具有动态、美观、易用、种类丰富等特性。项目案例包括泰坦尼克号数据、鸢尾花数据、航班数据、金融类数据进行可视化图表分析,可以快速让大家...
  • 摘要::最近在朋友圈看到一个很酷炫的动态数据可视化表,介绍了新中国成立后各省GDP的发展历程,非常惊叹竟然还有这种操作,也想试试。于是,照葫芦画瓢虎,在网上爬取了历年中国大学学术排行榜,制作了一个中国...
  • 一个乞丐版的动态排行榜可视化就做好喇。 8. 完整代码 import React, { useState, useEffect } from 'react'; import PropTypes from 'prop-types'; import './styles.scss'; const getRandomColor =...
  • 项目需求: 在学习echarts的过程,遇到B站以及抖音里很多动态数据排行榜的案例。一部分是基于可视化软件的,还有一部分是基于d3.js开发的。离自己想要的需求还是有一定的差距。解决办法无非是学习软件或是基于d3开发...
  • 话不多说上代码 第一步导入模块 import requests import re ...对网站进行了一波分析,发现中关村并没有用动态数据加载这里就直接爬取好了 def get_articles_list(): title_list = [] price_list = []
  • 项目:爬虫B站视频排行榜热度,并数据可视化 摘要 该实验主要是用python编写爬虫代码,把爬取到的数据进行整理,上传到flourish网站,进行数据最后的可视化。本次实现的是爬取B站的每天视频排行榜的前100名(根据...
  • 1前言今天来跟大家分析一下2020年中国500强企业排行榜数据,从不同角度去对数据进行统计分析,可视化展示。本文从开始到最后发文,花费了一天时间(精心制作),保证以高质量文章给大家阅读,麻...
  • 这里先放一下这个动态表是什么样的: 不知道你看完是什么感觉,至少我是挺震惊的,想看看作者是怎么做出来的,于是追到了作者的B站主页,发现了更多有意思的动态视频: 这些作品的作者是:@Jannchie见齐,他的主页...
  • 文章目录品牌排名动态可视化 @ D3.js任务清单思路分析画布初始化数据预处理注意将所有值转换为数值类型注意设置缺失值的缺省值为每个数据设置颜色过滤数据,仅保留当前年份的,数据切片,设置排名首次数据绑定坐标轴...
  • 用Echarts制作动态条形图排行榜

    万次阅读 2018-08-12 01:49:17
    最近在做各种排行榜的视频,整体排行榜的页面图形效果都是用另外一个开源代码实现的,主体是js+svg。 https://www.bilibili.com/video/av28871057/ echarts作为封装很好的一套可视化库,不知道是否能做到相同的...
  • 今天为大家分享的是 【 行业搜索指数排行榜- 数据可视化大屏解决方案】。 话不多说,开始分享干货,欢迎讨论!QQ微信同号: 6550523 文末有更多精彩案例分享,喜欢的小伙伴儿一箭三连点赞收藏
  • 数据可视化、信息可视化与知识可视化 (2011-07-23 12:28:17) 标签: 校园 分类: 工作篇 数据可视化 简介   数据可视化是关于数据之视觉表现形式的研究;其中,这种数据的视觉...
  • 目前奇迹界只有ASP写的系统,这语言已经被淘汰了, ... *多库多区动态连接,让你无缝接入。 # 首页(支持首页弹窗公告) # 游戏活动(包括,新闻,活动,公告,更新,指南类目)...# 排行榜 (包含,角色,战盟,家族 ...
  • GTD数据分析及可视化项目的第三张图表,项目总体介绍见这篇文章。 最终效果 这种图经常能在B站上一些国家GDP,企业排名的可视化视频上看到,感觉效果还是比较好的。话说这种图是叫排名图?赛跑图?博主好像没找到一...
  • 数据可视化,Echarts实现动态排名变化,带时间轴,标签颜色和条形图一起变化
  • python爬取b站热搜,将数据可视化爬虫编写爬取b站的具体过程爬虫的完整代码爬取结果数据可视化可视化的具体过程分析 :绘制分区比重可视化完整代码可视化结果 爬虫编写 爬虫流程: 读取网站html页面,但是现在很多...
  • 那么有哪些数据可视化软件居于排行榜单的前列呢? 1、FineBI 目前在国内数据分析行业中首屈一指,主打的是超大数据量性能和自助式分析2个特点,但是可视化效果不错,可制作Dashboard。数据是实时变动的;在线客服...
  • 信息可视化

    千次阅读 2011-11-12 21:58:49
    信息可视化 (2011-07-23 13:08:18) 标签: 校园 分类: 工作篇 可视化分析论 规模可伸缩型推理系统:用于支持知识传输和合作探索的技术必须要让其用户能够有效地解释...
  • 公众号后台回复“图书“,了解更多号主新书内容作者:J哥来源:菜J学Python...以下动态可视化地图就是J哥亲手绘制,展现了一段时间内广州市企事业单位在网上商城采购商品的分布及随时间的变化。接下来,J哥将手把...
  • 大数据可视化 实验二:福布斯全球富豪排行榜(分析前20名) 采用timeline组件会出现刷新数据问题 baseOption组件中,dataset组件配置多组source数据源。 造成options组件中的多组series显示数据出问题。(柱状图y/...
  • 面积图是在折线图的基础上,用颜色填充折线下方的区域...● 笑死人不偿命的知乎沙雕问题排行榜 ● 用Python扒出B站那些“惊为天人”的阿婆主!● 你相信逛B站也能学编程吗点击阅读原文,即可参与当当4.45折购书活动
  • 本文介绍如何利用requests+正则表达式爬取TIOBE编程语言热度数据,并使用????openpyxl写入数据与????pyecharts时间轮播图进行可视化。 一、数据获取我...
  • 做为干数据分析的,数据可视化是必备的技能,最近经常在网上看到动态排名条形图,这种动态排名条形图能很好的表达在某一个时间周期,随着时间的变化,各参数指标的增减变化,形象直观,让人很容易理解。加上BGM(背景...
  • 唐诗可视化项目

    千次阅读 2020-04-23 16:18:16
    本项目分为两个模块,分别是:诗词爬取模块和数据可视化模块。主要是通过对 古诗文网 的唐诗三百首的内容进行爬取,并将爬取到的内容存储到 MySQL 数据库当中,并将相关的数据内容进行统计,最终将其以图表等形式...
  • 丰富的定制图元:动态条形图,top排行榜图,GIS地图,精确到区县级的区块地图,雷达图,动态区间图/对比图,动态饼图,动态折线图。 动画一键导出:一键导出视频,gif和图片。 支持多种分辨率:PC,手机和自定义。 ...
  • 2020东京奥运会已落下帷幕,中国军团共获得88枚奖牌,其中38枚金牌、32枚银牌、18枚铜牌,金牌和奖牌仅次于美国,排名第2。 本期主要利用pyecharts给大家展示奥运会金牌、银牌、铜牌以及奖牌总数的世界地图分布...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,385
精华内容 954
热门标签
关键字:

动态可视化排行榜