VizFrame结合多个Y轴的组合图表

4

我在使用SAPUI5框架的VizFrame控件时遇到了问题。我想在一个复杂的图表中显示一些数据,其中有两个Y轴。我的数据模型如下:

{
      "d" : {
        "results" : [
          {
            "DataA" : "2",
            "DataB" : "4",
            "Id" : "1",
          },
          {
            "DataA" : "3",
            "DataB" : "2",
            "Id" : "2",
          }
       ]
   }
}

我尝试在左Y轴上显示DataA,在右侧显示DataB,同时使用Id作为X轴。这在dual_linedual_column类型的VizFrame中没有问题。

我还没有找到一种以条形图(DataA在Y1上)和线性图(DataB在Y2上)的形式显示数据的方法。我的当前代码看起来像这样:

var oModel = new sap.ui.model.json.JSONModel();
        
        oModel.loadData("data.json");

        var oDataset = new sap.viz.ui5.data.FlattenedDataset({              
            dimensions: [{
                axis : 2,
                name : oLocText.getText('Id'),
                value : "{Id}"
            }],         
            measures : [{
                    group : 1,
                    name : DataA,
                    value : '{DataA}'
                },{
                    group : 2,
                    name: DataB,
                    value: '{DataB}'
                }],
            data : {
                path : "/d/results"
            }
        }); 
    
        oVizFrame.setDataset(oDataset);
        oVizFrame.setModel(oModel); 
        oVizFrame.setVizType('combination');

        oVizFrame.setVizProperties({
            title: {
                  visible: true,
                  text: "Combined"
              },            
            plotArea: {
                colorPalette : d3.scale.category20().range(),
            }});
        
        var feedValueAxis = new sap.viz.ui5.controls.common.feeds.FeedItem({
              'uid': "primaryValues",
              'type': "Measure",
              'values': [ DataA , DataB]
            }),
            feedCategoryAxis = new sap.viz.ui5.controls.common.feeds.FeedItem({
              'uid': "axisLabels",
              'type': "Dimension",
              'values': [ Id]
            });
            
        oVizFrame.addFeed(feedValueAxis);
        oVizFrame.addFeed(feedCategoryAxis); 

非常感谢您的帮助!
2个回答

0

我不知道你的问题是否仍然相关。如果我理解你的问题正确,它是关于将度量显示为条形/折线图的问题。我曾经遇到过类似的问题,并通过设置plotArea的dataShape属性来解决它:

oVizFrame.setVizProperties({
    plotArea: { dataShape : {primaryAxis : ['bar','bar','bar'],
                            secondaryAxis : ['line', 'line', 'line']}}
});

在这个例子中,每个轴上最多会绘制3个条形图和2个折线图。我猜一旦你看到这段代码,你就知道如何改变条形图和折线图了。 需要注意的是,在此处只允许使用“bar”和“line”(我已经检查过文档和源代码)。 最好的祝愿, 塞巴斯蒂安

0
请尝试以下操作:
var feedValueAxis1 = new sap.viz.ui5.controls.common.feeds.FeedItem({
              'uid': "valueAxis",
              'type': "Measure",
              'values': [ DataA ]
            }), feedValueAxis2 = new sap.viz.ui5.controls.common.feeds.FeedItem({
              'uid': "valueAxis2",
              'type': "Measure",
              'values': [DataB]
            }),

它将自动以条形图的形式将DataA绘制在左轴上,并将DataB以线条的形式绘制在右轴上。

请注意,双重组合从SAPUI5 1.40开始提供。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接