带对数刻度的 d3 js 箱线图
d3 js boxplot with log scale
我在这里指的是这个可重现的例子
http://bl.ocks.org/jensgrubert/7789216
但应用于以下数据集 (csv)
"Q1","Q2","Q3","Q4"
0.43,30,0.42,0.3
19,2,15,14
41,46,28,100
8,1,0.45,0.05
0.71,0.68,5,0.4
21,14,7,23
0.63,0.11,0.47,0.22
10,15,0.87,0.4
16,16,18,14
0.01,0.72,0.31,0.28
鉴于我想要带小数的数字,我一直在将原始代码更改为以下内容:
var v1 = Math.round(x.Q1*100)/100,
v2 = Math.round(x.Q2*100)/100,
v3 = Math.round(x.Q3*100)/100,
v4 = Math.round(x.Q4*100)/100;
鉴于我想将 y 轴更改为对数刻度,我一直在将原始代码更改为以下内容:
// the y-axis
var y = d3.scale.log()
.domain([0.001, 100])
.range([height + margin.top, 0 + margin.top]);
var yAxis = d3.svg.axis()
.scale(y)
.orient("left")
.tickValues([0.001, 0.01, 0.1, 1, 10, 100])
现在我的问题是盒子和胡须似乎没有正确地与 y 尺度对齐:例如,第一个四分位数、中位数、第三个四分位数等等的错误位置......;
这可能是由于数据的日志转换?
在绘制数据之前,我是否也需要转换数据本身?
最终如何正确地做到这一切?
我还有第二个(显然是次要的)问题:如何旋转 x 轴的标签(QI、Q2、Q3、Q4)?
谢谢
关于旋转 x 轴标签(QI、Q2、Q3、Q4)的小问题,试试这个:
d3.selectAll('.x.axis .tick text')
.attr('transform', 'rotate(-90)')
.attr('text-anchor', 'end')
.attr('dx', '-1em')
.attr('dy', '-0.5em')
我在这里指的是这个可重现的例子
http://bl.ocks.org/jensgrubert/7789216
但应用于以下数据集 (csv)
"Q1","Q2","Q3","Q4"
0.43,30,0.42,0.3
19,2,15,14
41,46,28,100
8,1,0.45,0.05
0.71,0.68,5,0.4
21,14,7,23
0.63,0.11,0.47,0.22
10,15,0.87,0.4
16,16,18,14
0.01,0.72,0.31,0.28
鉴于我想要带小数的数字,我一直在将原始代码更改为以下内容:
var v1 = Math.round(x.Q1*100)/100,
v2 = Math.round(x.Q2*100)/100,
v3 = Math.round(x.Q3*100)/100,
v4 = Math.round(x.Q4*100)/100;
鉴于我想将 y 轴更改为对数刻度,我一直在将原始代码更改为以下内容:
// the y-axis
var y = d3.scale.log()
.domain([0.001, 100])
.range([height + margin.top, 0 + margin.top]);
var yAxis = d3.svg.axis()
.scale(y)
.orient("left")
.tickValues([0.001, 0.01, 0.1, 1, 10, 100])
现在我的问题是盒子和胡须似乎没有正确地与 y 尺度对齐:例如,第一个四分位数、中位数、第三个四分位数等等的错误位置......; 这可能是由于数据的日志转换? 在绘制数据之前,我是否也需要转换数据本身? 最终如何正确地做到这一切?
我还有第二个(显然是次要的)问题:如何旋转 x 轴的标签(QI、Q2、Q3、Q4)?
谢谢
关于旋转 x 轴标签(QI、Q2、Q3、Q4)的小问题,试试这个:
d3.selectAll('.x.axis .tick text')
.attr('transform', 'rotate(-90)')
.attr('text-anchor', 'end')
.attr('dx', '-1em')
.attr('dy', '-0.5em')