在 Google 图表上对齐注释文本
Align annotation text on Google Chart
我试图将我的注释文本推到折线图的顶部而不是中间。我要移动的注释与 x 轴数据相关联,因此显示在垂直线上旋转,所以看起来我需要做的就是将文本右对齐。
我知道 annotations.textStyle
配置选项,但 documentation 中没有显示对齐更改的示例,我一直在尝试一些我认为可行的选项,但没有任何变化它来自中心。
例如,在此 Fiddler 中,我认为 textStyle: {align: 'right'}
会起作用,但它没有任何影响 - 注释 'boost' 仍然显示在中心而不是顶部。
没有可用于调整对齐方式的选项,
但是你可以手动修改图表的svg,
当图表的 'ready'
事件触发时...
在这里,我找到了注释<text>
元素并调整了x坐标(由于变换)
google.charts.load('current', {
packages: ['corechart']
}).then(drawVisualization);
function drawVisualization() {
// example copied from Google Visualization API playground,
// modified for category axis annotations
// Create and populate the data table.
var data = new google.visualization.DataTable();
data.addColumn('string', 'x');
data.addColumn({type: 'string', role: 'annotation'});
data.addColumn({type: 'string', role: 'annotationText'});
data.addColumn('number', 'Cats');
data.addColumn('number', 'Blanket 1');
data.addColumn('number', 'Blanket 2');
data.addRow(["A", null, null, 1, 1, 0.5]);
data.addRow(["B", null, null, 2, 0.5, 1]);
data.addRow(["C", null, null, 4, 1, 0.5]);
data.addRow(["D", null, null, 8, 0.5, 1]);
data.addRow(["E", null, null, 7, 1, 0.5]);
data.addRow(["F", null, null, 7, 0.5, 1]);
data.addRow(["G", 'boost', 'Foo annotation', 8, 1, 0.5]);
data.addRow(["H", null, null, 4, 0.5, 1]);
data.addRow(["I", null, null, 2, 1, 0.5]);
data.addRow(["J", null, null, 3.5, 0.5, 1]);
data.addRow(["K", ' ', 'Bar annotation', 3, 1, 0.5]);
data.addRow(["L", null, null, 3.5, 0.5, 1]);
data.addRow(["M", null, null, 1, 1, 0.5]);
data.addRow(["N", null, null, 1, 0.5, 1]);
var chart = new google.visualization.LineChart(document.getElementById('visualization'));
google.visualization.events.addListener(chart, 'ready', function () {
var labels = chart.getContainer().getElementsByTagName('text');
Array.prototype.forEach.call(labels, function(label) {
if ((label.getAttribute('text-anchor') === 'middle') && (label.hasAttribute('transform'))) {
label.setAttribute('x', parseFloat(label.getAttribute('x')) + 100);
}
});
});
chart.draw(data, {
curveType: 'function',
width: 500,
height: 400,
vAxis: {
maxValue: 10
},
annotations: {
style: 'line',
}
});
}
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="visualization"></div>
注意:jsapi
加载程序是旧版本,请改用 loader.js
,见上文...
我试图将我的注释文本推到折线图的顶部而不是中间。我要移动的注释与 x 轴数据相关联,因此显示在垂直线上旋转,所以看起来我需要做的就是将文本右对齐。
我知道 annotations.textStyle
配置选项,但 documentation 中没有显示对齐更改的示例,我一直在尝试一些我认为可行的选项,但没有任何变化它来自中心。
例如,在此 Fiddler 中,我认为 textStyle: {align: 'right'}
会起作用,但它没有任何影响 - 注释 'boost' 仍然显示在中心而不是顶部。
没有可用于调整对齐方式的选项,
但是你可以手动修改图表的svg,
当图表的 'ready'
事件触发时...
在这里,我找到了注释<text>
元素并调整了x坐标(由于变换)
google.charts.load('current', {
packages: ['corechart']
}).then(drawVisualization);
function drawVisualization() {
// example copied from Google Visualization API playground,
// modified for category axis annotations
// Create and populate the data table.
var data = new google.visualization.DataTable();
data.addColumn('string', 'x');
data.addColumn({type: 'string', role: 'annotation'});
data.addColumn({type: 'string', role: 'annotationText'});
data.addColumn('number', 'Cats');
data.addColumn('number', 'Blanket 1');
data.addColumn('number', 'Blanket 2');
data.addRow(["A", null, null, 1, 1, 0.5]);
data.addRow(["B", null, null, 2, 0.5, 1]);
data.addRow(["C", null, null, 4, 1, 0.5]);
data.addRow(["D", null, null, 8, 0.5, 1]);
data.addRow(["E", null, null, 7, 1, 0.5]);
data.addRow(["F", null, null, 7, 0.5, 1]);
data.addRow(["G", 'boost', 'Foo annotation', 8, 1, 0.5]);
data.addRow(["H", null, null, 4, 0.5, 1]);
data.addRow(["I", null, null, 2, 1, 0.5]);
data.addRow(["J", null, null, 3.5, 0.5, 1]);
data.addRow(["K", ' ', 'Bar annotation', 3, 1, 0.5]);
data.addRow(["L", null, null, 3.5, 0.5, 1]);
data.addRow(["M", null, null, 1, 1, 0.5]);
data.addRow(["N", null, null, 1, 0.5, 1]);
var chart = new google.visualization.LineChart(document.getElementById('visualization'));
google.visualization.events.addListener(chart, 'ready', function () {
var labels = chart.getContainer().getElementsByTagName('text');
Array.prototype.forEach.call(labels, function(label) {
if ((label.getAttribute('text-anchor') === 'middle') && (label.hasAttribute('transform'))) {
label.setAttribute('x', parseFloat(label.getAttribute('x')) + 100);
}
});
});
chart.draw(data, {
curveType: 'function',
width: 500,
height: 400,
vAxis: {
maxValue: 10
},
annotations: {
style: 'line',
}
});
}
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="visualization"></div>
注意:jsapi
加载程序是旧版本,请改用 loader.js
,见上文...