2016-08-03 47 views
4

Ich habe ein Problem mit dem VizFrame-Steuerelement des SAPUI5 Framework. Ich möchte einige Daten in einem komplexen Diagramm mit zwei Y-Achsen anzeigen. Meine Datenmodell sieht wie folgt aus:VizFrame kombiniert Diagramm mit mehreren Y-Achse

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

Ich versuchte DataA auf der linken Y-Achse und DataB auf der rechten Seite ein, um anzuzeigen, während die Id für die X-Achse verwendet wird. Dies funktioniert ohne Probleme mit den VizFrame-Typen: dual_line und dual_column.

Ich habe keine Möglichkeit gefunden, die Daten als Balken (DataA auf Y1) und Linie (DataB auf Y2) anzuzeigen. Meine aktuelle Codierung sieht so aus:

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); 

Vielen Dank für Ihre Hilfe!

Antwort

0

Bitte versuchen:

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] 
      }), 

es wird automatisch plotDataA gegen left axis als Bar und DataB gegen rightaxis als Linie.

Bitte bemerken, dass die doppelte Kombination aus verfügbaren war Ausgangs SAPUI5 1.40.

0

Ich weiß nicht, ob Ihre Frage noch relevant ist. Wenn ich deine Frage richtig verstanden habe, geht es darum, Maße als Balken/Linie darzustellen. Ich hatte ein ähnliches Problem, und ich löste es durch die dataShape Eigenschaft PlotArea Einstellung:

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

In diesem Beispiel maximal 3 Maßnahmen auf jeder Achse würde auf Achse 2 auf der Achse 1 und als Linie als Balken dargestellt werden. Ich denke, sobald Sie diese Kodierung sehen, wissen Sie, was zu tun ist, wenn Sie Bar gegen Linie ändern möchten. Eine Bemerkung: hier sind nur 'bar' und 'line' erlaubt (Ich habe die Doku und auch den Quellcode überprüft). Mit freundlichen Grüßen, Sebastian