天天看點

B站資料可視化排行榜項目入門指南強調:資料格式必須以下圖格式,四列name+type+value+date!!!

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.

另外,由于項目作者不斷在更新自己的項目,而我隻是閑暇時間來更新,可能跟不上作者的更新速度,是以難免有錯誤的地方,請大家見諒!!

效果展示:

B站資料可視化排行榜項目入門指南強調:資料格式必須以下圖格式,四列name+type+value+date!!!

                                                            圖(1-1)

首先: 解壓下載下傳的壓縮包,我們可以首先打開README.md(可以用notepad++、Editplus、Sublime 等文本編輯器打開)看一下                項目簡介:

B站資料可視化排行榜項目入門指南強調:資料格式必須以下圖格式,四列name+type+value+date!!!

                                                          圖(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!!!

B站資料可視化排行榜項目入門指南強調:資料格式必須以下圖格式,四列name+type+value+date!!!

                                                             圖(1-3)

我們在操作時把自己的資料填充進去就可以。

然後我們測試一下效果:用浏覽器(建議用谷歌)打開bargraph.html,路徑為/Historical-ranking-data-visualization-based-on-d3.js-master/dist/bargraph.html,點選擇檔案,選擇修改過後的example.csv,可以看到基本效果如下:

B站資料可視化排行榜項目入門指南強調:資料格式必須以下圖格式,四列name+type+value+date!!!

                                                              圖(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。

B站資料可視化排行榜項目入門指南強調:資料格式必須以下圖格式,四列name+type+value+date!!!

                                                                圖(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分類

B站資料可視化排行榜項目入門指南強調:資料格式必須以下圖格式,四列name+type+value+date!!!

                                                              圖(1-7)

另外,我們除了以type為顔色分組之外,還可以以name分組,比如給張怡甯大魔王來個粉紅色,龍隊來個綠色,我們需要修改config.js裡面的 divide_by_type: false,false代表不以type分組,預設以name分組。

.馬龍 {
  fill: green
}

.張怡甯 {
  fill:  pink
}
           

                                                                 圖(1-8)

B站資料可視化排行榜項目入門指南強調:資料格式必須以下圖格式,四列name+type+value+date!!!

                                                            圖(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,  //圖表下間距

首先看看右上角計數的效果:

B站資料可視化排行榜項目入門指南強調:資料格式必須以下圖格式,四列name+type+value+date!!!

                                                                      圖(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,