У Chartjs нет публичного API для этого, но вы можете изменить внутренний _ticks
на beforeDraw
и сделать метку «Blue» как major: true
, тогда эта метка будет нарисована с использованием стиль major
в опциях конфигурации тиков.
Также используйте это с осторожностью, поскольку оно опирается на внутреннюю реализацию и, таким образом, может сломаться в будущих выпусках (очень маловероятно, но просто сказать).
var ctx = document.getElementById("myChart").getContext('2d');
var myChart = new Chart(ctx, {
type: 'bar',
data: {
labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
datasets: [{
label: '# of Votes',
data: [12, 19, 3, 5, 2, 3],
backgroundColor: [
'rgba(255, 99, 132, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(255, 206, 86, 0.2)',
'rgba(75, 192, 192, 0.2)',
'rgba(153, 102, 255, 0.2)',
'rgba(255, 159, 64, 0.2)'
],
borderColor: [
'rgba(255,99,132,1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
'rgba(75, 192, 192, 1)',
'rgba(153, 102, 255, 1)',
'rgba(255, 159, 64, 1)'
],
borderWidth: 1
}]
},
options: {
scales: {
yAxes: [{
ticks: {
beginAtZero:true
}
}],
xAxes: [{
ticks: {
fontSize: 16,
major: {
fontSize: 20
}
}
}]
}
},
plugins: [{
beforeDraw: function({ chart }, options) {
chart.boxes
.find(box => box.id === "x-axis-0")
._ticks
.find(tick => tick.label === "Blue")
.major = true;
}
}]
});
PS: На всякий случай, если кому-то интересно, откуда я знаю эту внутреннюю реализацию, я искал fillText
в чарте из источника gjit chartjs код и console.log(myChart)
xD
К сожалению, у вас не так много вариантов, и ни один не идеален.
Во-первых, два очевидных и неприемлемых решения:
. которая полностью противоречит цели использования typedef
. typedef
, которого вы хотите избежать. Более интересные решения:
typedef
в один и тот же файл и включите этот файл. Это создает кодовую связь между классами. Вы должны делать это только со связанными классами, в противном случае вы получите файл включения бога, и это может привести к большой перекомпиляции при добавлении в этот файл typedef
. typedef
в нем. Немного раздражает, но это работает. Последние два похожи на предварительные объявления, но с добавленными typedef
s. Они уменьшают взаимозависимости файлов, так как вы редко изменяете файл typedef.
Я бы сказал, что для большинства ситуаций центральное включение имеет наибольшую выгоду от хлопот. Просто будь осторожен.
Просто используйте класс Bar;
. Это говорит C ++, что вы заявляете о своем намерении определить Bar.