gpt4 book ai didi

javascript - 使用注释 : line 移动 Google Chart 列注释位置

转载 作者:行者123 更新时间:2023-11-30 20:48:18 27 4
gpt4 key购买 nike

使用下面的示例,是否可以移动注释,以便在使用 style: 'line' 时它们都出现在图表底部的相同(静态)位置(这使得注释垂直阅读)?

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

function drawChart() {
var data = google.visualization.arrayToDataTable([
['Type', 'Completed', 'Outstanding'],
['', 75, 25],
['', 50, 40],
['', 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%' },
annotations: {
style: 'line',
textStyle: {
fontSize: 8,
color: 'black',
strokeSize: 0,
auraColor: 'transparent'
},
alwaysOutside: true,
stem:{
color: 'transparent',
},
},
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);
}

这是一个 JSFiddle 示例:http://jsfiddle.net/tVCv9/340/

这就是我想要达到的目标:-

enter image description here

最佳答案

看起来你找到了一个移动注释的例子,
但是在这种情况下,由于使用了 style: 'line'
您必须同时调整 'y' 属性和 'rotation'

请参阅以下工作片段...

google.charts.load('current', {
packages:['corechart']
}).then(function () {
var data = google.visualization.arrayToDataTable([
['Type', 'Completed', 'Outstanding'],
['', 75, 25],
['', 50, 40],
['', 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 = {
annotations: {
style: 'line',
textStyle: {
fontSize: 8,
color: 'black',
strokeSize: 0,
auraColor: 'transparent'
},
alwaysOutside: true,
stem:{
color: 'transparent',
},
},
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
google.visualization.events.addListener(chart, 'ready', function () {
var chartLayout = chart.getChartLayoutInterface();
var yLocation = chartLayout.getYLocation(0) + options.annotations.textStyle.fontSize;
var observer = new MutationObserver(function () {
Array.prototype.forEach.call(container.getElementsByTagName('text'), function(annotation) {
if ((annotation.getAttribute('text-anchor') === 'middle') &&
(parseInt(annotation.getAttribute('font-size')) === options.annotations.textStyle.fontSize)) {
var rotate = 'rotate(270 ' + annotation.getAttribute('x') + ' ' + yLocation + ')';
annotation.setAttribute('y', yLocation);
annotation.setAttribute('transform', rotate);
}
});
});
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 - 使用注释 : line 移动 Google Chart 列注释位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48459716/

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