чтобы добавить фоновые цвета к диаграмме, мы можем использовать ряд 'area'
,
один для положительного цвета и один для отрицательного.
после загрузки начальных данных,
добавить два дополнительных столбца.
добавьте строки / значения для этих столбцов для всего диапазона диаграммы.
используйте null
для исходного значения столбца.
// add columns & rows for background
data.addColumn('number', '');
data.addRow([0, null, 8]);
data.addRow([-100, null, 8]);
data.addColumn('number', '');
data.addRow([0, null, null, 8]);
data.addRow([100, null, null, 8]);
в опциях добавьте следующие опции ...
colors: ['blue', 'red', 'green'], // colors for the series
lineWidth: 0, // remove line for top of area series
pointSize: 0, // remove points on area series
series: { // change last two series to area
1: {type: 'area'},
2: {type: 'area'}
}
затем при размещении маркеров изображения игнорируйте столбцы, где исходное значение равно null
.
// exclude null values
var yValue = data.getValue(i, 1);
if (yValue !== null) {
var xPos = layout.getXLocation(data.getValue(i, 0));
...
см. Следующий рабочий фрагмент ...
google.charts.load('current', {
packages: ['corechart']
}).then(function () {
var data = new google.visualization.DataTable();
data.addColumn('number', '');
data.addColumn('number', '');
data.addRows([
[-0.5, 1],
[100, 1],
[-80, 2],
[25, 2],
[60, 8],
]);
// add columns & rows for background
data.addColumn('number', '');
data.addRow([0, null, 8]);
data.addRow([-100, null, 8]);
data.addColumn('number', '');
data.addRow([0, null, null, 8]);
data.addRow([100, null, null, 8]);
var options = {
title: 'guilt experience Vs eat satisfaction',
titlePosition: 'none',
position: 'center',
hAxis: {
title: 'Guilt Value\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0Eat Value',
minValue: 0,
maxValue: 15,
ticks: [0, 20, 40, 60, 80, 100, -20, -40, -60, -80, -100]
},
vAxis: {
title: '',
minValue: 0,
ticks: [0, 1, 2, 3, 4, 5, 6, 7, 8]
},
legend: {
position: 'none'
},
colors: ['blue', 'red', 'green'],
lineWidth: 0,
pointSize: 0,
series: {
1: {type: 'area'},
2: {type: 'area'}
}
};
var container = document.getElementById('chart_div');
var chart = new google.visualization.ScatterChart(document.getElementById('chart_div'));
google.visualization.events.addListener(chart, 'ready', function() {
var layout = chart.getChartLayoutInterface();
for (var i = -0; i < data.getNumberOfRows(); i++) {
// exclude null values
var yValue = data.getValue(i, 1);
if (yValue !== null) {
var xPos = layout.getXLocation(data.getValue(i, 0));
var yPos = layout.getYLocation(yValue);
var whiteHat = container.appendChild(document.createElement('img'));
if (data.getValue(i, 0) < 0) {
whiteHat.src = 'https://i.imgur.com/LqiTeQI.png';
} else {
whiteHat.src = 'https://i.imgur.com/rACTObW.png';
}
whiteHat.style.position = 'absolute';
whiteHat.style.height = '15px';
whiteHat.style.width = '15px';
whiteHat.style.top = (yPos) + 'px';
whiteHat.style.left = (xPos) + 'px';
}
}
});
chart.draw(data, options);
});
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="chart_div"></div>
Комментарии в коде должны описать, что в настоящее время делает код. Эти комментарии изменятся, только если намеченное поведение изменений кода - если пересмотр будет просто исправлением ошибки, они не должны изменяться.
Комментарии в журнале изменений должны описать то, какие изменения были внесены в этом пересмотре.
Заключение: Постарайтесь не помещать числа/даты пересмотра и имя (имена) программиста, который внес изменения в комментариях к коду. (Благодаря обоим Jonathans.)
Не создавайте помехи своему коду комментариями, которые объясняют изменения. Это - просто еще одна вещь, которая должна сохраняться и вероятно последовательно не будет, ведя к большему количеству ошибок и большему количеству изменений. Используйте функцию комментария управления исходным кодом для того, что она предназначается.
Если необходимо объяснить, почему что-то было сделано определенный путь в комментариях в коде, это прекрасно. Пока это не требуется для каждого изменения. Это ведет для создания помех комментариям как
// fixed bug #3365
Возможно. Если Вы изменяете код, но не обновляете комментарий, затем комментирует, становятся устаревшими. Я - огромный сторонник этого вида вещи, и я забываю обновлять комментарии чаще, чем я хотел бы признать. Но описание изменения (или по крайней мере должен быть), никогда неправильно.
Оба сервер комментариев различная цель. Комментарии к коду должны проиллюстрировать и объяснить, что делает часть кода, как это работает, что это ожидает и что это возвращает. Также исключительные условия, которые могут возникнуть.
Комментарии регистрации больше для информирования тому, что изменяется, Вы сделали и причины изменения.
Не, по-моему. Код должен быть прокомментирован таким образом, что можно легко прочитать код. Это еще более необходимо для кода, который имел ошибку, которая была исправлена.
Оба места должны быть хорошо прокомментированы, и вероятно, что они будут содержать дублирующиеся описания. Однако они оба используются по разным причинам. Когда Вы отслеживаете в обратном порядке посредством управления исходным кодом, оно должно обычно разыскивать, как была представлена проблема. Наличие хороших комментариев может сделать этот процесс намного легче. Комментарии к коду позволяют Вам работать через код, чтобы попытаться найти текущую ошибку или добавить следующую опцию.
Они должны делать обоих и понимать, почему это важно.
Не знайте, используете ли Вы инструменты аннотации, Некоторый IDE как затмение интегрируются хорошо с CVS и показывают Вам точно, какая строка была изменена, когда и кого при использовании cvs инструмента аннотации.