d3(一)---畫坐標軸

先貼個總的中文文檔燎猛,然后是坐標軸d3-axis文檔恋捆,安裝什么的就跳過了。

一重绷、簡介

d3的坐標軸由<path>沸停、<line>、<text>三種元素組成的昭卓。其中愤钾,坐標軸的直線是<path>瘟滨,刻度(tick)是<line>,刻度上的文字是<text>能颁。

下面是官方文檔給的一個典型的axis栗子(當然杂瘸,這只是在控制臺看到的dom結(jié)構(gòu),真正畫起來還是很簡潔的)

<g fill="none" font-size="10" font-family="sans-serif" text-anchor="middle">
  <path class="domain" stroke="currentColor" d="M0.5,6V0.5H880.5V6"></path>
  <g class="tick" opacity="1" transform="translate(0.5,0)">
    <line stroke="currentColor" y2="6"></line>
    <text fill="currentColor" y="9" dy="0.71em">0.0</text>
  </g>
  <g class="tick" opacity="1" transform="translate(176.5,0)">
    <line stroke="currentColor" y2="6"></line>
    <text fill="currentColor" y="9" dy="0.71em">0.2</text>
  </g>
  <g class="tick" opacity="1" transform="translate(352.5,0)">
    <line stroke="currentColor" y2="6"></line>
    <text fill="currentColor" y="9" dy="0.71em">0.4</text>
  </g>
  <g class="tick" opacity="1" transform="translate(528.5,0)">
    <line stroke="currentColor" y2="6"></line>
    <text fill="currentColor" y="9" dy="0.71em">0.6</text>
  </g>
  <g class="tick" opacity="1" transform="translate(704.5,0)">
    <line stroke="currentColor" y2="6"></line>
    <text fill="currentColor" y="9" dy="0.71em">0.8</text>
  </g>
  <g class="tick" opacity="1" transform="translate(880.5,0)">
    <line stroke="currentColor" y2="6"></line>
    <text fill="currentColor" y="9" dy="0.71em">1.0</text>
  </g>
</g>

二劲装、栗子

      // 取class為container的dom胧沫,插入寬高分別為880px和850px的svg
      this.svg = d3.selectAll(".container").append('svg').attr("width",880).attr("height", 850)
      // 設(shè)置y軸和x軸的范圍
      let yScale = d3.scaleLinear().domain([0,3000]).range([0,750]),
      xScale = d3.scaleLinear().range([0,680]).domain(['','']) , 
      //設(shè)置x和y軸的刻度方向及刻度數(shù)
      yaxis = d3.axisLeft().scale(yScale),
      xaxis = d3.axisTop().scale(xScale);
      // 設(shè)置x和y軸的刻度的樣式,并畫上去(和最后兩行注釋掉的等價)
      gAxis = this.svg.append("g").attr("font-size","20").attr("transform", "translate(80,80)").call(yaxis),
      xAxis = this.svg.append("g").attr("font-size","20").attr("transform", "translate(80,80)").call(xaxis);
      // yaxis(this.svg.append("g").attr("font-size","20").attr("transform", "translate(80,80)"))
      // xaxis(this.svg.append("g").attr("font-size","20").attr("transform", "translate(80,80)"))

步驟很簡單:
1占业、取個dom畫個大svg(個人理解為「畫布」)
2绒怨、設(shè)置x軸及y軸(線性、值域谦疾、像素范圍南蹂、刻度方向、刻度樣式及位置)念恍,畫

結(jié)果是一個倒L形的坐標軸六剥,如果想要通常的L形的坐標軸,可以將y軸的domain翻轉(zhuǎn)一下峰伙,再將x軸平移一下疗疟,如下栗:

this.svg = d3.selectAll(".container").append('svg').attr("width",880).attr("height", 850)
let yScale = d3.scaleLinear().domain([0,3000]).range([750,0]),
xScale = d3.scaleLinear().range([0,680]).domain(['','']) ,
yaxis = d3.axisLeft().scale(yScale),
xaxis = d3.axisBottom().scale(xScale),
gAxis = this.svg.append("g").attr("font-size","20").attr("transform", "translate(80,40)").call(yaxis),
xAxis = this.svg.append("g").attr("font-size","20").attr("transform", "translate(80,790)").call(xaxis);

