本系列導(dǎo)航
用Tableau畫環(huán)形圖系列(三)畫環(huán)狀條形圖
用Tableau畫環(huán)形圖系列(四)畫圓弧圖(1)
用Tableau畫環(huán)形圖系列(五)畫圓弧圖(2)
用Tableau畫環(huán)形圖系列(六)畫柱狀環(huán)形圖
用Tableau畫環(huán)形圖系列(七)用Tableau畫尖狀環(huán)形圖[翻譯]
第一講我們講了畫圓的基本原理,只簡單劃了一個圓,這是不夠的,像跑馬燈圖的基礎(chǔ)都是同心圓筑凫,那么同心圓怎么畫呢矿辽?
復(fù)習(xí)一下第一講:
圓上每個點的X坐標=a + sin(2*PI / 360*角度) * r 悼嫉;Y坐標=b + cos(2*PI / 360*角度) * r
其實同心圓只有r,也就是半徑不一樣敲才,其他都一樣拒炎,這樣就好辦了挪拟。
其實我們只需要構(gòu)造一張表,字段就是兩個 point和R击你,加入我們要畫一個半徑為1和一個半徑為2的同心圓,根據(jù)上一講的思路谎柄,那么我們就需要做720行丁侄,前360行point是1-360,R是1朝巫,后360行point是1-360鸿摇,R是2,然后用Tableau引入數(shù)據(jù)計算sin和cos劈猿,這樣當然沒有問題拙吉,但是很麻煩,如果同心圓更多就更麻煩了揪荣。
我們選用另一種方案
先構(gòu)造一張point表
再做一張circle表(這次一次畫五個同心圓)
引入Tableau筷黔,用內(nèi)連接連接兩張表,就會以笛卡爾積的形式構(gòu)造好我們要的表5*361=1805行(因為0度和360度重合了仗颈,為了能讓圓封閉上佛舱,大家可以自己試試0-359度畫完了是什么樣)
構(gòu)造出的表就是這個樣子
下面就是添加計算字段
拖入sin和cos拖入行列功能區(qū),取消聚合挨决,默認就是5個同心圓请祖,但是如果你放大了,其實還是圓點脖祈,還需要用point作為路徑把圓點串聯(lián)起來肆捕。
把point拖入路徑
靠,什么鬼盖高?為什么慎陵?
其實如果你點擊圖表右鍵掏秩,查看數(shù)據(jù),point每個值都是5個荆姆,作為路徑point是按順序連接的蒙幻,所以就會連接5次0和然后連接5次1,以此類推胆筒,當然不是我們想要的邮破。
我們需要把5個圓區(qū)分開,point作為路徑才能依次連接每個圓內(nèi)的0-360個點仆救,所以拖入circle字段(也可以用R抒和,但要轉(zhuǎn)換成維度,離散型)到詳細或者顏色都可以彤蔽,這樣才能把5個圓分區(qū)(大家可以再點擊右鍵查看數(shù)據(jù)摧莽,看看數(shù)據(jù)是什么樣的)
自此,同心圓就畫好了顿痪。與一個圓的區(qū)別就是point路徑要分區(qū)镊辕,這是重點要理解的,我在研究這個問題的時候就卡這里很久蚁袭。
另外還有用數(shù)據(jù)桶來做的征懈,也是為了構(gòu)造一個笛卡爾積的表,只不過構(gòu)造是在生成圖表時完成揩悄,而我們用的連接表是在數(shù)據(jù)處理階段卖哎,至于哪種效率更高,我沒研究過删性。鏈接表的形式我覺得更直接更好理解亏娜,如果后續(xù)畫跑馬燈等圖表,根據(jù)數(shù)據(jù)判斷比例之類的復(fù)雜表計算時候蹬挺,數(shù)據(jù)桶的方式我個人感覺會麻煩一點维贺。如果有時間大家可以研究一下。
另外汗侵,出個題幸缕,上面的表畫同心的半圓怎么畫呢?
此篇文章已發(fā)布到我的公眾號:saodisir晰韵,有興趣也可關(guān)注一下