Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 谷歌图表API(不是可视化API):如何去掉注释行_Google Apps Script_Charts_Google Visualization - Fatal编程技术网

Google apps script 谷歌图表API(不是可视化API):如何去掉注释行

Google apps script 谷歌图表API(不是可视化API):如何去掉注释行,google-apps-script,charts,google-visualization,Google Apps Script,Charts,Google Visualization,我正在尝试使用GoogleChartAPI生成图表,并将图表作为图像。请注意,我在服务器端而不是浏览器端渲染图表(即不使用Google可视化API) 在我的一些图表中,我画了一条垂直线,代表一个目标。由于目标对于所有不同的x值都是相同的,因此我只需要在图表顶部标记它,如下图所示: 我可以设法只显示顶部标签,但: -如何删除小注释线?尤其是当没有显示标签时! -如何将此标签移到行的顶部而不是右侧(到) 防止与条形标签重叠(如A=95)? -我如何格式化这个独特的标签(即用背景色设置框中的文本)

我正在尝试使用GoogleChartAPI生成图表,并将图表作为图像。请注意,我在服务器端而不是浏览器端渲染图表(即不使用Google可视化API)

在我的一些图表中,我画了一条垂直线,代表一个目标。由于目标对于所有不同的x值都是相同的,因此我只需要在图表顶部标记它,如下图所示:

我可以设法只显示顶部标签,但: -如何删除小注释线?尤其是当没有显示标签时! -如何将此标签移到行的顶部而不是右侧(到) 防止与条形标签重叠(如A=95)? -我如何格式化这个独特的标签(即用背景色设置框中的文本)

以下是我用来生成图表图像的代码:

var annotations = [0, 
                   1, {calc: "stringify", sourceColumn: 1, type: "string", role: "annotation"},
                   2, {calc: "stringify", sourceColumn: 3, type: "string", role: "annotation"}, 
                   ];

var dataViewDefinition = Charts.newDataViewDefinition().setColumns(annotations).build();

var data = Charts.newDataTable()
  .addColumn(Charts.ColumnType.STRING, 'x')
  .addColumn(Charts.ColumnType.NUMBER, 'act')
  .addColumn(Charts.ColumnType.NUMBER, 'tgt')
  .addColumn(Charts.ColumnType.STRING, 'tgt_lbl')
  .addRow(['A', 90, 95, '95'])
  .addRow(['B', 80, 95, ''])
  .addRow(['C', 100, 95, ''])
  .build();


  var chart = Charts.newBarChart()
    .setDataTable(data)
    .setRange(0, 150)
    .setOption('series', {
      1: { lineWidth: 1, type: 'line'}
    })
    .setOption('chartArea', {'width': '80%', 'height': '100%'})
    .setColors(['#D9D9D9', '#0085AD'])
    .setOption('annotations', { textStyle: { color: '#000000' }})
    .setDataViewDefinition(dataViewDefinition)
    .build();


  var folder=DriveApp.getFolderById('Folder ID');
  folder.createFile(chart.getAs('image/png')).setName('Image Name');
在使用可视化API时,我看到了一个通过修改生成的SVG来删除注释行的方法,但是在使用图表API时如何继续


谢谢你的帮助

您可以尝试以下选项

.setOption('annotations.stem.color', 'transparent')
或者

.setOption('annotations.stem.length', 0)


对于上述输出,我尝试了不同的方法: 如果您仔细想想,95目标不是一个数据系列,它是一个所有系列通用的静态值。因此,另一种方法是在代表目标的水平轴上设置垂直线(勾号)

例如:
函数createDataView(){
//使用数据构建数据表
var data=Charts.newDataTable();
data.addColumn(Charts.ColumnType.STRING,'Domain/Series');
data.addColumn(Charts.ColumnType.NUMBER,'Sales');
data.addRow(['A',90]);
data.addRow(['B',80]);
data.addRow(['C',100]);
data.build();
返回数据
}
功能图表数据表(数据表){
//使用数据创建图表生成器
var chartBuilder=Charts.newBarChart().setDataTable(dataTable);
setOption('title','mychart');
chartBuilder.setOption('titleTextStyle',{
'fontName':'AudioWide',
“fontSize”:16,
“大胆”:没错,
斜体:假
});
setOption('hAxes',{0:{'title':'Sales in USD',
“titleTextStyle”:{
'fontName':'AudioWide',
“fontSize”:14,
“大胆”:没错,
斜体:假
},
“滴答声”:[{
“v”:95,
“f”:“目标95美元”
}],
“网格线”:{
“颜色”:“黑色”,
“计数”:5
},
“minorGridlines”:{
“颜色”:“灰色”,
“计数”:0
},
“textPosition”:“out”,
“textStyle”:{
'fontName':'AudioWide',
“字体大小”:12,
“颜色”:“洋红色”,
“大胆”:没错,
“斜体”:正确
}
},
1:{}
}
);
setOption('vAxes',{0:{'title':'Accounts',
“titleTextStyle”:{
'fontName':'AudioWide',
“fontSize”:14,
“大胆”:没错,
斜体:假
},
“textPosition”:“out”
}
}
);
//Asign数据系列到轴
chartBuilder.setOption('系列'{
0:{'targetAxisIndex':0},
1:{'targetAxisIndex':0,
“visibleInLegend”:false
}
});
//为图表指定一个范围
chartBuilder.setRange(50150);
//创建我们将使用的数据视图
var dataView=Charts.newDataViewDefinition();
//为数据视图创建列索引
//索引从0开始
计算的var\u col\u obj={
计算:'字符串化',
键入:“字符串”,
标签:“”,
id:“”,
资料来源专栏:1,
角色:'注释',
};
var columnIndexes=[0,1,计算值为[u col_obj];
//使用我们需要的列索引构建数据视图
setColumns(columnIndexes.build();
//设置此图表的数据视图
chartBuilder.setDataViewDefinition(dataView)
//绘制图表
var chart=chartBuilder.build();
//将图表保存在驱动器文件夹中
var folder=DriveApp.getFolderById(“”);
folder.createFile(chart.getAs('image/png')).setName('MyChartFromDataView');
}
最后:
chartDataTable(createDataView())

谢谢@WhiteHat。这有帮助!与此同时,我发现stem:{color:'none'}也可以工作。谷歌文档并不总是准确的!