【发布时间】:2023-04-09 13:53:01
【问题描述】:
我正在尝试使用 Google Chart API 生成图表并将图表作为图像。请注意,我是在服务器端而不是在浏览器端呈现图表(即不使用 Google Visualization 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');
看到trick通过修改生成的SVG,在使用Visualization API的时候去掉注释行,但是在使用Chart API的时候怎么处理呢?
感谢您的帮助!
【问题讨论】:
标签: google-apps-script charts google-visualization