99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁大數(shù)據(jù)時代月薪起碼2萬+,看桑基圖分分鐘教餅圖做人!
月薪起碼2萬+,看桑基圖分分鐘教餅圖做人!
2020-09-24
收藏

作者:伍正祥

來源:AI入門學(xué)習(xí)

今天教大家畫一個圖,桑基圖,一個大大提高你的江湖地位的圖。?;鶊D是一種流圖,其實在前期文章中提到過,但是并沒有講細(xì)節(jié)的畫法,現(xiàn)在教大家兩種畫法,一個是R語言(案例1、2、3),一個是直接在線畫(案例4)。

案例1:你的工資是怎么霍霍的?

假如你月薪20000,你能拿到多少?最后花完還剩多少?可能比你想象的要少。一部分被國家拿走,當(dāng)然國家并不是要你的錢,只是幫你存起來,等你長大了,不對,是老了會還給你的(此處我想起了壓歲錢的故事),當(dāng)然稅收部分,那國家說了,強制征收,打死都不會給你的。國家的拿完了,然后扣除柴米油鹽醬醋茶等一些列開支,你會發(fā)現(xiàn),又回到了窮人的隊伍。

以杭州為例,根據(jù)工資計算器,五險一金+所得稅大約扣6000多,你能拿到13000多,為什么扣這么多,因為杭州公積金12%,所以歡迎大家來杭州發(fā)展。除掉五險一金,就是各項生活開支了,最后剩下不足4000了。說了這么多,數(shù)據(jù)怎么表達(dá)更直觀,大部分網(wǎng)站都用二維餅圖,在分類很多的情況下,餅圖比較亂,其實桑基圖會有更好的表現(xiàn)力,看具體的繪圖步驟。

step1:數(shù)據(jù)準(zhǔn)備,理清各類數(shù)據(jù)金額或者比例

step2:數(shù)據(jù)格式轉(zhuǎn)換,寬格式的轉(zhuǎn)換成3列,注意會匯總多一行或者多行

step3:可以把數(shù)字標(biāo)簽加到文本描述里面,準(zhǔn)備好后,套用文末代碼即可

工資是怎么樣離你而去的

案例2:比賽數(shù)據(jù)樣本量統(tǒng)計

比賽分為初賽和復(fù)賽,初賽復(fù)賽分別有訓(xùn)練集和測試集,在訓(xùn)練集中,有5個分類,存在各種交叉,用?;鶊D如下。

比賽數(shù)據(jù)樣本量統(tǒng)計

案例3:手機各個渠道銷售量統(tǒng)計

手機品牌商會在不同的渠道進(jìn)行銷售,不同渠道又會在不同的省份進(jìn)行銷售,用其他類型的圖表表達(dá)都顯得擁擠,但是?;鶊D恰到好處的表現(xiàn)出來了,可以在標(biāo)簽上加上各個渠道的占比。

某品牌手機各個渠道銷售量統(tǒng)計

案例4:在線用Echart繪制桑基圖

繪圖思路及數(shù)據(jù)準(zhǔn)備和上面一樣,只要手動更改標(biāo)簽及數(shù)據(jù),運行即可得到想要的圖形,下面是原始的demo截圖,非常簡單。

案例5:其他作品欣賞(需要一些開發(fā)資源)

開頭圖代碼:

URL <-'https://raw.githubusercontent.com/christophergandrud/d3Network/sankey/JSONdata/energy.json'

Energy <- jsonlite::fromJSON(URL)

sankeyNetwork(Links = Energy$links, Nodes = Energy$nodes, Source = "source", Target = "target",  Value = "value",NodeID = "name",fontSize = 12,  nodeWidth = 30)

案例123代碼,只需要更換文件即可

library(networkD3)#安裝并包加載,如果沒有請安裝

library(dplyr)

setwd("C:/Users/wuzhengxiang/Desktop/R語言可視化/Sankey")#文件的存儲空間

sankey    = read.csv("手機銷售渠道統(tǒng)計.csv",header=T,stringsAsFactors = FALSE)#讀取數(shù)據(jù)

Sankeynodes = data.frame(name = unique(c(sankey$Source,sankey$Target)))

Sankeynodes$index = 0:(nrow(Sankeynodes)-1)

Sankeylinks = sankey

Sankeylinks = left_join(Sankeylinks,Sankeynodes,by=c('Source'='name'))

Sankeylinks = left_join(Sankeylinks,Sankeynodes,by=c('Target'='name'))

Sankeydata = Sankeylinks[,c(4,5,3)]

names(Sankeydata) = c("Source","Target","Value")

Sankeyname = select(Sankeynodes,name)

sankeyNetwork(Links = Sankeydata,Nodes = Sankeyname, Source = "Source",Target = "Target", Value = "Value", NodeID = "name", units = "元", #根據(jù)具體單位填寫,  fontSize = 12, nodeWidth = 24,sinksRight = FALSE, colourScale = JS("d3.scaleOrdinal(d3.schemeCategory20);"))

圖片中使用了大量的動圖,有專門的小軟件可以制作。

數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }