【发布时间】:2019-11-04 00:22:43
【问题描述】:
我是编码新手,但在过去的几个月里,我设法通过创建一个网站来摸索自己的方式,该网站利用 Google 折线图和嵌入式线性趋势线来显示历史平均海平面和平均海速新西兰和太平洋周边不同地点的水位上升。每个位置都有自己的带有线性趋势线的 Google 折线图,以显示用户选定时期的平均海平面变化率。我现在想扩展每个谷歌折线图的功能,使得线性和多项式趋势线都延伸到 2120 年(它们目前只显示到 2018 年),即使计算它们的可用数据使用观察到的数据到 2018 年。这将允许用户预测到 2020 年的海平面高度。我意识到这种解释可能会令人困惑,所以请访问我的网站 www.sealevel.nz 以查看我希望的现有图表帮助理解我的问题。
下面是图表的扩展版本的代码,它显示了线性和二次多项式趋势线,谷歌折线图的 x 轴现在显示为 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>
【问题讨论】:
标签: javascript linechart google-visualization trendline