d3 js boxplot с логарифмической шкалой - PullRequest
0 голосов
/ 27 сентября 2018

Я имею в виду этот воспроизводимый пример

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: посмотрите, например, неправильное расположение 1-го квартиля, медианы, 3-го квартиля и т. Д.;Это, вероятно, из-за преобразования данных журнала?Нужно ли преобразовывать сами данные, прежде чем строить их?И в конце концов, как правильно все это сделать?

У меня также есть вторая (очевидно незначительная) проблема: как повернуть метки оси X (QI, Q2, Q3, Q4)?

спасибо

1 Ответ

0 голосов
/ 27 сентября 2018

Что касается вашей незначительной проблемы с вращением меток оси 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')
...