如何减少 Chart.JS 条形图中图例和图表之间的间距,并在图形区域中增加间距?
How can I reduce the spacing between my legend and chart proper in my Chart.JS bar chart, and increase it in the graph area?
我正在生成一个 Chart.JS 呈现如下的条形图:
如您所见,图例的底部和 grid/graph 的顶部挤在一起。此外,单独的条形图被挤压在一起,超出了严格的必要性,使得值有点难以阅读;请注意,红色条的左侧和蓝色条的右侧有足够的空间。在象限本身中有很多 space 可以在图例 grid/graph.
之间添加 space 的垫片或 shiv
我怎样才能 "air out" 这些元素使数据更清晰,演示文稿更吸引人?
这是正在使用的代码:
HTML
<div class="row">
<div class="col-md-6">
<div class="bottomleft">
<h2 class="sectiontext">Forecast/Impact Analysis</h2>
<div class="graph_container">
<canvas id="forecastLineChart"></canvas>
</div>
</div>
</div>
. . .
CSS
"row" 和 "col-md-6" class 是 Bootstrap。 "graph_container" 必须是 Chart.JS class(不是我的)。
.bottomleft {
margin-left: 16px;
padding: 16px;
border: 1px solid black;
}
.sectiontext {
font-size: 1.5em;
font-weight: bold;
font-family: Candara, Calibri, Cambria, serif;
color: green;
margin-top: -4px;
}
JAVASCRIPT/jQuery
var ctxForecastChart = $("#forecastLineChart");
var forecastChartData = {
labels: ["Total Sales"],
datasets: [
{
label: "8/28/2016 - 9/3/2016",
backgroundColor: "rgba(255,0,0,0.75)",
hoverBackgroundColor: "rgba(255,0,0,1)",
data: [1631437.17]
},
{
label: "9/4/2016 - 9/10/2016",
backgroundColor: "rgba(255,153,0,0.75)",
hoverBackgroundColor: "rgba(255,153,0,1)",
data: [1523898.94]
},
{
label: "9/11/2016 - 9/17/2016",
backgroundColor: "rgba(255,255,0,0.75)",
hoverBackgroundColor: "rgba(255,255,0,1)",
data: [1755669.93]
},
{
label: "9/18/2016 - 9/24/2016",
backgroundColor: "rgba(0,255,0,0.75)",
hoverBackgroundColor: "rgba(0,255,0,1)",
data: [1873205.42]
},
{
label: "9/25/2016 - 10/1/2016",
backgroundColor: "rgba(0,0,255,0.75)",
hoverBackgroundColor: "rgba(0,0,255,1)",
data: [1838204.79]
}]
};
var forecastOptions = {
tooltips: {
enabled: true
},
animation: {
duration: 500,
easing: "easeOutQuart",
onComplete: function () {
var ctx = this.chart.ctx;
ctx.font
Chart.helpers.fontString(Chart.defaults.global.defaultFontFamily, 'normal'
Chart.defaults.global.defaultFontFamily);
ctx.textAlign = 'center';
ctx.textBaseline = 'bottom';
this.data.datasets.forEach(function (dataset) {
for (var i = 0; i < dataset.data.length; i++) {
var model = dataset._meta[Object.keys(dataset._met
[0]].data[i]._model, scale_max = dataset._meta[Object.keys(dataset._met
[0]].data[i]._yScale.maxHeight;
ctx.fillStyle = '#444';
var y_pos = model.y - 5;
if ((scale_max - model.y) / scale_max >= 0.93)
y_pos = model.y + 20;
ctx.fillText(addCommas(dataset.data[i]), model.x
y_pos);
}
});
}
}
};
var forecastBarChart = new Chart(ctxForecastChart, {
type: 'bar',
data: forecastChartData,
options: forecastOptions
});
更新
这不是一个完整的解决方案,但我通过这种方式对其进行了改进:
<canvas id="forecastLineChart" height="190"></canvas>
IOW,我将高度值添加到 canvas,这样 grid/graph 现在可以更好地填充象限:
它仍然可以使用逗号,也许,用于 y 轴数字,但条形可以水平展开更多。
在您的变量 forecastOptions
中,您只需添加所谓的 scales
选项。
var forecastOptions = {
scales: {
xAxes: [{
barPercentage: 0.7,
categoryPercentage: 1
}]
},
tooltips...
这会调整条形 (barPercentage
) 的宽度以及所有条形的整体宽度 (categoryPercentage
)
您可以将 0.7 更改为您想要的任何宽度。所有条形周围的额外 space 是由于它们属于同一类别,并且该选项默认设置为 0.8,这意味着 5 个条形将仅占整体的 80%。
希望这对您有所帮助
我正在生成一个 Chart.JS 呈现如下的条形图:
如您所见,图例的底部和 grid/graph 的顶部挤在一起。此外,单独的条形图被挤压在一起,超出了严格的必要性,使得值有点难以阅读;请注意,红色条的左侧和蓝色条的右侧有足够的空间。在象限本身中有很多 space 可以在图例 grid/graph.
之间添加 space 的垫片或 shiv我怎样才能 "air out" 这些元素使数据更清晰,演示文稿更吸引人?
这是正在使用的代码:
HTML
<div class="row">
<div class="col-md-6">
<div class="bottomleft">
<h2 class="sectiontext">Forecast/Impact Analysis</h2>
<div class="graph_container">
<canvas id="forecastLineChart"></canvas>
</div>
</div>
</div>
. . .
CSS
"row" 和 "col-md-6" class 是 Bootstrap。 "graph_container" 必须是 Chart.JS class(不是我的)。
.bottomleft {
margin-left: 16px;
padding: 16px;
border: 1px solid black;
}
.sectiontext {
font-size: 1.5em;
font-weight: bold;
font-family: Candara, Calibri, Cambria, serif;
color: green;
margin-top: -4px;
}
JAVASCRIPT/jQuery
var ctxForecastChart = $("#forecastLineChart");
var forecastChartData = {
labels: ["Total Sales"],
datasets: [
{
label: "8/28/2016 - 9/3/2016",
backgroundColor: "rgba(255,0,0,0.75)",
hoverBackgroundColor: "rgba(255,0,0,1)",
data: [1631437.17]
},
{
label: "9/4/2016 - 9/10/2016",
backgroundColor: "rgba(255,153,0,0.75)",
hoverBackgroundColor: "rgba(255,153,0,1)",
data: [1523898.94]
},
{
label: "9/11/2016 - 9/17/2016",
backgroundColor: "rgba(255,255,0,0.75)",
hoverBackgroundColor: "rgba(255,255,0,1)",
data: [1755669.93]
},
{
label: "9/18/2016 - 9/24/2016",
backgroundColor: "rgba(0,255,0,0.75)",
hoverBackgroundColor: "rgba(0,255,0,1)",
data: [1873205.42]
},
{
label: "9/25/2016 - 10/1/2016",
backgroundColor: "rgba(0,0,255,0.75)",
hoverBackgroundColor: "rgba(0,0,255,1)",
data: [1838204.79]
}]
};
var forecastOptions = {
tooltips: {
enabled: true
},
animation: {
duration: 500,
easing: "easeOutQuart",
onComplete: function () {
var ctx = this.chart.ctx;
ctx.font
Chart.helpers.fontString(Chart.defaults.global.defaultFontFamily, 'normal'
Chart.defaults.global.defaultFontFamily);
ctx.textAlign = 'center';
ctx.textBaseline = 'bottom';
this.data.datasets.forEach(function (dataset) {
for (var i = 0; i < dataset.data.length; i++) {
var model = dataset._meta[Object.keys(dataset._met
[0]].data[i]._model, scale_max = dataset._meta[Object.keys(dataset._met
[0]].data[i]._yScale.maxHeight;
ctx.fillStyle = '#444';
var y_pos = model.y - 5;
if ((scale_max - model.y) / scale_max >= 0.93)
y_pos = model.y + 20;
ctx.fillText(addCommas(dataset.data[i]), model.x
y_pos);
}
});
}
}
};
var forecastBarChart = new Chart(ctxForecastChart, {
type: 'bar',
data: forecastChartData,
options: forecastOptions
});
更新
这不是一个完整的解决方案,但我通过这种方式对其进行了改进:
<canvas id="forecastLineChart" height="190"></canvas>
IOW,我将高度值添加到 canvas,这样 grid/graph 现在可以更好地填充象限:
它仍然可以使用逗号,也许,用于 y 轴数字,但条形可以水平展开更多。
在您的变量 forecastOptions
中,您只需添加所谓的 scales
选项。
var forecastOptions = {
scales: {
xAxes: [{
barPercentage: 0.7,
categoryPercentage: 1
}]
},
tooltips...
这会调整条形 (barPercentage
) 的宽度以及所有条形的整体宽度 (categoryPercentage
)
您可以将 0.7 更改为您想要的任何宽度。所有条形周围的额外 space 是由于它们属于同一类别,并且该选项默认设置为 0.8,这意味着 5 个条形将仅占整体的 80%。
希望这对您有所帮助