Я новичок в программировании, но за последние несколько месяцев мне удалось нащупать свой путь, создав веб-сайт, который использует линейную диаграмму Google и встроенную линейную линию тренда для отображения исторического среднего уровня моря и скорости повышения среднего уровня моря для в различных местах Новой Зеландии и Тихого океана. В каждом месте есть своя собственная линейная диаграмма Google с линейной линией тренда, показывающая скорость изменения среднего уровня моря за выбранный пользователем период. Теперь я хочу расширить функциональность каждой линейной диаграммы Google таким образом, чтобы как линейная, так и полиномиальная линия тренда продолжалась до 2120 года (в настоящее время они отображаются только до 2018 года), даже если доступные данные, на основе которых они рассчитываются, используют наблюдаемые данные вверх до 2018 года. Это позволит пользователю спрогнозировать высоту уровня моря до 2020 года. Я понимаю, что это объяснение может сбивать с толку, поэтому, пожалуйста, посетите мой веб-сайт www.sealevel.nz, чтобы увидеть существующие диаграммы, которые, я надеюсь, помогут помощь в понимании моей проблемы.
Ниже приведен код расширенной версии диаграммы, которая показывает как линейную, так и полиномиальную линию тренда второй степени с осью x линейной диаграммы Google, которая теперь показывает 2120 год. Моя проблема в том, что мне нужно, чтобы ось y динамически настраивалась на показать всю полноту обеих линий тренда независимо от того, какой период времени выбирает пользователь. Например, если вы выберете 1971 и 2018 годы на ползунке диапазона дат, то обе линии тренда обрежутся в 2017 году (линейный) и 2031 год (полиномиальный) соответственно. Мне нужно видеть как линии тренда, так и их значения до 2120 года.
Прошу прощения за мои навыки программирования-новичка. Мой код:
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script src="https://unpkg.com/mathjs/dist/math.min.js"></script>
<script type="text/javascript">
google.load('visualization', 'current', {'packages':['controls','corechart']});
google.setOnLoadCallback(initialize);
function initialize() {
var query = new google.visualization.Query('https://docs.google.com/spreadsheets/d/1vn1iuhsG33XzFrC4QwkTdUnxOGdcPQOj-cuaEZeX-eA/edit#gid=0');
query.send(drawDashboard);
}
function drawDashboard(response) {
var data = response.getDataTable();
//Asign units of 'mm' to data.
var formatMS = new google.visualization.NumberFormat({
pattern: '# mm'
});
// format into data mm..
for (var colIndex = 1; colIndex < data.getNumberOfColumns(); colIndex++) {
formatMS.format(data, colIndex);
}
var YearPicker = new google.visualization.ControlWrapper({
'controlType': 'NumberRangeFilter',
'containerId': 'filter_div',
'options': {
'filterColumnLabel': 'Year',
'ui': {
cssClass: 'filter-date',
'format': { pattern: '0000' },
'labelStacking': 'vertical',
'allowTyping': false,
'allowMultiple': false
}
},
});
var MSLChart = new google.visualization.ChartWrapper({
'chartType': 'LineChart',
'containerId': 'chart_div',
'options': {
'fontSize': '14',
'title': 'Timbucktoo Annual Mean Sea Level Summary',
hAxis: {title: 'Year', format:'0000', maxValue: 2120},
vAxis: {title: 'Height above Chart Datum (mm)', format:'0000'},
'height': 600,
chartArea: {height: '81%', width: '85%', left: 100},
'legend': {'position': 'in', 'alignment':'end', textStyle: {fontSize: 13} },
colors: ['blue'],
trendlines: {
0: {
type: 'polynomial',
degree: 2,
color: 'green',
visibleInLegend: true,
},
1: {
type: 'linear',
color: 'black',
visibleInLegend: true,
},
},
series: {
0: { visibleInLegend: true },
1: { visibleInLegend: false },
},
},
'view': {'columns': [0,1,2]}
});
var dashboard = new google.visualization.Dashboard(document.getElementById('dashboard_div')).
bind(YearPicker, MSLChart).
draw(data)
</script>