我有一个系统可以在google工作表中创建折线图和散点图。截至2018年3月7日,图表开始包含我的数据的一行作为图表的一部分而不是列的标题。
如果我手动制作图表,那么它会使我的第一行成为图表的标题。此外,如果我编辑当前图形并勾选使用行x作为标题,那么我的标题将回到它们的用途。
我的问题是,如果有一种方法我可以在谷歌脚本或我可以使用的解决方案编程。
我试过的一些事情是遵循本指南: Google Apps Script Chart Use row 1 as headers
但正如其他人评论它不再有效,而在我的测试中它没有。
谢谢!
编辑:这是我构建图表的方式:
var currChart = currSheet.newChart();
currChart.setPosition (row, col, 5,5)
var builtChart = currChart.asScatterChart()
.addRange(currRange)
.setTitle(title)
.setYAxisTitle(axisLabel)
.setOption('useFirstColumnAsDomain','true')
.setOption('hAxis.viewWindow.min', min)
.setOption('hAxis.viewWindow.max', max)
.setOption('chartArea.left', 80)
.setOption('chartArea.top', 60)
.setOption('chartArea.width', 360)
.setOption('chartArea.height', 240)
.setOption('chartArea.backgroundColor',
{ stroke: "#828282", strokeWidth: 2, fill: "#fcfcfc" })
.setOption('series',
{0:{color: '#54B4C6', pointSize: 3, pointShape: 'circle'},
1:{color: '#2F53D9', pointSize: 10, pointShape: 'diamond'},
2:{color: '#F1BE00', pointSize: 4, pointShape: 'circle'},
3:{color: '#D90D0C', pointSize: 11, pointShape: 'diamond'}})
.build();
currSheet.insertChart(builtChart);
答案 0 :(得分:1)
您可以使用labelInLegend
配置选项中的series
设置图例值here。(导航到选项系列)
因此,在上面的代码中假设您已经在数组中提取了第一行,如下所示:
var values = currRange.getValues()
var headerRow = []
for (var i =0; i<values[0].length ; i++)
headerRow[i] = values[0][i]
您可以使用setOptions设置系列的值,如下所示:
.setOption('series',
{0:{color: '#54B4C6', pointSize: 3, pointShape: 'circle',labelInLegend:headerRow[1]},
1:{color: '#2F53D9', pointSize: 10, pointShape: 'diamond',labelInLegend:headerRow[2]},
2:{color: '#F1BE00', pointSize: 4, pointShape: 'circle',labelInLegend:headerRow[3]},
3:{color: '#D90D0C', pointSize: 11, pointShape: 'diamond',labelInLegend:headerRow[4]}})
简而言之,只需在系列对象中加入以下key:value
对lableInLegend:'Header Value'
即可。
注意:跳过标题的第一个值,因为它与垂直轴有关
您的最终代码将如此:
var values = currRange.getValues()
var headerRow = []
for (var i =0; i<values[0].length ; i++)
headerRow[i] = values[0][i]
var currChart = currSheet.newChart();
currChart.setPosition (row, col, 5,5)
var builtChart = currChart.asScatterChart()
.addRange(currRange)
.setTitle(title)
.setYAxisTitle(axisLabel)
.setOption('useFirstColumnAsDomain','true')
.setOption('hAxis.viewWindow.min', min)
.setOption('hAxis.viewWindow.max', max)
.setOption('chartArea.left', 80)
.setOption('chartArea.top', 60)
.setOption('chartArea.width', 360)
.setOption('chartArea.height', 240)
.setOption('chartArea.backgroundColor',
{ stroke: "#828282", strokeWidth: 2, fill: "#fcfcfc" })
.setOption('series',
{0:{color: '#54B4C6', pointSize: 3, pointShape: 'circle',labelInLegend:headerRow[1]},
1:{color: '#2F53D9', pointSize: 10, pointShape: 'diamond',labelInLegend:headerRow[2]},
2:{color: '#F1BE00', pointSize: 4, pointShape: 'circle',labelInLegend:headerRow[3]},
3:{color: '#D90D0C', pointSize: 11, pointShape: 'diamond',labelInLegend:headerRow[4]}})
.build();
currSheet.insertChart(builtChart);