【问题标题】:trend line in bar chart in pentaho cde?pentaho cde条形图中的趋势线?
【发布时间】:2015-03-20 00:34:59
【问题描述】:

在我的例子中,每个条表示一个应用程序。我正在使用趋势线在条形图上查看不同应用程序的性能。

在条形图的趋势线上,如果其中一个实体(条形)没有数据,我们是否可以不显示该趋势。 目前在 X 轴上获取值为零的柱的趋势线。

我可以在图表上看到趋势,但还有一个图例是“移动平均线”。这个可以去掉吗? 如果您需要更多信息,请在 cmets 部分告诉我。

可以通过 JavaScript 实现吗?如何?例如:使用 post fetch 的图表。

【问题讨论】:

  • 更具体地说:应修改图表的哪个属性以删除空数据的趋势线。因此没有针对空数据绘制趋势线。

标签: pentaho pentaho-cde pentaho-ctools


【解决方案1】:

趋势计算本身不考虑空值。 但是,如果您不想显示“应用程序”为空的趋势点,您可以使用扩展点隐藏通过这些点的线段:

trendLine_strokeStyle: function(s) {
    var categ  = s.getCategory(),
        series = s.getSeries(),
        dataPart = '0',
        hasNonNull = 
            this.chart.visibleData(dataPart)
               .datums({category: categ, series: series}, {isNull: false})
               .any();

    // `delegate` returns the color that would be returned hadn't we overridden
    //  the extension point.
    // `null` means "transparent color".
    return hasNonNull ? this.delegate() : null;
}

前面的代码 sn-p 适用于默认图表配置,您使用默认维度名称(seriescategory),趋势仅适用于主图中的数据(dataPart 值为 '0' 的数据)。

对于另一个问题,关于如何隐藏显示趋势颜色的图例部分,再次假设您没有更改默认值,并且趋势图使用第二个颜色轴,您会通过指定选项color2AxisLegendVisible: false 隐藏它。

编辑:要将上面的代码放在 CDF 组件的 preExecution 处理程序中,您可以这样做:

function() {
    var cccOptions = this.chartDefinition;

    // Extension points are in a array of pairs name, value format...
    var eps = Dashboards.propertiesArrayToObject(cccOptions.extensionPoints);

    // Specify the extension point
    eps.trendLine_strokeStyle = function() { ... };

    // Convert extension points to original CDF format
    cccOptions.extensionPoints = Dashboards.objectToPropertiesArray(eps);
}

【讨论】:

  • 1) 如何将代码添加到扩展点。扩展点属性只给了我两个属性来填充“arg”和“value”。
  • 不工作。这是我的图表的链接s27.postimg.org/p6py76xoz/trendline.jpg 如您所见,即使没有绘制条形图,也有趋势线。当我将鼠标悬停在栏上时,我会得到三件事。系列、创建日期和价值。系列:,创建日期:x 轴日期值,值:Y 轴值
  • 您的缺失值实际上是 null 还是 0?提供的代码仅适用于空值。在扩展点代码中放置一个断点,并尝试找出它不工作的原因。
猜你喜欢
  • 2016-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-02
  • 1970-01-01
相关资源
最近更新 更多