снимок экрана с изображениемЯ пытаюсь реализовать несколько гистограмм для приведенного ниже требования к диаграмме в ReactJS, используя библиотеку recharts или react-chartjs-2. Я не смог найти никакого прямого доступного решения. Любые предложения, как создать подобный тип диаграммы
const data = [ { type: "Sample 1", data: [600, 400, 200, 800] }, { type: "Sampel 2", data: [700, 300, 600, 600] }, { type: "Total", data: [1300, 700, 800, 1400] } ];
Основное требование может быть выполнено путем определения двух xAxes
, одного для отдельных значений ('x1'
), другого для общего бара ('x2'
).
Дополнительные сведения см. в главе «Создание нескольких осей» документации Chart.js.
Пожалуйста, взгляните на приведенный ниже пример кода и посмотрите, как он работает. Хотя это чистое решение JavaScript
, концепция также должна работать для react-chartjs-2
.
const data = [{
type: "Sample 1",
data: [600, 400, 200, 800]
}, {
type: "Sampel 2",
data: [700, 300, 600, 600]
}, {
type: "Total",
data: [1300, 700, 800, 1400]
}];
new Chart('myChart', {
type: "bar",
data: {
labels: ["A", "B", "C", "D"],
datasets: [{
label: data[0].type,
xAxisID: 'x1',
data: data[0].data,
backgroundColor: 'rgb(54, 162, 235)',
barPercentage: 1
},
{
label: data[1].type,
xAxisID: 'x1',
data: data[1].data,
backgroundColor: 'rgb(255, 159, 64)',
barPercentage: 1
},
{
label: data[2].type,
xAxisID: 'x2',
data: data[2].data,
backgroundColor: 'rgb(172, 215, 250)',
barPercentage: 1
}
]
},
options: {
legend: {
labels: {
filter: item => item.text != 'Total'
}
},
scales: {
yAxes: [{
ticks: {
min: 0,
stepSize: 200
}
}],
xAxes: [{
id: 'x1'
},
{
id: 'x2',
display: false,
offset: true
}
]
}
}
});
<script src = "https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.4/Chart.min.js"></script>
<canvas id = "myChart" height = "90"></canvas>
@Teja: Пожалуйста, взгляните на этот ответ: stackoverflow.com/a/65120239/2358409. Если вы не можете заставить его работать, опубликуйте новый вопрос для этого нового выпуска, и я или кто-то другой поможет вам решить проблему.
Не могли бы вы взглянуть на вопрос, который я разместил stackoverflow.com/questions/65618298/…
@uminder Здравствуйте, у меня похожий вопрос, за исключением того, что мне нужна гистограмма и линейная диаграмма. Я попробовал это решение, но оно не сработало, нужно ли что-то еще сделать в приведенном выше, чтобы оно работало с react-chartjs-2?
Спасибо, Uminder. Это сработало отлично. Не могли бы вы помочь мне добавить градиент только к общей гистограмме?