2015-04-29 4 views
1

У меня есть rowChart, который может иметь больше или меньше баров на основе того, что вы фильтруете на других графиках.Как исправить высоту каждого бара на rowChart?

Проблема в том, что если я задаю высоту графика, например. 500, если у меня есть 50 баров, они будут 10px высоту, но если у меня есть только один, это будет 500px

var graph = dc.rowChart (".graph") 
    .margins({top: 0, right: 10, bottom: 20, left: 10}) 
    .height(300) 
    .width(200) 
    .gap(0) 
    .x(d3.scale.ordinal()) 
    .elasticX(true) 
.ordering(function(d){return -d.value}) 
    .dimension(dim) 
    .group(filteredGroup); 

группа вернется в топ-10, но если вы отфильтровать (используя другие графы, вы, возможно, как минимум в одном элементе. В этом случае эта полоса имеет высоту 300 пикселей и выглядит не очень хорошо (и, вообще говоря, изменение высоты очень не очень приятное IMO).

Есть ли способ оставить высоту графа гибкая, но высота каждой стойки фиксированная?

Так сказать, что каждый бар имеет высоту 30, но высота графика будет настраиваться от 30 до 300.

+0

Число полосок в виде гистограммы не должны влиять на их высоту. Вы имеете в виду линейку? Или вы имеете в виду гистограмму и ширину? – Gordon

+0

Добавил код и уточнил (надеюсь); – Xavier

+0

Duh, спасибо Гордон, это rowChart, а не barChart, спасибо @Gordon (и почему эти две диаграммы настолько разные и предлагают разные функции - это другой вопрос;) – Xavier

ответ

2

Согласно latest documentation for DC row charts:

.fixedBarHeight ([высота])

Получить или установить фиксированную высоту бара. По умолчанию [false], который будет автомасштабирование. Например, если вы хотите исправить высоту для определенного числа баров (полезно в диаграммах TopN), вы можете исправить высоту следующим образом (где count = общее количество баров в вашем TopN и пробеле - ваше пространство в вертикальном пространстве) ,

Пример:

var chartheight = 500; 
var gap = 5; 
var count = 20; 
var spaceForScales = 70; 
c.fixedBarHeight((chartheight - (count + 1) * gap - spaceForScales)/count);