Как скрыть столбцы одной конкретной группы на гистограмме группы?

Используя LightningchartJS, я создал сгруппированную гистограмму. Я создал серию по категориям и сгруппировал их по странам. Используя поле легенды, я могу скрыть полосы на основе их серии. Есть ли способ скрыть их на основе их групп?

const addGroups = (names) => { 
      for (const name of names) 
        groups.push({ 
          name, 
          tick: axisX.addCustomTick() 
          .setGridStrokeLength(0) 
          .setTextFormatter((_) => name) 
          .setMarker((marker) => marker 
                     .setBackground((background) => background 
                                    .setFillStyle(emptyFill) 
                                    .setStrokeStyle(emptyLine) 
                                   ) 
                    ) 
        }) 
    } 
    const addCategory = (entry) => { 
      // Each category has its own series. 
      const series = createSeriesForCategory(entry) 
      .setName(entry.name) 
      .setDefaultStyle(figure => figure.setFillStyle(entry.fill)) 
      entry.figures = entry.data.map((value) => series.add({ x: 0, y: 0, width: 0, height: 0 })) 
      legendBox.add(series, 'Legend') 
      categories.push(entry) 
      redraw() 
    } 
const createSeriesForCategory = (category) => { 
      const series = chart.addRectangleSeries() 
      // Change how marker displays its information. 
      series.setResultTableFormatter((builder, series, figure) => { 
        // Find cached entry for the figure. 
        let entry = { 
          name: category.name, 
          value: category.data[category.figures.indexOf(figure)] 
        } 
        // Parse result table content from values of 'entry'. 
        return builder 
          .addRow('Department:', entry.name) 
          .addRow('# of employees:', String(entry.value)) 
      }) 
      // Apply cursor logic using series.onHover method 
      series.onHover((_, point) => { 
        if (point) { 
          const figure = point.figure 
          const dimensions = figure.getDimensionsPositionAndSize() 
          // Show band. 
          band 
            .setDimensions({ 
            x: dimensions.x - figureGap * .5, 
            y: figure.scale.y.getInnerStart(), 
            width: dimensions.width + figureGap, 
            height: figure.scale.y.getInnerInterval() 
          }) 
            .restore() 
        } else 
          band.dispose() 
      }) 
      return series 
    } 
const categories = ['Engineers', 'Sales', 'Marketing'] 
chart.addGroups(['Finland', 'Germany', 'UK']) 


person Soniya Shah    schedule 20.11.2019    source источник


Ответы (1)


LegendBox действительно имеет внутреннюю концепцию «групп», но он обеспечивает только группировку записей по групповому «тегу», а также отображение группового «тега». Ярлык группы не взаимодействует, поэтому я не считаю, что его можно использовать для таких целей.

В зависимости от популярности такого рода приложений могут оказаться разумными некоторые дополнительные возможности для удовлетворения этой потребности.

Между тем, другим вариантом был бы полностью самодельный LegendBox с использованием UILayoutBuilders.

person Niilo Keinänen    schedule 21.11.2019