如何在每行的表格单元格内创建条形图或柱形图
我需要在每行的表单元格中创建条形图或列图。
这是我的JSON
[
{
"Chocolate": [
{
"kisses": [
{
"2022": {
"jan": 2000,
"feb": 1200,
"mar": 7000
}
},
{
"2021": {
"jan": 2000,
"feb": 1200,
"mar": 7000
}
}
]
},
{
"kitkat": [
{
"2022": {
"jan": 1000,
"feb": 3200,
"mar": 4500
}
},
{
"2021": {
"jan": 2000,
"feb": 200,
"mar": 7030
}
}
]
}
]
},
{
"Drinks": [
{
"Coco cola": [
{
"2022": {
"jan": 2000,
"feb": 1200,
"mar": 7000
}
},
{
"2021": {
"jan": 2200,
"feb": 1200,
"mar": 7100
}
}
]
},
{
"Pepsi": [
{
"2022": {
"jan": 1000,
"feb": 3200,
"mar": 4500
}
},
{
"2021": {
"jan": 4550,
"feb": 2100,
"mar": 3430
}
}
]
}
]
}
]
我需要单元格中的列图表
我找到了googlecharts并尝试过,但是无法达到我的要求。
google.charts.load('current', {
packages: ['corechart', 'table']
}).then(function () {
var data = new google.visualization.DataTable();
data.addColumn('string', 'Category');
data.addColumn('number', 'Name');
data.addColumn('string', 'Chart');
data.addRows([
['Choclate', {v: 10000, f: 'Kisses'}, null],
['Drinks', {v: 12500, f: 'Pepsi'}, null],
['Food', {v: 7000, f: 'Pizza'}, null]
]);
var table = new google.visualization.Table(document.getElementById('table_div'));
google.visualization.events.addListener(table, 'ready', function () {
// table body
Array.prototype.forEach.call(table.getContainer().getElementsByTagName('tbody'), function(tableBody) {
// table rows
Array.prototype.forEach.call(tableBody.rows, function(tableRow, rowIndex) {
// table cells
Array.prototype.forEach.call(tableRow.cells, function(tableCell, cellIndex) {
// determine if last cell
if (cellIndex === (tableRow.cells.length - 1)) {
// add chart continer
var chartContainer = tableCell.appendChild(document.createElement('div'));
chartContainer.className = 'chart';
// build chart data table
var dataChart = new google.visualization.DataTable();
dataChart.addColumn('number', 'x');
dataChart.addColumn('number', 'y');
for (var i = 0; i <= rowIndex; i++) {
dataChart.addRow([i, data.getValue(i, 1)]);
}
// draw chart
var chart = new google.visualization.ColumnChart(chartContainer);
chart.draw(dataChart, {
chartArea: {
left: 24,
top: 16,
right: 24,
bottom: 16,
height: '100%',
width: '100%'
},
height: '100%',
legend: 'none',
pointSize: 6,
width: '100%'
});
}
});
});
});
});
table.draw(data, {showRowNumber: true, width: '60%', height: '70%'});
});
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="table_div"></div>
即使我需要在JSON中获得具有枢轴类别行的JSON中的值的精确列图表,如所示示例图像所示。
请建议某人如何实现这一目标。
任何图表js都很好,例如plotly.js或googlecharts或echarts,即JavaScript库。
I need to create a bar or column chart inside a table cell of each row.
here is my json
[
{
"Chocolate": [
{
"kisses": [
{
"2022": {
"jan": 2000,
"feb": 1200,
"mar": 7000
}
},
{
"2021": {
"jan": 2000,
"feb": 1200,
"mar": 7000
}
}
]
},
{
"kitkat": [
{
"2022": {
"jan": 1000,
"feb": 3200,
"mar": 4500
}
},
{
"2021": {
"jan": 2000,
"feb": 200,
"mar": 7030
}
}
]
}
]
},
{
"Drinks": [
{
"Coco cola": [
{
"2022": {
"jan": 2000,
"feb": 1200,
"mar": 7000
}
},
{
"2021": {
"jan": 2200,
"feb": 1200,
"mar": 7100
}
}
]
},
{
"Pepsi": [
{
"2022": {
"jan": 1000,
"feb": 3200,
"mar": 4500
}
},
{
"2021": {
"jan": 4550,
"feb": 2100,
"mar": 3430
}
}
]
}
]
}
]
I need column chart inside a cell
I found a googlecharts and tried but not able to achieve my requirement.
google.charts.load('current', {
packages: ['corechart', 'table']
}).then(function () {
var data = new google.visualization.DataTable();
data.addColumn('string', 'Category');
data.addColumn('number', 'Name');
data.addColumn('string', 'Chart');
data.addRows([
['Choclate', {v: 10000, f: 'Kisses'}, null],
['Drinks', {v: 12500, f: 'Pepsi'}, null],
['Food', {v: 7000, f: 'Pizza'}, null]
]);
var table = new google.visualization.Table(document.getElementById('table_div'));
google.visualization.events.addListener(table, 'ready', function () {
// table body
Array.prototype.forEach.call(table.getContainer().getElementsByTagName('tbody'), function(tableBody) {
// table rows
Array.prototype.forEach.call(tableBody.rows, function(tableRow, rowIndex) {
// table cells
Array.prototype.forEach.call(tableRow.cells, function(tableCell, cellIndex) {
// determine if last cell
if (cellIndex === (tableRow.cells.length - 1)) {
// add chart continer
var chartContainer = tableCell.appendChild(document.createElement('div'));
chartContainer.className = 'chart';
// build chart data table
var dataChart = new google.visualization.DataTable();
dataChart.addColumn('number', 'x');
dataChart.addColumn('number', 'y');
for (var i = 0; i <= rowIndex; i++) {
dataChart.addRow([i, data.getValue(i, 1)]);
}
// draw chart
var chart = new google.visualization.ColumnChart(chartContainer);
chart.draw(dataChart, {
chartArea: {
left: 24,
top: 16,
right: 24,
bottom: 16,
height: '100%',
width: '100%'
},
height: '100%',
legend: 'none',
pointSize: 6,
width: '100%'
});
}
});
});
});
});
table.draw(data, {showRowNumber: true, width: '60%', height: '70%'});
});
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="table_div"></div>
Even i need to get exact column chart with values i have in my json with pivoted category row as shown in sample image attached.
please suggest someone how can i achieve this.
any chart js is fine like plotly.js or googlecharts or echarts which is javascript library.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在这里,代码是不言自明的,包括注释。
https://jsfiddle.net/sean7777/j7zy165v/81/
Here you go, code is self-explanatory, comments included.
https://jsfiddle.net/sean7777/j7zy165v/81/