Работа над пользовательской диаграммой, которая может определять толщину стержня в столбчатой или горизонтальной столбчатой диаграмме на основе значения, предоставленного данными, а не предварительно установленной ширины, насколько это возможно при barThickness или barPercentage / categoryPercentage .
Цель: я могу создать горизонтальную гистограмму с данными, которые содержат значение x
и thickness
, где толщина становится относительной толщиной этого стержня вотношение к другим барам.
Например, этот код:
const data = {
labels: ['Northeast', 'Midwest', 'South', 'West'],
datasets: [
{
data: [
{ x: 10, thickness: 18 },
{ x: 20, thickness: 8 },
{ x: 13, thickness: 5 },
{ x: 4, thickness: 12 }
],
},
],
}
const context = document.querySelector('#myChart').getContext('2d')
const barChart = new Chart(context, {
type: 'horizontalBar',
data: data,
})
... сделает график похожим на этот:

... вместо этого:

(здесь не включены ненужные варианты стиля).
Основные характеристики:
- Тиковые метки центрированы на полосе
- Тиковые интервалы определяются толщиной стержня
- Прутки расположены равномерно
Как это можно сделать?
Я знаю, что могу взломать рисунок бараКонтроллеры диаграмм для указания явной ширины нарисованных прямоугольников, но это не позволяет получить столбцы, которые расположены равномерно.Вместо этого у них есть переменная ширина в пределах их категории фиксированной ширины, которая не взгляд, который я собираюсь:

Я догадываюсь, что мне нужно расширить новую ось , но это кажется сложным.
Надеемся получить какие-либо предложения по лучшим подходам!Спасибо!
Похоже на этот вопрос без ответа .Обнаружил эти ответы в моем поиске, которые казались многообещающими, но в конечном итоге не были правильными: