LoginSignup
0
1

More than 3 years have passed since last update.

D3のカラーオブジェクトに値をhexで返すメソッドを追加する

Last updated at Posted at 2017-11-30

ver.3まではレンジにカラーを指定した場合、hexで返ってきた。

D3 ver.3

> var colorScale = d3.scaleLinear().domain([0, 100]).range(["#cccccc", "#ff0000"])
> colorScale(20)
<- "#d6a3a3"

ver.4 では、rgb形式の文字列で返ってくる。

D3 ver.4

> var colorScale = d3.scaleLinear().domain([0, 100]).range(["#cccccc", "#ff0000"])
> colorScale(20)
<- "rgb(214, 163, 163)"

どうやら、hexに変換するようなメソッドも無いっぽい。

> var c = colorScale(20)
> d3.color(c).toString()
<- "rgb(214, 163, 163)" 

D3のスケールを他のライブラリと組みわせて使いたい時に、相手のライブラリがhexでのカラー指定しか受け取れない場合があるので、とりあえず、hexに変換するメソッドを追加して対応してみた。

> d3.color.prototype.toHex = function(){ return ["#", this.r.toString(16),  this.g.toString(16), this.b.toString(16) ].join("") ; }
> d3.color(c).toHex()
<- "#d6a3a3"
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1