图表。 js 形状着色

问题描述 投票:0回答:1

我有一个使用 Chart.js 创建的图表。在此图表中,我有四个点,将这些点连接起来,得到一个四边形,内部颜色为绿色。但这样一来,y轴的点虽然低了却被画得更高了,而正确的地方虽然低了却仍然没有被画。这个未涂漆的区域如何涂漆?

 var ctx = document.getElementById('workingLimitGraph').getContext('2d');
        var minFluidOutletTemp = @Model.SerieLimits.Cooling_MinFluidOutletTemp;
        var maxFluidOutletTemp = @Model.SerieLimits.Cooling_MaxFluidOutletTemp;
        var minAmbientTemp = @Model.SerieLimits.Cooling_MinAmbientTemp;
        var maxAmbientTemp = @Model.SerieLimits.Cooling_MaxAmbientTemp;
        //added/subtracted values to expand chart axis values
        var xAxisMin = minFluidOutletTemp - 5;
        var xAxisMax = maxFluidOutletTemp + 5;
        var yAxisMin = minAmbientTemp - 10;
        var yAxisMax = maxAmbientTemp + 10;

        var myChart = new Chart(ctx, {
            type: 'line',
            data: {
                datasets: [{
                    label: '',
                    data: [
                        { x: minFluidOutletTemp, y: minAmbientTemp },
                        { x: minFluidOutletTemp, y: maxAmbientTemp },
                        { x: maxFluidOutletTemp, y: maxAmbientTemp },
                        { x: maxFluidOutletTemp, y: minAmbientTemp }
                    ],
                    fill: true,
                    backgroundColor: 'rgba(0, 128, 0, 0.3)',
                    borderColor: 'rgba(0, 128, 0, 0.3)',
                    borderWidth: 1,
                    pointRadius: 5,
                    pointBackgroundColor: 'rgba(0, 128, 0, 0.3)',
                    pointBorderColor: 'rgba(0, 128, 0, 0.3)',
                    showLine: true
                }]
            },
            options: {
                maintainAspectRatio: false,
                scales: {
                    x: {
                        title: {
                            display: true,
                            text: 'Water Outlet Temperature (°C)'
                        },
                        ticks: {
                            stepSize: 1,
                            padding: 20,
                        },
                        grid: {
                            display: false
                        },
                        min: xAxisMin,
                        max: xAxisMax,
                        stepSize: 1,
                    },
                    y: {
                        title: {
                            display: true,
                            text: 'Ambient Air Temperature (°C)'
                        },
                        ticks: {
                            stepSize: 10,
                            padding: 20,
                        },
                        min: yAxisMin,
                        max: yAxisMax,
                        stepSize: 10,
                    }
                }
            }
        });

        // X ekseninin etiketlerini oluşturma
        var xAxisLabels = [];
        for (var i = minFluidOutletTemp - 3; i <= maxFluidOutletTemp + 3; i += 1) {
            xAxisLabels.push(i);
        }

        myChart.data.labels = xAxisLabels;
        // Y ekseninin etiketlerini oluşturma
        var yAxisLabels = [];
        for (var i = yAxisMin; i <= yAxisMax; i += 10) {
            yAxisLabels.push(i);
        }
        myChart.options.scales.y.ticks.callback = function (value, index, values) {
            return value;
        };

enter image description here

javascript charts point fill
1个回答
0
投票

确保数据点的正确顺序 例如。

var data = [
{ x: minFluidOutletTemp, y: minAmbientTemp }, // Point 1
{ x: minFluidOutletTemp, y: maxAmbientTemp }, // Point 2
{ x: maxFluidOutletTemp, y: maxAmbientTemp }, // Point 3
{ x: maxFluidOutletTemp, y: minAmbientTemp } // Point 4

];

配置填充选项

fill: true;

指定背景颜色

backgroundColor: 'rgba(0, 128, 0, 0.3)',

确保 y 轴刻度配置正确以适应数据点的范围。这似乎在您的代码中正确设置为 min:

yAxisMin
和 max:
yAxisMax

确保您使用的 Chart.js 版本支持您正在使用的功能。 Chart.js 2.x 及更高版本中很好地支持

fill
选项和数据集配置。

© www.soinside.com 2019 - 2024. All rights reserved.