rapid-spreadjs 1.0.96 → 1.0.98
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs.js +330 -437
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.cjs.min.js +1 -1
- package/dist/index.cjs.min.js.map +1 -1
- package/dist/index.esm.js +330 -437
- package/dist/index.esm.js.map +1 -1
- package/dist/index.esm.min.js +1 -1
- package/dist/index.esm.min.js.map +1 -1
- package/package.json +1 -1
package/dist/index.esm.js
CHANGED
|
@@ -4071,274 +4071,260 @@ const EChartsUtilsAll = {
|
|
|
4071
4071
|
yDataSource1 = yDataArr[0], // [2.25, 2.29, 2.34, 2.29, 2.23],
|
|
4072
4072
|
yDataSource2 = isTwoLine ? yDataArr[1] : []; // [2.27, 2.32, 2.36, 2.33, 2.26];
|
|
4073
4073
|
let title = config.chartTitle, xName = config.chartXName, yName = config.chartYName, legendName = '图例1';
|
|
4074
|
-
|
|
4075
|
-
|
|
4076
|
-
|
|
4077
|
-
|
|
4078
|
-
|
|
4079
|
-
|
|
4080
|
-
|
|
4081
|
-
|
|
4082
|
-
|
|
4083
|
-
|
|
4084
|
-
|
|
4085
|
-
yData.push(yDataSource[index]);
|
|
4086
|
-
}
|
|
4087
|
-
});
|
|
4088
|
-
//y轴没有任何数据的时候,不参与绘制图表
|
|
4089
|
-
if (yData.length == 0) {
|
|
4090
|
-
return;
|
|
4074
|
+
const lineFunc = (xDataSource, yDataSource, isShowMarkPoint, isShowMarkLine, isTwoLineData) => {
|
|
4075
|
+
//原始数据
|
|
4076
|
+
let dxsJs = chartExtJson != null ? chartExtJson.dxsJs : 5, xData = [], yData = [], seriesData = []; //处理原始数据为空的值,不然参与mathjs计算会报错
|
|
4077
|
+
//处理原始数据为空的值,不然参与mathjs计算会报错
|
|
4078
|
+
xDataSource.forEach((item, index) => {
|
|
4079
|
+
if (/^-?\d+(\.\d+)?([eE][+-]?\d+)?$/.test(item) &&
|
|
4080
|
+
item != 0 &&
|
|
4081
|
+
/^-?\d+(\.\d+)?([eE][+-]?\d+)?$/.test(yDataSource[index]) &&
|
|
4082
|
+
yDataSource[index] != 0) {
|
|
4083
|
+
xData.push(item);
|
|
4084
|
+
yData.push(yDataSource[index]);
|
|
4091
4085
|
}
|
|
4092
|
-
|
|
4093
|
-
|
|
4086
|
+
});
|
|
4087
|
+
//y轴没有任何数据的时候,不参与绘制图表
|
|
4088
|
+
if (yData.length == 0) {
|
|
4089
|
+
return;
|
|
4090
|
+
}
|
|
4091
|
+
if (dxsJs >= yData.length) {
|
|
4092
|
+
dxsJs = yData.length - 1;
|
|
4093
|
+
}
|
|
4094
|
+
let xMin = Math.min(...xData), xMax = Math.max(...xData), yMin = Math.min(...yData), yMax = Math.max(...yData), xAxisMax = Math.ceil(xMax + 0.1), xAxisMin = Math.trunc(xMin - 0.1), yAxisMax = Number(EChartsUtilsComm.getRound(yMax + 0.02, 0.01)), yAxisMin = Number(EChartsUtilsComm.getRound(yMin - 0.02, 0.01));
|
|
4095
|
+
//如果界面设置了校正最佳含水率和最大干密度,则显示界面中的顶点坐标(此时就不显示辅助线了)
|
|
4096
|
+
let cellValJzZjhsl, cellValJzZdgmd;
|
|
4097
|
+
if (chartExtJson != null && chartExtJson.jsIsJz) {
|
|
4098
|
+
if (chartExtJson.jsZjhslJz != null && chartExtJson.jsZjhslJz != undefined) {
|
|
4099
|
+
cellValJzZjhsl = sheet.getValue(chartExtJson.jsZjhslJz.row, chartExtJson.jsZjhslJz.col);
|
|
4094
4100
|
}
|
|
4095
|
-
|
|
4096
|
-
|
|
4097
|
-
|
|
4098
|
-
|
|
4099
|
-
|
|
4100
|
-
|
|
4101
|
-
}
|
|
4102
|
-
if (chartExtJson.jsZdgmdJz != null && chartExtJson.jsZdgmdJz != undefined) {
|
|
4103
|
-
cellValJzZdgmd = sheet.getValue(chartExtJson.jsZdgmdJz.row, chartExtJson.jsZdgmdJz.col);
|
|
4104
|
-
}
|
|
4105
|
-
//如果界面输入的最大干密度大于了y轴最大值,则需要重新设置y轴的最大值
|
|
4106
|
-
if (/^-?\d+(\.\d+)?([eE][+-]?\d+)?$/.test(cellValJzZdgmd) && cellValJzZdgmd > yAxisMax) {
|
|
4107
|
-
yAxisMax = Number(EChartsUtilsComm.getRound(cellValJzZdgmd + 0.02, 0.01));
|
|
4108
|
-
}
|
|
4101
|
+
if (chartExtJson.jsZdgmdJz != null && chartExtJson.jsZdgmdJz != undefined) {
|
|
4102
|
+
cellValJzZdgmd = sheet.getValue(chartExtJson.jsZdgmdJz.row, chartExtJson.jsZdgmdJz.col);
|
|
4103
|
+
}
|
|
4104
|
+
//如果界面输入的最大干密度大于了y轴最大值,则需要重新设置y轴的最大值
|
|
4105
|
+
if (/^-?\d+(\.\d+)?([eE][+-]?\d+)?$/.test(cellValJzZdgmd) && cellValJzZdgmd > yAxisMax) {
|
|
4106
|
+
yAxisMax = Number(EChartsUtilsComm.getRound(cellValJzZdgmd + 0.02, 0.01));
|
|
4109
4107
|
}
|
|
4110
|
-
|
|
4111
|
-
|
|
4112
|
-
|
|
4108
|
+
}
|
|
4109
|
+
let points = [];
|
|
4110
|
+
xData.forEach((item, index) => {
|
|
4111
|
+
points.push([item, yData[index]]);
|
|
4112
|
+
});
|
|
4113
|
+
// 构造范德蒙德矩阵的函数
|
|
4114
|
+
function vandermondeMatrix(x, N) {
|
|
4115
|
+
const matrix = [];
|
|
4116
|
+
for (let i = 0; i < x.length; i++) {
|
|
4117
|
+
const row = [];
|
|
4118
|
+
for (let j = 0; j <= N; j++) {
|
|
4119
|
+
// 注意这里从0到N,包含N
|
|
4120
|
+
row.push(math.pow(x[i], j));
|
|
4121
|
+
}
|
|
4122
|
+
matrix.push(row);
|
|
4123
|
+
}
|
|
4124
|
+
return math.matrix(matrix);
|
|
4125
|
+
}
|
|
4126
|
+
// 构造原始的范德蒙德矩阵
|
|
4127
|
+
const vandermonde_matrix = vandermondeMatrix(xData, dxsJs); // 注意这里N=4,因为我们从0开始计数
|
|
4128
|
+
// 使用最小二乘法求解
|
|
4129
|
+
const A = vandermonde_matrix;
|
|
4130
|
+
const AT = math.transpose(A);
|
|
4131
|
+
const ATA = math.multiply(AT, A);
|
|
4132
|
+
const ATb = math.multiply(AT, math.matrix(yData));
|
|
4133
|
+
// 解线性方程组
|
|
4134
|
+
let result = null, coefficients = [];
|
|
4135
|
+
try {
|
|
4136
|
+
result = math.lusolve(ATA, ATb);
|
|
4137
|
+
coefficients = result.valueOf();
|
|
4138
|
+
}
|
|
4139
|
+
catch (err) {
|
|
4140
|
+
for (let index = 0; index < xData.length; index++) {
|
|
4141
|
+
coefficients.push([0]);
|
|
4142
|
+
}
|
|
4143
|
+
// console.log('无法解决该线性系统');
|
|
4144
|
+
}
|
|
4145
|
+
// const result = math.lusolve(ATA, ATb);
|
|
4146
|
+
// const coefficients = result.valueOf();
|
|
4147
|
+
function funequation(x) {
|
|
4148
|
+
let y = 0;
|
|
4149
|
+
coefficients.forEach((item, index) => {
|
|
4150
|
+
//fx^0
|
|
4151
|
+
//fx^0+ax^1
|
|
4152
|
+
//fx^0+ax^1+bx^2
|
|
4153
|
+
//fx^0+ax^1+bx^2+cx^3
|
|
4154
|
+
//fx^0+x^1+x^2+x^3+x^4
|
|
4155
|
+
y += item * Math.pow(x, index);
|
|
4113
4156
|
});
|
|
4114
|
-
|
|
4115
|
-
|
|
4116
|
-
|
|
4117
|
-
|
|
4118
|
-
|
|
4119
|
-
|
|
4120
|
-
|
|
4121
|
-
|
|
4122
|
-
|
|
4123
|
-
|
|
4124
|
-
|
|
4125
|
-
|
|
4126
|
-
|
|
4127
|
-
|
|
4128
|
-
|
|
4129
|
-
|
|
4130
|
-
|
|
4131
|
-
|
|
4132
|
-
|
|
4133
|
-
|
|
4134
|
-
|
|
4135
|
-
|
|
4136
|
-
|
|
4137
|
-
|
|
4138
|
-
|
|
4139
|
-
|
|
4140
|
-
|
|
4141
|
-
|
|
4142
|
-
|
|
4143
|
-
|
|
4144
|
-
|
|
4145
|
-
|
|
4146
|
-
|
|
4147
|
-
|
|
4148
|
-
function funequation(x) {
|
|
4149
|
-
let y = 0;
|
|
4150
|
-
coefficients.forEach((item, index) => {
|
|
4151
|
-
//fx^0
|
|
4152
|
-
//fx^0+ax^1
|
|
4153
|
-
//fx^0+ax^1+bx^2
|
|
4154
|
-
//fx^0+ax^1+bx^2+cx^3
|
|
4155
|
-
//fx^0+x^1+x^2+x^3+x^4
|
|
4156
|
-
y += item * Math.pow(x, index);
|
|
4157
|
-
});
|
|
4158
|
-
return y;
|
|
4157
|
+
return y;
|
|
4158
|
+
}
|
|
4159
|
+
// x=[3.5, 4, 4.5, 5, 5.5,6 ],y= [2.262, 2.321, 2.319, 2.292, 2.285, 2.28]
|
|
4160
|
+
let arrX = [];
|
|
4161
|
+
let arrY = [];
|
|
4162
|
+
for (let i = xMin; i <= xMax; i += 0.01) {
|
|
4163
|
+
let temp = Number(EChartsUtilsComm.getRound(i, 0.01));
|
|
4164
|
+
//重新设置i,防止i丢失精度
|
|
4165
|
+
i = Number(temp);
|
|
4166
|
+
//arrY.push(lagrangeInterpolation(points, temp));
|
|
4167
|
+
arrY.push(funequation(temp));
|
|
4168
|
+
arrX.push(temp);
|
|
4169
|
+
}
|
|
4170
|
+
let max = Math.max(...arrY);
|
|
4171
|
+
// 找到最大值的索引
|
|
4172
|
+
let maxIndex = arrY.findIndex((value) => value === max);
|
|
4173
|
+
// console.log('最大点数据:', arrX[maxIndex], max);
|
|
4174
|
+
// console.log(chartExtJson);
|
|
4175
|
+
//默认输出精度
|
|
4176
|
+
let outJdZjhsl = 0.01, outJdZdgmd = 0.001;
|
|
4177
|
+
//顶点数据
|
|
4178
|
+
let outValZjhsl = 0, outValZdgmd = 0;
|
|
4179
|
+
//设置Sheet单元格的值(最佳含水率和最大干密度)
|
|
4180
|
+
if (chartExtJson != null) {
|
|
4181
|
+
// console.log(4444, chartExtJson.jsZjhsl.row, chartExtJson.jsZjhsl.col, arrX[maxIndex]);
|
|
4182
|
+
if (chartExtJson.jsZjhslJd != null && chartExtJson.jsZjhslJd != undefined) {
|
|
4183
|
+
outJdZjhsl = chartExtJson.jsZjhslJd;
|
|
4184
|
+
}
|
|
4185
|
+
if (chartExtJson.jsZdgmdJd != null && chartExtJson.jsZdgmdJd != undefined) {
|
|
4186
|
+
outJdZdgmd = chartExtJson.jsZdgmdJd;
|
|
4187
|
+
}
|
|
4188
|
+
if (arrX[maxIndex] == 0 && max == 0) {
|
|
4189
|
+
sheet.setValue(chartExtJson.jsZjhsl.row, chartExtJson.jsZjhsl.col, '/');
|
|
4190
|
+
sheet.setValue(chartExtJson.jsZdgmd.row, chartExtJson.jsZdgmd.col, '/');
|
|
4159
4191
|
}
|
|
4160
|
-
|
|
4161
|
-
|
|
4162
|
-
|
|
4163
|
-
|
|
4164
|
-
|
|
4165
|
-
let xi = points[i][0];
|
|
4166
|
-
for (let j = 0; j < points.length; j++) {
|
|
4167
|
-
if (j !== i) {
|
|
4168
|
-
let xj = points[j][0];
|
|
4169
|
-
term *= (x - xj) / (xi - xj);
|
|
4170
|
-
}
|
|
4171
|
-
}
|
|
4172
|
-
result += term;
|
|
4173
|
-
}
|
|
4174
|
-
return result;
|
|
4192
|
+
else {
|
|
4193
|
+
outValZjhsl = EChartsUtilsComm.getRound(arrX[maxIndex], outJdZjhsl);
|
|
4194
|
+
outValZdgmd = EChartsUtilsComm.getRound(max, outJdZdgmd);
|
|
4195
|
+
sheet.setValue(chartExtJson.jsZjhsl.row, chartExtJson.jsZjhsl.col, outValZjhsl);
|
|
4196
|
+
sheet.setValue(chartExtJson.jsZdgmd.row, chartExtJson.jsZdgmd.col, outValZdgmd);
|
|
4175
4197
|
}
|
|
4176
|
-
|
|
4177
|
-
|
|
4178
|
-
|
|
4179
|
-
|
|
4180
|
-
let temp = Number(EChartsUtilsComm.getRound(i, 0.01));
|
|
4181
|
-
//重新设置i,防止i丢失精度
|
|
4182
|
-
i = Number(temp);
|
|
4183
|
-
//arrY.push(lagrangeInterpolation(points, temp));
|
|
4184
|
-
arrY.push(funequation(temp));
|
|
4185
|
-
arrX.push(temp);
|
|
4186
|
-
}
|
|
4187
|
-
let max = Math.max(...arrY);
|
|
4188
|
-
// 找到最大值的索引
|
|
4189
|
-
let maxIndex = arrY.findIndex((value) => value === max);
|
|
4190
|
-
// console.log('最大点数据:', arrX[maxIndex], max);
|
|
4191
|
-
// console.log(chartExtJson);
|
|
4192
|
-
//默认输出精度
|
|
4193
|
-
let outJdZjhsl = 0.01, outJdZdgmd = 0.001;
|
|
4194
|
-
//顶点数据
|
|
4195
|
-
let outValZjhsl = 0, outValZdgmd = 0;
|
|
4196
|
-
//设置Sheet单元格的值(最佳含水率和最大干密度)
|
|
4197
|
-
if (chartExtJson != null) {
|
|
4198
|
-
// console.log(4444, chartExtJson.jsZjhsl.row, chartExtJson.jsZjhsl.col, arrX[maxIndex]);
|
|
4199
|
-
if (chartExtJson.jsZjhslJd != null && chartExtJson.jsZjhslJd != undefined) {
|
|
4200
|
-
outJdZjhsl = chartExtJson.jsZjhslJd;
|
|
4201
|
-
}
|
|
4202
|
-
if (chartExtJson.jsZdgmdJd != null && chartExtJson.jsZdgmdJd != undefined) {
|
|
4203
|
-
outJdZdgmd = chartExtJson.jsZdgmdJd;
|
|
4204
|
-
}
|
|
4205
|
-
if (arrX[maxIndex] == 0 && max == 0) {
|
|
4206
|
-
sheet.setValue(chartExtJson.jsZjhsl.row, chartExtJson.jsZjhsl.col, '/');
|
|
4207
|
-
sheet.setValue(chartExtJson.jsZdgmd.row, chartExtJson.jsZdgmd.col, '/');
|
|
4208
|
-
}
|
|
4209
|
-
else {
|
|
4210
|
-
outValZjhsl = EChartsUtilsComm.getRound(arrX[maxIndex], outJdZjhsl);
|
|
4211
|
-
outValZdgmd = EChartsUtilsComm.getRound(max, outJdZdgmd);
|
|
4212
|
-
sheet.setValue(chartExtJson.jsZjhsl.row, chartExtJson.jsZjhsl.col, outValZjhsl);
|
|
4213
|
-
sheet.setValue(chartExtJson.jsZdgmd.row, chartExtJson.jsZdgmd.col, outValZdgmd);
|
|
4214
|
-
}
|
|
4198
|
+
}
|
|
4199
|
+
arrX.forEach((item, index) => {
|
|
4200
|
+
if (xData.includes(item)) {
|
|
4201
|
+
seriesData.push({ value: [item, arrY[index]] });
|
|
4215
4202
|
}
|
|
4216
|
-
|
|
4217
|
-
|
|
4218
|
-
|
|
4219
|
-
|
|
4220
|
-
|
|
4221
|
-
|
|
4222
|
-
|
|
4223
|
-
|
|
4224
|
-
|
|
4225
|
-
|
|
4226
|
-
|
|
4227
|
-
|
|
4228
|
-
|
|
4229
|
-
|
|
4230
|
-
|
|
4231
|
-
|
|
4232
|
-
|
|
4233
|
-
|
|
4234
|
-
|
|
4235
|
-
|
|
4236
|
-
|
|
4237
|
-
|
|
4238
|
-
|
|
4239
|
-
|
|
4240
|
-
|
|
4241
|
-
|
|
4242
|
-
|
|
4243
|
-
|
|
4244
|
-
|
|
4245
|
-
|
|
4246
|
-
|
|
4247
|
-
}
|
|
4248
|
-
else {
|
|
4249
|
-
return '( ' + data.data.xAxis + ',' + data.data.yAxis + ')';
|
|
4250
|
-
}
|
|
4251
|
-
},
|
|
4203
|
+
else {
|
|
4204
|
+
seriesData.push({
|
|
4205
|
+
value: [item, arrY[index]],
|
|
4206
|
+
symbol: 'none',
|
|
4207
|
+
});
|
|
4208
|
+
}
|
|
4209
|
+
});
|
|
4210
|
+
//xData.forEach((item, index) => {
|
|
4211
|
+
//seriesData.push([item, yData[index]]);
|
|
4212
|
+
//});
|
|
4213
|
+
//计算峰值----目前没有公式 值写死的
|
|
4214
|
+
const peakvalue = [arrX[maxIndex], Number(EChartsUtilsComm.getRound(max, outJdZdgmd))], coordX = [peakvalue[0], yAxisMin], coordY = [xAxisMin, peakvalue[1]];
|
|
4215
|
+
let markPointObj = {
|
|
4216
|
+
data: [
|
|
4217
|
+
{
|
|
4218
|
+
xAxis: EChartsUtilsComm.getRound(peakvalue[0], outJdZjhsl),
|
|
4219
|
+
yAxis: EChartsUtilsComm.getRound(peakvalue[1], outJdZdgmd),
|
|
4220
|
+
symbolOffset: [0, 15],
|
|
4221
|
+
symbol: 'circle',
|
|
4222
|
+
symbolSize: 6,
|
|
4223
|
+
label: {
|
|
4224
|
+
show: true,
|
|
4225
|
+
color: '#000',
|
|
4226
|
+
formatter: function (data) {
|
|
4227
|
+
// 自定义标签内容
|
|
4228
|
+
if (Number(data.data.xAxis) == 0 && Number(data.data.yAxis) == 0) {
|
|
4229
|
+
return '';
|
|
4230
|
+
}
|
|
4231
|
+
else {
|
|
4232
|
+
return '( ' + data.data.xAxis + ',' + data.data.yAxis + ')';
|
|
4233
|
+
}
|
|
4252
4234
|
},
|
|
4253
|
-
itemStyle: { color: 'transparent' },
|
|
4254
|
-
},
|
|
4255
|
-
],
|
|
4256
|
-
}, markLineObj = {
|
|
4257
|
-
symbol: ['none', 'none'], //去掉箭头
|
|
4258
|
-
itemStyle: {
|
|
4259
|
-
lineStyle: {
|
|
4260
|
-
type: 'solid',
|
|
4261
|
-
color: '#333',
|
|
4262
|
-
width: 2,
|
|
4263
4235
|
},
|
|
4236
|
+
itemStyle: { color: 'transparent' },
|
|
4264
4237
|
},
|
|
4265
|
-
|
|
4266
|
-
|
|
4267
|
-
|
|
4268
|
-
|
|
4269
|
-
|
|
4270
|
-
|
|
4271
|
-
|
|
4272
|
-
|
|
4273
|
-
|
|
4274
|
-
|
|
4275
|
-
|
|
4276
|
-
|
|
4277
|
-
|
|
4278
|
-
|
|
4279
|
-
{
|
|
4280
|
-
|
|
4281
|
-
|
|
4282
|
-
color: '#333', //y轴
|
|
4283
|
-
type: 'dashed',
|
|
4284
|
-
},
|
|
4238
|
+
],
|
|
4239
|
+
}, markLineObj = {
|
|
4240
|
+
symbol: ['none', 'none'], //去掉箭头
|
|
4241
|
+
itemStyle: {
|
|
4242
|
+
lineStyle: {
|
|
4243
|
+
type: 'solid',
|
|
4244
|
+
color: '#333',
|
|
4245
|
+
width: 2,
|
|
4246
|
+
},
|
|
4247
|
+
},
|
|
4248
|
+
data: [
|
|
4249
|
+
[
|
|
4250
|
+
{
|
|
4251
|
+
coord: coordX,
|
|
4252
|
+
lineStyle: {
|
|
4253
|
+
color: '#333', //X轴
|
|
4254
|
+
type: 'dashed',
|
|
4285
4255
|
},
|
|
4286
|
-
|
|
4287
|
-
|
|
4256
|
+
},
|
|
4257
|
+
{
|
|
4258
|
+
coord: peakvalue,
|
|
4259
|
+
},
|
|
4260
|
+
],
|
|
4261
|
+
[
|
|
4262
|
+
{
|
|
4263
|
+
coord: coordY,
|
|
4264
|
+
lineStyle: {
|
|
4265
|
+
color: '#333', //y轴
|
|
4266
|
+
type: 'dashed',
|
|
4288
4267
|
},
|
|
4289
|
-
|
|
4268
|
+
},
|
|
4269
|
+
{
|
|
4270
|
+
coord: peakvalue,
|
|
4271
|
+
},
|
|
4290
4272
|
],
|
|
4291
|
-
|
|
4292
|
-
//如果界面设置了校正最佳含水率和最大干密度,则显示界面中的顶点坐标(此时就不显示辅助线了)
|
|
4293
|
-
if (chartExtJson.jsIsJz && /^-?\d+(\.\d+)?([eE][+-]?\d+)?$/.test(cellValJzZjhsl) && /^-?\d+(\.\d+)?([eE][+-]?\d+)?$/.test(cellValJzZdgmd)) {
|
|
4294
|
-
markLineObj = null;
|
|
4295
|
-
markPointObj.data[0].label = null;
|
|
4296
|
-
markPointObj.data[0].symbolOffset = null;
|
|
4297
|
-
markPointObj.data[0].itemStyle.color = '#F56C6C';
|
|
4298
|
-
markPointObj.data[0].xAxis = cellValJzZjhsl;
|
|
4299
|
-
markPointObj.data[0].yAxis = cellValJzZdgmd;
|
|
4300
|
-
markLineObj = null;
|
|
4301
|
-
}
|
|
4302
|
-
let seriesDataObj = {
|
|
4303
|
-
name: legendName,
|
|
4304
|
-
type: 'line',
|
|
4305
|
-
smooth: true, //平滑的线条
|
|
4306
|
-
//设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol
|
|
4307
|
-
symbol: 'circle', //符号类型
|
|
4308
|
-
symbolSize: 6, //符号大小
|
|
4309
|
-
//线条的颜色
|
|
4310
|
-
lineStyle: {
|
|
4311
|
-
color: lineData[isTwoLineData ? 1 : 0].lineColor,
|
|
4312
|
-
//线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)
|
|
4313
|
-
type: isTwoLineData ? 'dotted' : 'solid',
|
|
4314
|
-
},
|
|
4315
|
-
//线条上数据点的颜色
|
|
4316
|
-
itemStyle: {
|
|
4317
|
-
color: lineData[isTwoLineData ? 1 : 0].lineColor,
|
|
4318
|
-
},
|
|
4319
|
-
data: seriesData,
|
|
4320
|
-
markPoint: isShowMarkPoint ? markPointObj : null,
|
|
4321
|
-
markLine: isShowMarkLine ? markLineObj : null,
|
|
4322
|
-
};
|
|
4323
|
-
return {
|
|
4324
|
-
xAxisMin: xAxisMin,
|
|
4325
|
-
xAxisMax: xAxisMax,
|
|
4326
|
-
yAxisMin: yAxisMin,
|
|
4327
|
-
yAxisMax: yAxisMax,
|
|
4328
|
-
xData: xData,
|
|
4329
|
-
seriesDataObj: seriesDataObj,
|
|
4330
|
-
maxPointData: [arrX[maxIndex], max],
|
|
4331
|
-
};
|
|
4273
|
+
],
|
|
4332
4274
|
};
|
|
4333
|
-
|
|
4334
|
-
|
|
4335
|
-
|
|
4336
|
-
|
|
4337
|
-
|
|
4338
|
-
|
|
4339
|
-
|
|
4340
|
-
|
|
4341
|
-
|
|
4275
|
+
//如果界面设置了校正最佳含水率和最大干密度,则显示界面中的顶点坐标(此时就不显示辅助线了)
|
|
4276
|
+
if (chartExtJson.jsIsJz && /^-?\d+(\.\d+)?([eE][+-]?\d+)?$/.test(cellValJzZjhsl) && /^-?\d+(\.\d+)?([eE][+-]?\d+)?$/.test(cellValJzZdgmd)) {
|
|
4277
|
+
markLineObj = null;
|
|
4278
|
+
markPointObj.data[0].label = null;
|
|
4279
|
+
markPointObj.data[0].symbolOffset = null;
|
|
4280
|
+
markPointObj.data[0].itemStyle.color = '#F56C6C';
|
|
4281
|
+
markPointObj.data[0].xAxis = cellValJzZjhsl;
|
|
4282
|
+
markPointObj.data[0].yAxis = cellValJzZdgmd;
|
|
4283
|
+
markLineObj = null;
|
|
4284
|
+
}
|
|
4285
|
+
let seriesDataObj = {
|
|
4286
|
+
name: legendName,
|
|
4287
|
+
type: 'line',
|
|
4288
|
+
smooth: true, //平滑的线条
|
|
4289
|
+
//设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol
|
|
4290
|
+
symbol: 'circle', //符号类型
|
|
4291
|
+
symbolSize: 6, //符号大小
|
|
4292
|
+
//线条的颜色
|
|
4293
|
+
lineStyle: {
|
|
4294
|
+
color: lineData[isTwoLineData ? 1 : 0].lineColor,
|
|
4295
|
+
//线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)
|
|
4296
|
+
type: isTwoLineData ? 'dotted' : 'solid',
|
|
4297
|
+
},
|
|
4298
|
+
//线条上数据点的颜色
|
|
4299
|
+
itemStyle: {
|
|
4300
|
+
color: lineData[isTwoLineData ? 1 : 0].lineColor,
|
|
4301
|
+
},
|
|
4302
|
+
data: seriesData,
|
|
4303
|
+
markPoint: isShowMarkPoint ? markPointObj : null,
|
|
4304
|
+
markLine: isShowMarkLine ? markLineObj : null,
|
|
4305
|
+
};
|
|
4306
|
+
return {
|
|
4307
|
+
xAxisMin: xAxisMin,
|
|
4308
|
+
xAxisMax: xAxisMax,
|
|
4309
|
+
yAxisMin: yAxisMin,
|
|
4310
|
+
yAxisMax: yAxisMax,
|
|
4311
|
+
xData: xData,
|
|
4312
|
+
seriesDataObj: seriesDataObj,
|
|
4313
|
+
maxPointData: [arrX[maxIndex], max],
|
|
4314
|
+
};
|
|
4315
|
+
};
|
|
4316
|
+
let xAxisMin = 0, xAxisMax = 0, yAxisMin = 0, yAxisMax = 0, xData = [], seriesData = [], maxPointDataX = 0, maxPointDataY = 0;
|
|
4317
|
+
let lineObj1 = lineFunc(xDataSource1, yDataSource1, !isTwoLine, !isTwoLine, false), lineObj2;
|
|
4318
|
+
if (isTwoLine) {
|
|
4319
|
+
lineObj2 = lineFunc(xDataSource2, yDataSource2, false, false, true);
|
|
4320
|
+
}
|
|
4321
|
+
//判断数据是否为/,‘’,null,undefined
|
|
4322
|
+
let yValIsAllNull = false;
|
|
4323
|
+
//此处的作用是,有可能x和y轴的数据都为空,造成lineObj1为undefined,避免报错
|
|
4324
|
+
if (lineObj1 == undefined || lineObj1 == null) {
|
|
4325
|
+
yValIsAllNull = true;
|
|
4326
|
+
}
|
|
4327
|
+
if (!yValIsAllNull) {
|
|
4342
4328
|
//一条线的时候
|
|
4343
4329
|
if (!isTwoLine) {
|
|
4344
4330
|
xAxisMin = lineObj1.xAxisMin;
|
|
@@ -4409,201 +4395,108 @@ const EChartsUtilsAll = {
|
|
|
4409
4395
|
}
|
|
4410
4396
|
}
|
|
4411
4397
|
}
|
|
4412
|
-
|
|
4413
|
-
|
|
4414
|
-
|
|
4415
|
-
|
|
4416
|
-
return ele == 0;
|
|
4417
|
-
});
|
|
4398
|
+
}
|
|
4399
|
+
seriesData.forEach((item) => {
|
|
4400
|
+
yValIsAllNull = item.data[0].value.every((ele) => {
|
|
4401
|
+
return ele == 0;
|
|
4418
4402
|
});
|
|
4419
|
-
|
|
4420
|
-
|
|
4421
|
-
|
|
4422
|
-
|
|
4423
|
-
|
|
4424
|
-
|
|
4425
|
-
|
|
4426
|
-
|
|
4427
|
-
|
|
4428
|
-
|
|
4429
|
-
|
|
4430
|
-
|
|
4431
|
-
|
|
4432
|
-
|
|
4433
|
-
|
|
4434
|
-
|
|
4435
|
-
|
|
4436
|
-
|
|
4437
|
-
|
|
4438
|
-
|
|
4439
|
-
|
|
4440
|
-
|
|
4441
|
-
|
|
4442
|
-
|
|
4443
|
-
|
|
4444
|
-
|
|
4403
|
+
});
|
|
4404
|
+
if (yValIsAllNull) {
|
|
4405
|
+
xAxisMin = null;
|
|
4406
|
+
xAxisMax = null;
|
|
4407
|
+
yAxisMin = null;
|
|
4408
|
+
yAxisMax = null;
|
|
4409
|
+
seriesData = [];
|
|
4410
|
+
}
|
|
4411
|
+
let option = {
|
|
4412
|
+
grid: {
|
|
4413
|
+
// show: true,//是否显示外边框线
|
|
4414
|
+
// borderColor: '#f00',//外边框线颜色
|
|
4415
|
+
top: 25,
|
|
4416
|
+
left: !yValIsAllNull ? 30 : 25,
|
|
4417
|
+
right: 10,
|
|
4418
|
+
bottom: 20,
|
|
4419
|
+
containLabel: true,
|
|
4420
|
+
},
|
|
4421
|
+
//提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip
|
|
4422
|
+
tooltip: {
|
|
4423
|
+
trigger: 'axis',
|
|
4424
|
+
formatter: function (datas, ticket) {
|
|
4425
|
+
//console.log(datas," datas")
|
|
4426
|
+
return datas && datas.length > 0
|
|
4427
|
+
? datas[0].seriesName + '(' + datas[0].value[0] + ')' + ':' + Number(EChartsUtilsComm.getRound(datas[0].value[1], 0.001))
|
|
4428
|
+
: datas[0].data;
|
|
4445
4429
|
},
|
|
4446
|
-
|
|
4447
|
-
|
|
4448
|
-
|
|
4449
|
-
|
|
4450
|
-
|
|
4451
|
-
|
|
4452
|
-
|
|
4453
|
-
|
|
4454
|
-
|
|
4455
|
-
|
|
4456
|
-
|
|
4457
|
-
},
|
|
4458
|
-
{
|
|
4459
|
-
show: true,
|
|
4460
|
-
text: xName,
|
|
4461
|
-
left: 'center',
|
|
4462
|
-
bottom: 0,
|
|
4463
|
-
textStyle: {
|
|
4464
|
-
fontSize: 12,
|
|
4465
|
-
fontWeight: 'normal',
|
|
4466
|
-
},
|
|
4467
|
-
},
|
|
4468
|
-
],
|
|
4469
|
-
//图例,参考文档:https://echarts.apache.org/zh/option.html#legend
|
|
4470
|
-
legend: {
|
|
4471
|
-
show: false,
|
|
4472
|
-
left: 'right',
|
|
4473
|
-
data: [legendName],
|
|
4474
|
-
selected: {
|
|
4475
|
-
legendName: true, //显示
|
|
4430
|
+
},
|
|
4431
|
+
//顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title
|
|
4432
|
+
title: [
|
|
4433
|
+
{
|
|
4434
|
+
show: true,
|
|
4435
|
+
text: title,
|
|
4436
|
+
left: 'center',
|
|
4437
|
+
top: 0,
|
|
4438
|
+
textStyle: {
|
|
4439
|
+
fontSize: 14,
|
|
4440
|
+
fontWeight: 'normal',
|
|
4476
4441
|
},
|
|
4477
|
-
selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)
|
|
4478
4442
|
},
|
|
4479
|
-
|
|
4480
|
-
|
|
4481
|
-
|
|
4482
|
-
|
|
4483
|
-
|
|
4484
|
-
|
|
4485
|
-
|
|
4443
|
+
{
|
|
4444
|
+
show: true,
|
|
4445
|
+
text: xName,
|
|
4446
|
+
left: 'center',
|
|
4447
|
+
bottom: 0,
|
|
4448
|
+
textStyle: {
|
|
4449
|
+
fontSize: 12,
|
|
4450
|
+
fontWeight: 'normal',
|
|
4486
4451
|
},
|
|
4487
|
-
splitLine: { show: true },
|
|
4488
4452
|
},
|
|
4489
|
-
|
|
4490
|
-
|
|
4491
|
-
|
|
4492
|
-
|
|
4493
|
-
|
|
4494
|
-
|
|
4495
|
-
|
|
4496
|
-
|
|
4497
|
-
nameLocation: 'middle',
|
|
4498
|
-
splitLine: {
|
|
4499
|
-
show: true,
|
|
4500
|
-
lineStyle: {
|
|
4501
|
-
color: '#e0e6f1', //'#e0e6f1',
|
|
4502
|
-
type: 'solid',
|
|
4503
|
-
},
|
|
4504
|
-
},
|
|
4505
|
-
//splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……
|
|
4506
|
-
axisLine: {
|
|
4507
|
-
//设置y轴箭头效果
|
|
4508
|
-
show: true, //y轴默认是不显示的
|
|
4509
|
-
},
|
|
4510
|
-
},
|
|
4511
|
-
],
|
|
4512
|
-
series: seriesData,
|
|
4513
|
-
};
|
|
4514
|
-
return option;
|
|
4515
|
-
}
|
|
4516
|
-
catch (error) {
|
|
4517
|
-
let option = {
|
|
4518
|
-
grid: {
|
|
4519
|
-
// show: true,//是否显示外边框线
|
|
4520
|
-
// borderColor: '#f00',//外边框线颜色
|
|
4521
|
-
top: 25,
|
|
4522
|
-
left: 25,
|
|
4523
|
-
right: 10,
|
|
4524
|
-
bottom: 20,
|
|
4525
|
-
containLabel: true,
|
|
4526
|
-
},
|
|
4527
|
-
//提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip
|
|
4528
|
-
tooltip: {
|
|
4529
|
-
trigger: 'axis',
|
|
4530
|
-
formatter: function (datas, ticket) {
|
|
4531
|
-
//console.log(datas," datas")
|
|
4532
|
-
return datas && datas.length > 0
|
|
4533
|
-
? datas[0].seriesName + '(' + datas[0].value[0] + ')' + ':' + Number(EChartsUtilsComm.getRound(datas[0].value[1], 0.001))
|
|
4534
|
-
: datas[0].data;
|
|
4535
|
-
},
|
|
4453
|
+
],
|
|
4454
|
+
//图例,参考文档:https://echarts.apache.org/zh/option.html#legend
|
|
4455
|
+
legend: {
|
|
4456
|
+
show: false,
|
|
4457
|
+
left: 'right',
|
|
4458
|
+
data: [legendName],
|
|
4459
|
+
selected: {
|
|
4460
|
+
legendName: true, //显示
|
|
4536
4461
|
},
|
|
4537
|
-
|
|
4538
|
-
|
|
4539
|
-
|
|
4540
|
-
|
|
4541
|
-
|
|
4542
|
-
|
|
4543
|
-
|
|
4544
|
-
|
|
4545
|
-
|
|
4546
|
-
|
|
4547
|
-
|
|
4548
|
-
|
|
4549
|
-
|
|
4462
|
+
selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)
|
|
4463
|
+
},
|
|
4464
|
+
xAxis: {
|
|
4465
|
+
type: 'value',
|
|
4466
|
+
max: xAxisMax,
|
|
4467
|
+
min: xAxisMin,
|
|
4468
|
+
data: xData,
|
|
4469
|
+
axisTick: {
|
|
4470
|
+
alignWithLabel: true, //使得刻度线和标签对齐
|
|
4471
|
+
},
|
|
4472
|
+
splitLine: { show: true },
|
|
4473
|
+
},
|
|
4474
|
+
yAxis: [
|
|
4475
|
+
{
|
|
4476
|
+
type: 'value',
|
|
4477
|
+
max: yAxisMax,
|
|
4478
|
+
min: yAxisMin,
|
|
4479
|
+
name: yName,
|
|
4480
|
+
nameGap: !yValIsAllNull ? 40 : 5,
|
|
4481
|
+
nameRotate: 90,
|
|
4482
|
+
nameLocation: 'middle',
|
|
4483
|
+
splitLine: {
|
|
4550
4484
|
show: true,
|
|
4551
|
-
|
|
4552
|
-
|
|
4553
|
-
|
|
4554
|
-
textStyle: {
|
|
4555
|
-
fontSize: 12,
|
|
4556
|
-
fontWeight: 'normal',
|
|
4485
|
+
lineStyle: {
|
|
4486
|
+
color: '#e0e6f1', //'#e0e6f1',
|
|
4487
|
+
type: 'solid',
|
|
4557
4488
|
},
|
|
4558
4489
|
},
|
|
4559
|
-
|
|
4560
|
-
|
|
4561
|
-
|
|
4562
|
-
|
|
4563
|
-
left: 'right',
|
|
4564
|
-
data: [legendName],
|
|
4565
|
-
selected: {
|
|
4566
|
-
legendName: true, //显示
|
|
4567
|
-
},
|
|
4568
|
-
selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)
|
|
4569
|
-
},
|
|
4570
|
-
xAxis: {
|
|
4571
|
-
type: 'value',
|
|
4572
|
-
max: 0,
|
|
4573
|
-
min: 0,
|
|
4574
|
-
data: [],
|
|
4575
|
-
axisTick: {
|
|
4576
|
-
alignWithLabel: true, //使得刻度线和标签对齐
|
|
4490
|
+
//splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……
|
|
4491
|
+
axisLine: {
|
|
4492
|
+
//设置y轴箭头效果
|
|
4493
|
+
show: true, //y轴默认是不显示的
|
|
4577
4494
|
},
|
|
4578
|
-
splitLine: { show: true },
|
|
4579
4495
|
},
|
|
4580
|
-
|
|
4581
|
-
|
|
4582
|
-
|
|
4583
|
-
|
|
4584
|
-
min: 0,
|
|
4585
|
-
name: yName,
|
|
4586
|
-
nameGap: 5,
|
|
4587
|
-
nameRotate: 90,
|
|
4588
|
-
nameLocation: 'middle',
|
|
4589
|
-
splitLine: {
|
|
4590
|
-
show: true,
|
|
4591
|
-
lineStyle: {
|
|
4592
|
-
color: '#e0e6f1', //'#e0e6f1',
|
|
4593
|
-
type: 'solid',
|
|
4594
|
-
},
|
|
4595
|
-
},
|
|
4596
|
-
//splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……
|
|
4597
|
-
axisLine: {
|
|
4598
|
-
//设置y轴箭头效果
|
|
4599
|
-
show: true, //y轴默认是不显示的
|
|
4600
|
-
},
|
|
4601
|
-
},
|
|
4602
|
-
],
|
|
4603
|
-
series: [],
|
|
4604
|
-
};
|
|
4605
|
-
return option;
|
|
4606
|
-
}
|
|
4496
|
+
],
|
|
4497
|
+
series: seriesData,
|
|
4498
|
+
};
|
|
4499
|
+
return option;
|
|
4607
4500
|
},
|
|
4608
4501
|
/**
|
|
4609
4502
|
* 筛分
|