摘要:本片記錄坐標(biāo)軸入門,使用版本如何實(shí)現(xiàn)坐標(biāo)軸生成的坐標(biāo)圖是通過的路徑元素元素組成的,如下圖表示的是底部坐標(biāo)軸不包括內(nèi)部刻度,如下這部分通過描繪,在中稱為容器則包括了和作為即線,即文字實(shí)現(xiàn)坐標(biāo)軸主要步驟步驟主要如下創(chuàng)建比例尺創(chuàng)建坐標(biāo)軸,是個函數(shù)
本片blog記錄d3坐標(biāo)軸入門,使用版本v5.9.2
SVG如何實(shí)現(xiàn)坐標(biāo)軸d3生成的坐標(biāo)圖是通過svg的path(路徑)元素 + g + line + text元素組成的,如下圖
path表示的是底部坐標(biāo)軸(不包括內(nèi)部刻度),如下
這部分通過d描繪,在d3中稱為outer tick
g容器則包括了text和line作為inner tick
line即線,text即文字
d3實(shí)現(xiàn)坐標(biāo)軸主要步驟步驟主要如下:
創(chuàng)建scale(比例尺)
創(chuàng)建axis(坐標(biāo)軸,是個函數(shù))
selection.call(axis)創(chuàng)建坐標(biāo)軸
小實(shí)驗 數(shù)據(jù)與寬高const data = [1, 10, 20]; let svgWidth = 400, svgHeight = 400;
小實(shí)驗都用這些數(shù)據(jù)啦
最簡單的坐標(biāo)軸/** * 創(chuàng)建scale */ let scale = d3.scaleLinear() .domain([0, d3.max(data)]) //輸入域 .range([0, 200]); //輸出域,這里可理解為坐標(biāo)軸長度范圍 /** * 創(chuàng)建axis */ let axis = d3.axisTop(scale); //創(chuàng)建坐標(biāo)軸,除此之外還有axisLeft,axisBottom,axisRight,區(qū)別在于tick(刻度)的朝向 /** * 插入 */ d3.select("body") .append("svg") .attr("width", svgWidth) .attr("height", svgHeight) .append("g")//需要放在g容器里 .attr("transform", "translate(10,20)") .call(axis);//創(chuàng)建坐標(biāo)軸
坐標(biāo)軸的長度來源于比例尺的range
最大值來源于d3.max(data)
200(range) / 20(最大值) = 10段
20(最大值) / 10段 = 2
所以坐標(biāo)軸如是顯示
上一個坐標(biāo)軸顯示了平均的刻度,但是有時這不是我們想要的,我們可以使用axis.tickValues()顯示需要的刻度
僅需在axis后增加api即可
let axis = d3.axisTop(scale).tickValues(data);設(shè)置刻度長短
也是使用axis.tickSize()即可,為方便觀察,這里使用axisBottom坐標(biāo)軸
let axis = d3.axisBottom(scale).tickValues(data).tickSize(200);設(shè)置樣式
其實(shí)設(shè)置樣式就是對其中的svg設(shè)置,原理類似dom操作,選擇svg元素,改變樣式
舉個簡單的例子
d3.select("body") .append("svg") .attr("width", svgWidth) .attr("height", svgHeight) .append("g") .attr("transform", "translate(10, 20)") .call(axis) .selectAll("path").attr("stroke", "pink").attr("stroke-width", "5");
最后對g中的path進(jìn)行賦樣式
總結(jié)組合好不同的API會有更多效果!
參考資料d3.js直方圖與坐標(biāo)軸基礎(chǔ)
d3.js API
selection.call()
d3中的axis.ticks詳解
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/103191.html
摘要:設(shè)置為,則所有超出值域范圍的值,都會被收縮到值域之內(nèi)。指數(shù)比例尺相對線性比例尺多出一個用于指定指數(shù)。這段代碼中相當(dāng)于定義一個線性比例尺。使用量子比例尺后定義域?qū)⒈环殖蛇@段,分別對應(yīng)值域的個值。 線性比例尺 線性比例尺是常用比例尺常用方法有: var linear = d3.scaleLinear() - 創(chuàng)建一個定量的線性比例尺. linear.domain([numbers]) - ...
摘要:設(shè)置為,則所有超出值域范圍的值,都會被收縮到值域之內(nèi)。指數(shù)比例尺相對線性比例尺多出一個用于指定指數(shù)。這段代碼中相當(dāng)于定義一個線性比例尺。使用量子比例尺后定義域?qū)⒈环殖蛇@段,分別對應(yīng)值域的個值。 線性比例尺 線性比例尺是常用比例尺常用方法有: var linear = d3.scaleLinear() - 創(chuàng)建一個定量的線性比例尺. linear.domain([numbers]) - ...
摘要:畫坐標(biāo)軸使用的的方法生成坐標(biāo)軸頁面效果如下這個時候軸在頁面的上方,不在我們想要的位置,可以通過設(shè)置屬性將坐標(biāo)軸移到自己想要的位置畫軸效果如下,這個時候軸在頁面的上方,不在我們想要的位置,所以要讓軸旋轉(zhuǎn)軸旋轉(zhuǎn)代碼加上旋轉(zhuǎn)后的效果圖如下會發(fā)現(xiàn)軸 畫坐標(biāo)軸 //使用d3的svg的axis()方法生成坐標(biāo)軸 var x_axis = d3.svg.axis().scale(scale_x), ...
摘要:畫坐標(biāo)軸使用的的方法生成坐標(biāo)軸頁面效果如下這個時候軸在頁面的上方,不在我們想要的位置,可以通過設(shè)置屬性將坐標(biāo)軸移到自己想要的位置畫軸效果如下,這個時候軸在頁面的上方,不在我們想要的位置,所以要讓軸旋轉(zhuǎn)軸旋轉(zhuǎn)代碼加上旋轉(zhuǎn)后的效果圖如下會發(fā)現(xiàn)軸 畫坐標(biāo)軸 //使用d3的svg的axis()方法生成坐標(biāo)軸 var x_axis = d3.svg.axis().scale(scale_x), ...
摘要:之前只是各個部分的,現(xiàn)在將各部分整合起來,發(fā)現(xiàn)還是學(xué)到了不少東西主要是加深了對比例尺的理解代碼樣式及數(shù)據(jù)樣式接著是數(shù)據(jù)及柱狀圖寬高等留白用創(chuàng)建比例尺實(shí)踐之后對比例尺與坐標(biāo)軸的理解加深了一點(diǎn)軸使用線性比例尺,注意輸入域軸使用比例尺用于柱形 d3js.org v5.9.2 之前只是各個部分的demo,現(xiàn)在將各部分整合起來,發(fā)現(xiàn)還是學(xué)到了不少東西 主要是加深了對scale(比例尺)的理解...
閱讀 3060·2023-04-25 20:09
閱讀 3330·2021-11-23 09:51
閱讀 1982·2021-11-22 15:25
閱讀 3363·2021-11-18 10:02
閱讀 2762·2021-09-27 13:56
閱讀 1318·2019-08-30 15:44
閱讀 1161·2019-08-30 13:21
閱讀 3335·2019-08-30 11:05