Javascript VizFrame多Y轴组合图
我对SAPUI5框架的VizFrame控件有问题。我想在一个有两个Y轴的复杂图表中显示一些数据。我的数据模型如下所示:Javascript VizFrame多Y轴组合图,javascript,sapui5,sap-fiori,Javascript,Sapui5,Sap Fiori,我对SAPUI5框架的VizFrame控件有问题。我想在一个有两个Y轴的复杂图表中显示一些数据。我的数据模型如下所示: { "d" : { "results" : [ { "DataA" : "2", "DataB" : "4", "Id"
{
"d" : {
"results" : [
{
"DataA" : "2",
"DataB" : "4",
"Id" : "1",
},
{
"DataA" : "3",
"DataB" : "2",
"Id" : "2",
}
]
}
}
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);
我试图在左Y轴上显示DataA,在右Y轴上显示DataB,同时使用X轴的Id。这在VizFrame类型中没有问题:dual_line和dual_column
我还没有找到将数据显示为条形(Y1上的DataA)和线(Y2上的DataB)的方法。我当前的编码如下所示:
{
"d" : {
"results" : [
{
"DataA" : "2",
"DataB" : "4",
"Id" : "1",
},
{
"DataA" : "3",
"DataB" : "2",
"Id" : "2",
}
]
}
}
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);
非常感谢你的帮助 请尝试:
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]
}),
它将自动将数据A
与左轴
绘制为条形,将数据
与右轴
绘制为直线
请注意,从SAPUI5 1.40开始提供双组合。
我不知道您的问题是否仍然相关。
如果我答对了你的问题,那就是把度量值显示为条/线。我遇到了一个类似的问题,我通过设置plotArea的dataShape属性解决了这个问题:
oVizFrame.setVizProperties({
plotArea: { dataShape : {primaryAxis : ['bar','bar','bar'],
secondaryAxis : ['line', 'line', 'line']}}
});
在此示例中,每个轴上最多3个测量值将绘制为轴1上的条形图和轴2上的直线。我想,一旦你看到这种编码,你就会知道当你想改变条和线时该怎么做。
一句话:这里只允许“bar”和“line”(我检查了文档和源代码)。
顺致敬意,
塞巴斯蒂安