如何缩小图表/过滤掉 "zero" 值,这样结果就不会塞进一个很小的 space 中
How to shrink a chart / filter out "zero" values so results aren't crammed into a tiny space
我有一个代表两列数值数据的折线图。图表的X轴显示了2020年初到年底的所有日期,Y轴是两列的值。
问题是对于两个 Y 值我只有一个条目,并且图表显示了从第一个日期到最后一个日期的所有值(除了一个条目之外将为零)。发生的情况是图表的线条数据挤在最左边,因为它包括两个数据列中的所有值,而不是非零值。
如何更改图表,使其仅显示已输入的 Y 值,以便我可以清楚地看到图表?基本上只是过滤掉列中的所有 "zero" 条目,所以我只看到图表中表示的填充值?
我已经尝试寻找与您的具体案例相关的解决方案,但我还没有看到内置的方法。
我构建了一个简单的 Apps 脚本,它会在第二列中查找第一个空值,以便在每次编辑时更新图表范围。
function onEdit(e) {
var sheet = SpreadsheetApp.getActiveSheet();
// Assuming that your X-axis is in the first column
// and your Y-axis is in the second
var rang = sheet.getRange(1, 2, sheet.getLastRow());
var rangValues = rang.getValues()
// Checking the first value in the second column that is not defined
for(var i = 0; i < rangValues.length; i++){
if( rangValues[i] == undefined || rangValues[i] == "" || rangValues[i] == 0 ){
break;
}
}
var finalRange = sheet.getRange(1, 1, i, 2);
// Updating the chart with the new Range
var chart = sheet.getCharts()[0];
chart = chart.modify()
.clearRanges()
.addRange(finalRange)
.build();
sheet.updateChart(chart);
}
这对我有用,如果您不熟悉 Apps 脚本,可以在实施之前尝试查看 the documentation。
如果您的数据以其他方式排列,请告诉我,以便我可以调整此脚本以满足您的需要。
另一个可以尝试做的解决方法是创建一个新的 sheet 并使用一些 sheet 的公式过滤该数据:
=QUERY(Sheet1!A:B, "select A, B where B>0 and B is not null")
此解决方案的缺点是您需要通过 QUERY
复制数据。但是,如果您对 Apps 脚本不满意。
我认为你想做的事情不是一个疯狂的想法,所以你可以报告它并尝试让 google 实施它。
我有一个代表两列数值数据的折线图。图表的X轴显示了2020年初到年底的所有日期,Y轴是两列的值。
问题是对于两个 Y 值我只有一个条目,并且图表显示了从第一个日期到最后一个日期的所有值(除了一个条目之外将为零)。发生的情况是图表的线条数据挤在最左边,因为它包括两个数据列中的所有值,而不是非零值。
如何更改图表,使其仅显示已输入的 Y 值,以便我可以清楚地看到图表?基本上只是过滤掉列中的所有 "zero" 条目,所以我只看到图表中表示的填充值?
我已经尝试寻找与您的具体案例相关的解决方案,但我还没有看到内置的方法。
我构建了一个简单的 Apps 脚本,它会在第二列中查找第一个空值,以便在每次编辑时更新图表范围。
function onEdit(e) {
var sheet = SpreadsheetApp.getActiveSheet();
// Assuming that your X-axis is in the first column
// and your Y-axis is in the second
var rang = sheet.getRange(1, 2, sheet.getLastRow());
var rangValues = rang.getValues()
// Checking the first value in the second column that is not defined
for(var i = 0; i < rangValues.length; i++){
if( rangValues[i] == undefined || rangValues[i] == "" || rangValues[i] == 0 ){
break;
}
}
var finalRange = sheet.getRange(1, 1, i, 2);
// Updating the chart with the new Range
var chart = sheet.getCharts()[0];
chart = chart.modify()
.clearRanges()
.addRange(finalRange)
.build();
sheet.updateChart(chart);
}
这对我有用,如果您不熟悉 Apps 脚本,可以在实施之前尝试查看 the documentation。
如果您的数据以其他方式排列,请告诉我,以便我可以调整此脚本以满足您的需要。
另一个可以尝试做的解决方法是创建一个新的 sheet 并使用一些 sheet 的公式过滤该数据:
=QUERY(Sheet1!A:B, "select A, B where B>0 and B is not null")
此解决方案的缺点是您需要通过 QUERY
复制数据。但是,如果您对 Apps 脚本不满意。
我认为你想做的事情不是一个疯狂的想法,所以你可以报告它并尝试让 google 实施它。