三、api解釋

1瞳氓、domain([0,3000])表示刻度的數(shù)值范圍策彤。
2、range([0,750])表示像素范圍匣摘;我不想要默認范圍和刻度店诗,就傳了['','']。(不報錯音榜,應(yīng)該有更好的方案)
3庞瘸、表示刻度(tick)方向:axisTop、axisRight赠叼、axisBottom擦囊、axisLeft。
意思也很明顯嘴办,Top和Bottom是橫坐標的刻度在上還是在下霜第;Left和Right是縱坐標的刻度在左還是右。
4户辞、scale():設(shè)置比例尺泌类,栗子里把yScale和xScale當做參數(shù)傳進去了
5、ticks():設(shè)置刻度數(shù),有默認值刃榨。
6弹砚、attr("transform", "translate(80,80)"):這兩句是決定x和y軸相對于左上角的點偏移量。

ps:d3的api太豐富了枢希,英文文檔啃的有點慢桌吃,有時候還得一個一個的試api,但是條條大路通羅馬苞轿,最終也是弄出來了一個想要的坐標軸茅诱。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市搬卒,隨后出現(xiàn)的幾起案子瑟俭,更是在濱河造成了極大的恐慌,老刑警劉巖契邀,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件摆寄,死亡現(xiàn)場離奇詭異,居然都是意外死亡坯门,警方通過查閱死者的電腦和手機微饥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來古戴,“玉大人欠橘,你說我怎么就攤上這事∠帜眨” “怎么了简软?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長述暂。 經(jīng)常有香客問我,道長建炫,這世上最難降的妖魔是什么畦韭? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮肛跌,結(jié)果婚禮上艺配,老公的妹妹穿的比我還像新娘。我一直安慰自己衍慎,他們只是感情好转唉,可當我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著稳捆,像睡著了一般赠法。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上乔夯,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天砖织,我揣著相機與錄音款侵,去河邊找鬼。 笑死侧纯,一個胖子當著我的面吹牛新锈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播眶熬,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼妹笆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了娜氏?” 一聲冷哼從身側(cè)響起拳缠,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎牍白,沒想到半個月后脊凰,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡茂腥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年狸涌,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片最岗。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡帕胆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出般渡,到底是詐尸還是另有隱情懒豹,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布驯用,位于F島的核電站脸秽,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蝴乔。R本人自食惡果不足惜记餐,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望薇正。 院中可真熱鬧片酝,春花似錦、人聲如沸挖腰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽猴仑。三九已至审轮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背断国。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工贤姆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人稳衬。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓霞捡,卻偏偏與公主長得像,于是被迫代替她去往敵國和親薄疚。 傳聞我的和親對象是個殘疾皇子碧信,可洞房花燭夜當晚...
    茶點故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內(nèi)容

  • d3 (核心部分)選擇集d3.select - 從當前文檔中選擇一系列元素。d3.selectAll - 從當前文...
    謝大見閱讀 3,441評論 1 4
  • 這里講一下怎么樣用d3.js街夭,輸入一個數(shù)據(jù)list砰碴,根據(jù)數(shù)據(jù)畫一個帶有坐標軸的簡單直方圖.以下是目標效果. 直方圖...
    Kaidi_G閱讀 4,818評論 1 3
  • 看完該API后,至少會畫出一個簡單的圖形 D3.js 入門 1. d3-selection: 【 選擇作圖區(qū)域...
    Pretty_Boy閱讀 973評論 0 1
  • ??JavaScript 與 HTML 之間的交互是通過事件實現(xiàn)的。 ??事件埃碱,就是文檔或瀏覽器窗口中發(fā)生的一些特...
    霜天曉閱讀 3,490評論 1 11
  • D3是用于數(shù)據(jù)可視化的Javascript庫猖辫。使用SVG,Canvas和HTML砚殿。結(jié)合強大的可視化技術(shù)和數(shù)據(jù)驅(qū)動的...
    Evelynzzz閱讀 7,894評論 7 5