diff --git a/public/abpm-report-template.html b/public/abpm-report-template.html
index d1d1900..f88189d 100644
--- a/public/abpm-report-template.html
+++ b/public/abpm-report-template.html
@@ -2139,25 +2139,28 @@
const sumY = data.reduce((sum, point) => sum + point[1], 0);
const sumXY = data.reduce((sum, point) => sum + point[0] * point[1], 0);
const sumXX = data.reduce((sum, point) => sum + point[0] * point[0], 0);
-
const slope = (n * sumXY - sumX * sumY) / (n * sumXX - sumX * sumX);
const intercept = (sumY - slope * sumX) / n;
-
return { slope, intercept };
};
-
+ // 计算X轴最大值(向上取整到10的倍数)
+ function getAxisMax(arr) {
+ if (!arr || arr.length === 0) return 120;
+ const max = Math.max(...arr);
+ return Math.ceil(max / 10) * 10;
+ }
// 收缩压与舒张压关系
const bpChart = echarts.init(document.getElementById('scatter-bp-relation'));
const bpData = chartDataTable.map(item => [item.diastolic, item.systolic]);
const bpRegression = calculateLinearRegression(bpData);
-
+ const bpXArr = chartDataTable.map(item => item.diastolic).filter(v => v != null && !isNaN(v));
+ const bpXAxisMax = getAxisMax(bpXArr);
// 生成拟合线数据
const bpFitLineData = [];
- for (let x = 50; x <= 120; x += 10) {
+ for (let x = 40; x <= bpXAxisMax; x += 10) {
const y = bpRegression.slope * x + bpRegression.intercept;
bpFitLineData.push([x, y]);
}
-
const bpOption = {
tooltip: {
trigger: 'item',
@@ -2177,8 +2180,11 @@
xAxis: {
type: 'value',
name: '舒张压(mmHg)',
- min: 50,
- max: 120,
+ min: 40,
+ max: bpXAxisMax,
+ interval: 10,
+ minorTick: { show: true, splitNumber: 5 },
+ minorSplitLine: { show: false },
nameLocation: 'middle',
nameGap: 30,
axisLine: { show: true },
@@ -2219,19 +2225,18 @@
]
};
bpChart.setOption(bpOption);
-
// 心率与收缩压关系
const hrChart = echarts.init(document.getElementById('scatter-hr-relation'));
const hrData = chartDataTable.map(item => [item.heartRate, item.systolic]);
const hrRegression = calculateLinearRegression(hrData);
-
+ const hrXArr = chartDataTable.map(item => item.heartRate).filter(v => v != null && !isNaN(v));
+ const hrXAxisMax = getAxisMax(hrXArr);
// 生成拟合线数据
const hrFitLineData = [];
- for (let x = 50; x <= 120; x += 10) {
+ for (let x = 40; x <= hrXAxisMax; x += 10) {
const y = hrRegression.slope * x + hrRegression.intercept;
hrFitLineData.push([x, y]);
}
-
const hrOption = {
tooltip: {
trigger: 'item',
@@ -2251,8 +2256,11 @@
xAxis: {
type: 'value',
name: '心率(次/分)',
- min: 50,
- max: 120,
+ min: 40,
+ max: hrXAxisMax,
+ interval: 10,
+ minorTick: { show: true, splitNumber: 5 },
+ minorSplitLine: { show: false },
nameLocation: 'middle',
nameGap: 30,
axisLine: { show: true },