gpt4 book ai didi

javascript - 移动 Google Chart 列注释位置

转载 作者:搜寻专家 更新时间:2023-11-01 04:35:17 26 4
gpt4 key购买 nike

我正在使用下面的代码生成一个柱形图,其中的数字位于柱形图内,但我真的希望它们位于柱形图的底部而不是顶部。

这是我的图表的视觉效果:

google chart with annotations

    var data = google.visualization.arrayToDataTable([
['Type', 'Completed', 'Outstanding'],
['Item 1', 75, 25],
['Item 2', 50, 40],
['Item 3', 80, 15]
]);

var view = new google.visualization.DataView(data);
view.setColumns([0, 1,
{
calc: "stringify",
sourceColumn: 1,
type: "string",
role: "annotation"
},
2,
{
calc: "stringify",
sourceColumn: 2,
type: "string",
role: "annotation"
}]);

var options = {
legend: 'none',
height: 270,
chartArea: { 'width': '80%', 'height': '80%' },
bar: { groupWidth: '80%' },
vAxis: {
textPosition: 'none',
gridlines: {
color: 'transparent'
}
},
series: {
0: { color: '#00A887' },
1: { color: '#F6323E' },
}

};

var chart = new google.visualization.ColumnChart(document.getElementById('northPMChart'));

chart.draw(view, options);

非常感谢任何帮助。

最佳答案

没有标准configuration options用于将注释移动到底部

你可以调整annotations.stem.length从默认位置调整

但这会将所有注释移动相同的距离,

这里行不通


您可以手动移动注释,如以下代码片段所示...

但是,自定义修改不会在使用getImageURI时反射(reflect)出来,
如果您需要生成图表的 png 图像

此外,图表会将注释移回其原始位置,
任何时候都有交互,比如列悬停

所以必须使用 MutationObserver 将它们移回,当事件发生时......

google.charts.load('current', {
callback: function () {
drawChart();
window.addEventListener('resize', drawChart, false);
},
packages:['corechart']
});

function drawChart() {
var data = google.visualization.arrayToDataTable([
['Type', 'Completed', 'Outstanding'],
['Item 1', 75, 25],
['Item 2', 50, 40],
['Item 3', 80, 15]
]);

var view = new google.visualization.DataView(data);
view.setColumns([0, 1,
{
calc: "stringify",
sourceColumn: 1,
type: "string",
role: "annotation"
},
2,
{
calc: "stringify",
sourceColumn: 2,
type: "string",
role: "annotation"
}]);

var options = {
legend: 'none',
height: 270,
chartArea: { 'width': '80%', 'height': '80%' },
bar: { groupWidth: '80%' },
vAxis: {
textPosition: 'none',
gridlines: {
color: 'transparent'
}
},
series: {
0: { color: '#00A887' },
1: { color: '#F6323E' },
}

};

var container = document.getElementById('northPMChart');
var chart = new google.visualization.ColumnChart(container);

// move annotations
var observer = new MutationObserver(function () {
Array.prototype.forEach.call(container.getElementsByTagName('text'), function(annotation) {
if ((annotation.getAttribute('text-anchor') === 'middle') &&
(annotation.getAttribute('fill') === '#ffffff')) {
var chartLayout = chart.getChartLayoutInterface();
annotation.setAttribute('y',
chartLayout.getYLocation(0) - (parseInt(annotation.getAttribute('font-size')) / 2)
);
}
});
});
observer.observe(container, {
childList: true,
subtree: true
});

chart.draw(view, options);
}
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="northPMChart"></div>

关于javascript - 移动 Google Chart 列注释位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43845104/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com