2013-05-02 2 views
0

У меня есть диаграмма, состоящая из 4-х серий. Три из четырех - это гистограммы, а четвертая - линия. Почему график действует таким образом? Я предположил, что это не имеет значения, в каком порядке я прошел в серии до функции $.jqPlot. Я думал, что вы сможете настроить свою серию, используя свойство series и просто отдавая пустой объект тем, которые вы не хотите настраивать.Почему jqplot ведет себя так?

scoreArray - это серия, в которой я хочу быть линейной диаграммой, которую я хочу наложить поверх баров. Моя первая попытка была с этим кодом:

$.jqplot("HistoryChart", 
    [scoreArray, AvailableArray, UnavailableArray, UnknownArray], { 
     stackSeries: true, 
     seriesDefaults : { 
      renderer: $.jqplot.BarRenderer, 
      rendererOptions : { 
       barWidth: 40 
      } 
     }, 
     series : [{ 
      disableStack : true, 
      renderer: $.jqplot.LineRenderer 
     }, {}, {}, {}], 
     axesDefaults : { 
      tickRenderer: $.jqplot.CanvasAxisTickRenderer, 
      tickOptions: { 
       angle: -45 
      } 
     }, 
     axes: { 
      xaxis : { 
       renderer: $.jqplot.CategoryAxisRenderer, 
       ticks: dateArray 
      } 
     } 
    } 
); 

Это генерируемый график:

enter image description here

Теперь, если я сделал scoreArray последний ряд и скорректировали свойство серии, соответственно, это выглядит правильно. Вот код и график:

$.jqplot("HistoryChart", 
    [AvailableArray, UnavailableArray, UnknownArray, scoreArray], { 
     stackSeries: true, 
     seriesDefaults : { 
      renderer: $.jqplot.BarRenderer, 
      rendererOptions : { 
       barWidth: 40 
      } 
     }, 
     series : [{}, {}, {}, { 
      disableStack : true, 
      renderer: $.jqplot.LineRenderer 
     }], 
     axesDefaults : { 
      tickRenderer: $.jqplot.CanvasAxisTickRenderer, 
      tickOptions: { 
       angle: -45 
      } 
     }, 
     axes: { 
      xaxis : { 
       renderer: $.jqplot.CategoryAxisRenderer, 
       ticks: dateArray 
      } 
     } 
    } 
); 

enter image description here

ответ

0

больше похоже на ошибку мне. Вы не установили ось y min-max, которая искажает начальную настройку оси. Попробуйте установить мин. Он может работать

0

Опция disableStack: true должна начинать новый сложный сюжет из этой серии. Когда вы поместили его на первый график штриховки в первом примере, вы получите тот же график. См модифицированный код:

.jqplot("HistoryChart", 
[scoreArray, AvailableArray, UnavailableArray, UnknownArray], { 
    stackSeries: true, 
    seriesDefaults : { 
     renderer: $.jqplot.BarRenderer, 
     rendererOptions : { 
      barWidth: 40 
     } 
    }, 
    series : [{ 
     renderer: $.jqplot.LineRenderer 
    }, 
    { 
     disableStack : true 
    }, {}, {}], 
    axesDefaults : { 
     tickRenderer: $.jqplot.CanvasAxisTickRenderer, 
     tickOptions: { 
      angle: -45 
     } 
    }, 
    axes: { 
     xaxis : { 
      renderer: $.jqplot.CategoryAxisRenderer, 
      ticks: dateArray 
     } 
    } 
} 
); 

Но это не похоже на работу: Messed up graph

Это, кажется, не поддерживается для вызова его на гистограмме. =

Таким образом, единственный способ заставить его работать - добавить ряд строк в качестве последней серии и добавить disableStack : true в эту линейную серию.

+0

Ваш массив рядов выглядит так, как будто он отключаетStack на массиве AvailableArray. Это то, что вы хотели? Я думал, что это будет первый индекс массива. – Justin

+0

В соответствии с примерами, которые я видел, я думал, что это будет работать так, на первом графике, но я получаю довольно интересные результаты, используя этот код: http://i.imgur.com/dV3IrtH.png – Pesikar

Смежные вопросы