運用d3和d3 top實現折現的方法

2021-08-14 17:46:01 字數 1894 閱讀 6863

昨天和今天一直在弄如何把折線倒置

// 模擬資料

var

dataset = [

, ,, ,

, ,, ,

, ];

// 建立x軸的比例尺(線性比例尺)

var

xscale = d3.scale.linear()

.domain(d3.extent(dataset,

function

(d) ))

.range([0, width - padding.left - padding.right]);

// 建立y軸的比例尺(線性比例尺)

var

yscale = d3.scale.linear()

.domain([0, d3.max(dataset,

function

(d) )])

.range([height - padding.top - padding.bottom, 0]);

// 建立x軸

var

xaxis = d3.svg.axis()

.scale(xscale)

.orient(

'bottom'

);// 建立y軸

var

yaxis = d3.svg.axis()

.scale(yscale)

.orient(

'left'

);// 新增svg元素並與x軸進行「繫結」

'g')

.attr(

'class'

, 'axis'

).attr(

'transform'

, 'translate(0,'

+ (height - padding.top - padding.bottom) +

')')

.call(xaxis);

// 新增svg元素並與y軸進行「繫結」

'g')

.attr(

'class'

, 'axis'

).call(yaxis);

這次我們模擬了一些點的資料來進行折線的繪製。

d3.scale.linear()

建立了線性比例尺,

linear.domain()

定義定義域,

linear.range()

定義值域。這裡需要注意一下,因為svg畫布的y軸與傳統認知上的y軸的方向是反著來的,所以在定義y軸的定義域和值域對應關係時,也需要反著來。

d3.extent

可以得到引數陣列中的最大值和最小值,並以陣列的形式返回。然後用

d3.svg.axis()

建立了兩個座標軸,把比例尺應用到它們上面,並且用

axis.orient()

設定了座標軸的刻度尺的方向。最後,新增svg元素,用

call()

把定義好的座標軸與svg元素聯絡起來。通過設定它們的transform屬性來移動元素,使它們看起來像是乙個座標系。

說白了就是把y軸的.range()裡面兩個陣列元素調換方向就可以了。

// horizontal 建立x軸的比例尺(線性比例尺)

var x = d3.time.scale()

.range([padding, width - padding]);

// vertical 建立y軸的比例尺(線性比例尺) 把height,5對掉,那麼折線就會向下走

var y = d3.scale.linear()

.range([height, 5]);

D3 函式和模組

1.什麼是函式 a.函式是完成一定功能的程式段的封裝,使用者無需理解函式是如何實現,只需了解函式的使用方法 2.什麼是模組 包 庫 a.模組是由多個函式和多個變數,物理上,模組對應py檔案 b.包是多個模組的集合,物理上對應包含多個py檔案的資料夾 c.庫是多個包的集合,物理上對應包含多個包的資料夾...

D3的簡單語法

選擇 選擇單個元素用 select 選擇第乙個元素 選擇多個元素用 selectall 選擇 插入 刪除元素 insert 在選擇集前面插入元素 d3.select body insert p moon remove 刪除元素 d3.select moon remove 文字屬性樣式操作 資料連線 ...

d3與echarts的區別

在我看幾種資料視覺化平台多使用折線圖,面積圖和柱狀圖,條圖居多,對於echarts和d3都有使用。對於使用d3還是echarts還得從使用者需求,計算資料的量的大小來進行分析 1 對於客戶需求要求的圖表擁有大量的使用者互動場景,用 d3比較方便,因為d3中svg畫圖支援事件處理器,他是基於dom進行...