rapid-spreadjs 1.0.167 → 1.0.168
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 +256 -323
- 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 +256 -323
- 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/dist/utils/echarts-all.d.ts +202 -128
- package/package.json +1 -1
package/dist/index.esm.js
CHANGED
|
@@ -8517,256 +8517,99 @@ const EChartsUtilsAll = {
|
|
|
8517
8517
|
* @returns 返回ECharts配置项
|
|
8518
8518
|
*/
|
|
8519
8519
|
chart350: (config, xDataArr, yDataArr, sheet) => {
|
|
8520
|
-
let lineData = JSON.parse(config.chartLinesJson)
|
|
8520
|
+
let lineData = JSON.parse(config.chartLinesJson); lineData[0].lineColor;
|
|
8521
8521
|
const chartExtJson = config.chartExtJson == null || config.chartExtJson == undefined ? null : JSON.parse(config.chartExtJson);
|
|
8522
|
-
//击数N(次)、含水率w(%)、y轴第一个趋势数据、y轴第二个趋势数据、25的趋势数据、y轴最小值、y轴最大值
|
|
8523
|
-
const jsN = [xDataArr[0][0], xDataArr[0][1]], // [18, 30],
|
|
8524
|
-
hsl = [yDataArr[0][0], yDataArr[0][1]], // [22.1, 11.5],
|
|
8525
|
-
//通过calcTrend获取y轴第一个趋势数据、y轴第二个趋势数据、25的趋势数据
|
|
8526
|
-
yVal1 = Number(EChartsUtilsComm.getRound(EChartsUtilsComm.calcTrend(jsN, hsl, jsN[0]).y, 0.1)),
|
|
8527
|
-
|
|
8528
|
-
|
|
8529
|
-
|
|
8522
|
+
// //击数N(次)、含水率w(%)、y轴第一个趋势数据、y轴第二个趋势数据、25的趋势数据、y轴最小值、y轴最大值
|
|
8523
|
+
// const jsN = [xDataArr[0][0], xDataArr[0][1]], // [18, 30],
|
|
8524
|
+
// hsl = [yDataArr[0][0], yDataArr[0][1]], // [22.1, 11.5],
|
|
8525
|
+
// //通过calcTrend获取y轴第一个趋势数据、y轴第二个趋势数据、25的趋势数据
|
|
8526
|
+
// yVal1 = Number(EChartsUtilsComm.getRound(EChartsUtilsComm.calcTrend(jsN, hsl, jsN[0]).y, 0.1)),
|
|
8527
|
+
// yVal2 = Number(EChartsUtilsComm.getRound(EChartsUtilsComm.calcTrend(jsN, hsl, jsN[1]).y, 0.1)),
|
|
8528
|
+
// yVal25 = Number(EChartsUtilsComm.getRound(EChartsUtilsComm.calcTrend(jsN, hsl, 25).y, 0.1)),
|
|
8529
|
+
// //通过calcTrend获取y轴的趋势数据,然后分别-2和+2
|
|
8530
|
+
// yAxisMin = Math.floor(Number(yVal2)) - 2,
|
|
8531
|
+
// yAxisMax = Math.floor(Number(yVal1)) + 2;
|
|
8532
|
+
let title = config.chartTitle, xName = config.chartXName, yName = config.chartYName;
|
|
8530
8533
|
//检测是否所有数据都为空
|
|
8531
8534
|
let isAllNull = true;
|
|
8532
8535
|
isAllNull = xDataArr[0].filter((item) => item != null && item != undefined && item != '/').length == 0;
|
|
8533
8536
|
if (isAllNull) {
|
|
8534
8537
|
isAllNull = yDataArr[0].filter((item) => item != null && item != undefined && item != '/').length == 0;
|
|
8535
8538
|
}
|
|
8536
|
-
|
|
8537
|
-
|
|
8538
|
-
|
|
8539
|
+
var LOG = Math.log10;
|
|
8540
|
+
/* ==========================================================
|
|
8541
|
+
1. 数据源(只需改这里,其余全部自动适配)
|
|
8542
|
+
========================================================== */
|
|
8543
|
+
var x1 = xDataArr[0][0], y1 = yDataArr[0][0]; // a1
|
|
8544
|
+
var x3 = xDataArr[0][1], y3 = yDataArr[0][1]; // a3
|
|
8545
|
+
var x2 = 25; // 待求插值点
|
|
8546
|
+
/* ==========================================================
|
|
8547
|
+
2. 插值计算(对数空间线性插值)
|
|
8548
|
+
========================================================== */
|
|
8549
|
+
var logX1 = LOG(x1), logX2 = LOG(x2), logX3 = LOG(x3);
|
|
8550
|
+
var t = (logX2 - logX1) / (logX3 - logX1);
|
|
8551
|
+
var y2 = y1 + t * (y3 - y1);
|
|
8552
|
+
var slope = (y3 - y1) / (logX3 - logX1);
|
|
8553
|
+
// 两端延长:取数据对数跨度的 15%,保证"延长一点"且随数据自适应
|
|
8554
|
+
var ext = (logX3 - logX1) * 0.15;
|
|
8555
|
+
var extLX = logX1 - ext, extLY = y1 + slope * -ext;
|
|
8556
|
+
var extRX = logX3 + ext, extRY = y3 + slope * ext;
|
|
8557
|
+
/* ==========================================================
|
|
8558
|
+
3. Y 轴范围自适应算法
|
|
8559
|
+
========================================================== */
|
|
8560
|
+
// 把任意数值规整为 1 / 2 / 5 × 10^n 的"整洁数"
|
|
8561
|
+
function niceNum(range, round) {
|
|
8562
|
+
var exponent = Math.floor(Math.log10(range));
|
|
8563
|
+
var fraction = range / Math.pow(10, exponent);
|
|
8564
|
+
var niceFraction;
|
|
8539
8565
|
{
|
|
8540
|
-
|
|
8541
|
-
|
|
8542
|
-
|
|
8543
|
-
|
|
8544
|
-
|
|
8545
|
-
|
|
8546
|
-
|
|
8547
|
-
|
|
8548
|
-
|
|
8549
|
-
|
|
8550
|
-
|
|
8551
|
-
|
|
8552
|
-
|
|
8553
|
-
|
|
8554
|
-
|
|
8555
|
-
|
|
8556
|
-
|
|
8557
|
-
|
|
8558
|
-
|
|
8559
|
-
|
|
8560
|
-
|
|
8561
|
-
|
|
8562
|
-
|
|
8563
|
-
|
|
8564
|
-
|
|
8565
|
-
|
|
8566
|
-
|
|
8567
|
-
|
|
8568
|
-
|
|
8569
|
-
|
|
8570
|
-
|
|
8571
|
-
|
|
8572
|
-
|
|
8573
|
-
|
|
8574
|
-
|
|
8575
|
-
|
|
8576
|
-
|
|
8577
|
-
|
|
8578
|
-
|
|
8579
|
-
|
|
8580
|
-
|
|
8581
|
-
|
|
8582
|
-
|
|
8583
|
-
|
|
8584
|
-
|
|
8585
|
-
|
|
8586
|
-
|
|
8587
|
-
{
|
|
8588
|
-
xAxis: 13.1,
|
|
8589
|
-
yAxis: yVal25,
|
|
8590
|
-
symbolOffset: [40, 25],
|
|
8591
|
-
label: {
|
|
8592
|
-
show: true,
|
|
8593
|
-
color: '#000',
|
|
8594
|
-
formatter: function (data) {
|
|
8595
|
-
//显示25这个坐标点数据
|
|
8596
|
-
return isAllNull ? '' : '(' + 25 + ' , ' + data.data.yAxis + ')';
|
|
8597
|
-
},
|
|
8598
|
-
},
|
|
8599
|
-
itemStyle: { color: 'transparent' },
|
|
8600
|
-
},
|
|
8601
|
-
],
|
|
8602
|
-
},
|
|
8603
|
-
markLine: {
|
|
8604
|
-
symbol: '', //取消箭头
|
|
8605
|
-
silent: true, //取消鼠标hover事件
|
|
8606
|
-
label: {
|
|
8607
|
-
//标线的文本,模拟x轴显示的内容
|
|
8608
|
-
position: 'start', //改变label位置
|
|
8609
|
-
// rotate: 45, //设置文字旋转度数(注意:ECharts官网文档居然没有rotate这个属性的说明)
|
|
8610
|
-
// backgroundColor:'#fff'
|
|
8611
|
-
// color:'#f00',//文字颜色
|
|
8612
|
-
formatter: (data) => {
|
|
8613
|
-
return data.name;
|
|
8614
|
-
},
|
|
8615
|
-
},
|
|
8616
|
-
lineStyle: { color: '#e0e6f1', type: 'solid' },
|
|
8617
|
-
data: [
|
|
8618
|
-
{
|
|
8619
|
-
name: '5',
|
|
8620
|
-
xAxis: 0,
|
|
8621
|
-
label: {
|
|
8622
|
-
fontSize: xyFontSize,
|
|
8623
|
-
},
|
|
8624
|
-
},
|
|
8625
|
-
{
|
|
8626
|
-
name: '6',
|
|
8627
|
-
xAxis: 2,
|
|
8628
|
-
label: {
|
|
8629
|
-
fontSize: xyFontSize,
|
|
8630
|
-
},
|
|
8631
|
-
},
|
|
8632
|
-
{
|
|
8633
|
-
name: '7',
|
|
8634
|
-
xAxis: 3.5,
|
|
8635
|
-
label: {
|
|
8636
|
-
fontSize: xyFontSize,
|
|
8637
|
-
},
|
|
8638
|
-
},
|
|
8639
|
-
{
|
|
8640
|
-
name: '8',
|
|
8641
|
-
xAxis: 4.9,
|
|
8642
|
-
label: {
|
|
8643
|
-
fontSize: xyFontSize,
|
|
8644
|
-
},
|
|
8645
|
-
},
|
|
8646
|
-
{
|
|
8647
|
-
name: '9',
|
|
8648
|
-
xAxis: 5.9,
|
|
8649
|
-
label: {
|
|
8650
|
-
fontSize: xyFontSize,
|
|
8651
|
-
},
|
|
8652
|
-
},
|
|
8653
|
-
{
|
|
8654
|
-
name: '10',
|
|
8655
|
-
xAxis: 6.9,
|
|
8656
|
-
label: {
|
|
8657
|
-
fontSize: xyFontSize,
|
|
8658
|
-
},
|
|
8659
|
-
},
|
|
8660
|
-
{
|
|
8661
|
-
//延长线1
|
|
8662
|
-
name: '',
|
|
8663
|
-
xAxis: 10.4,
|
|
8664
|
-
lineStyle: {
|
|
8665
|
-
opacity: 0,
|
|
8666
|
-
},
|
|
8667
|
-
},
|
|
8668
|
-
{
|
|
8669
|
-
//第一个点
|
|
8670
|
-
name: '',
|
|
8671
|
-
xAxis: 11,
|
|
8672
|
-
},
|
|
8673
|
-
{
|
|
8674
|
-
name: '20',
|
|
8675
|
-
xAxis: 11.8,
|
|
8676
|
-
label: {
|
|
8677
|
-
fontSize: xyFontSize,
|
|
8678
|
-
},
|
|
8679
|
-
},
|
|
8680
|
-
{
|
|
8681
|
-
//第二个点
|
|
8682
|
-
name: '25',
|
|
8683
|
-
xAxis: 13.1,
|
|
8684
|
-
label: {
|
|
8685
|
-
fontSize: xyFontSize,
|
|
8686
|
-
},
|
|
8687
|
-
},
|
|
8688
|
-
{
|
|
8689
|
-
//第三个点
|
|
8690
|
-
name: '30',
|
|
8691
|
-
xAxis: 14.6,
|
|
8692
|
-
label: {
|
|
8693
|
-
fontSize: xyFontSize,
|
|
8694
|
-
},
|
|
8695
|
-
},
|
|
8696
|
-
{
|
|
8697
|
-
//延长线2
|
|
8698
|
-
name: '',
|
|
8699
|
-
xAxis: 15.2,
|
|
8700
|
-
lineStyle: {
|
|
8701
|
-
opacity: 0,
|
|
8702
|
-
},
|
|
8703
|
-
},
|
|
8704
|
-
{
|
|
8705
|
-
name: '40',
|
|
8706
|
-
xAxis: 16.4,
|
|
8707
|
-
label: {
|
|
8708
|
-
fontSize: xyFontSize,
|
|
8709
|
-
},
|
|
8710
|
-
},
|
|
8711
|
-
{
|
|
8712
|
-
name: '50',
|
|
8713
|
-
xAxis: 17.4,
|
|
8714
|
-
label: {
|
|
8715
|
-
fontSize: xyFontSize,
|
|
8716
|
-
},
|
|
8717
|
-
},
|
|
8718
|
-
{
|
|
8719
|
-
name: '',
|
|
8720
|
-
xAxis: 18.9,
|
|
8721
|
-
},
|
|
8722
|
-
{
|
|
8723
|
-
name: '',
|
|
8724
|
-
xAxis: 19.8,
|
|
8725
|
-
},
|
|
8726
|
-
{
|
|
8727
|
-
name: '',
|
|
8728
|
-
xAxis: 20.7,
|
|
8729
|
-
},
|
|
8730
|
-
{
|
|
8731
|
-
name: '',
|
|
8732
|
-
xAxis: 21.6,
|
|
8733
|
-
},
|
|
8734
|
-
{
|
|
8735
|
-
name: '100',
|
|
8736
|
-
xAxis: 22.6,
|
|
8737
|
-
label: {
|
|
8738
|
-
fontSize: xyFontSize,
|
|
8739
|
-
},
|
|
8740
|
-
},
|
|
8741
|
-
//横线
|
|
8742
|
-
[
|
|
8743
|
-
{
|
|
8744
|
-
coord: [0, yVal25],
|
|
8745
|
-
lineStyle: {
|
|
8746
|
-
color: '#529b2e',
|
|
8747
|
-
type: 'solid',
|
|
8748
|
-
},
|
|
8749
|
-
},
|
|
8750
|
-
{ coord: [13.1, yVal25] },
|
|
8751
|
-
],
|
|
8752
|
-
//纵线
|
|
8753
|
-
[
|
|
8754
|
-
{
|
|
8755
|
-
coord: [13.1, yAxisMin],
|
|
8756
|
-
lineStyle: {
|
|
8757
|
-
color: '#000',
|
|
8758
|
-
type: 'silid',
|
|
8759
|
-
},
|
|
8760
|
-
},
|
|
8761
|
-
{ coord: [13.1, yVal25] },
|
|
8762
|
-
],
|
|
8763
|
-
],
|
|
8764
|
-
},
|
|
8765
|
-
},
|
|
8766
|
-
];
|
|
8767
|
-
if (isAllNull) {
|
|
8768
|
-
seriesObjs = [];
|
|
8769
|
-
}
|
|
8566
|
+
if (fraction < 1.5)
|
|
8567
|
+
niceFraction = 1;
|
|
8568
|
+
else if (fraction < 3)
|
|
8569
|
+
niceFraction = 2;
|
|
8570
|
+
else if (fraction < 7)
|
|
8571
|
+
niceFraction = 5;
|
|
8572
|
+
else
|
|
8573
|
+
niceFraction = 10;
|
|
8574
|
+
}
|
|
8575
|
+
return niceFraction * Math.pow(10, exponent);
|
|
8576
|
+
}
|
|
8577
|
+
// 根据一组 y 值自动计算 yMin / yMax / interval
|
|
8578
|
+
function calcYBounds(values, marginRatio, targetTicks) {
|
|
8579
|
+
marginRatio = marginRatio === undefined ? 0.12 : marginRatio;
|
|
8580
|
+
targetTicks = targetTicks || 5;
|
|
8581
|
+
var dataMin = Math.min.apply(null, values);
|
|
8582
|
+
var dataMax = Math.max.apply(null, values);
|
|
8583
|
+
var range = dataMax - dataMin;
|
|
8584
|
+
if (range === 0) {
|
|
8585
|
+
range = Math.abs(dataMax) || 1;
|
|
8586
|
+
} // 防止所有值相同
|
|
8587
|
+
var margin = range * marginRatio; // 上下留白
|
|
8588
|
+
var rawMin = dataMin - margin;
|
|
8589
|
+
var rawMax = dataMax + margin;
|
|
8590
|
+
var interval = niceNum((rawMax - rawMin) / (targetTicks - 1));
|
|
8591
|
+
var yMin = Math.floor(rawMin / interval) * interval;
|
|
8592
|
+
var yMax = Math.ceil(rawMax / interval) * interval;
|
|
8593
|
+
// 消除浮点误差
|
|
8594
|
+
yMin = +yMin.toFixed(10);
|
|
8595
|
+
yMax = +yMax.toFixed(10);
|
|
8596
|
+
interval = +interval.toFixed(10);
|
|
8597
|
+
return { min: yMin, max: yMax, interval: interval };
|
|
8598
|
+
}
|
|
8599
|
+
// 把三个点 + 两端延长点一起纳入计算,确保整条线都显示得下
|
|
8600
|
+
var yBounds = calcYBounds([y1, y2, y3, extLY, extRY], 0.12, 5);
|
|
8601
|
+
var yMin = yBounds.min;
|
|
8602
|
+
var yMax = yBounds.max;
|
|
8603
|
+
var yInterval = yBounds.interval;
|
|
8604
|
+
/* ==========================================================
|
|
8605
|
+
4. X 轴刻度定义
|
|
8606
|
+
========================================================== */
|
|
8607
|
+
var allTicks = [5, 6, 7, 8, 9, 10, 20, 25, 30, 40, 50, 60, 70, 80, 90, 100, 150];
|
|
8608
|
+
var labeledTicks = [5, 6, 7, 8, 9, 10, 20, 25, 30, 40, 50, 100];
|
|
8609
|
+
var xMin = LOG(5), xMax = LOG(150);
|
|
8610
|
+
var vLines = allTicks.map(function (v) {
|
|
8611
|
+
return { xAxis: LOG(v) };
|
|
8612
|
+
});
|
|
8770
8613
|
if (chartExtJson != null && chartExtJson != undefined && chartExtJson.yxdsyHsl != null && chartExtJson.yxdsyHsl != undefined) {
|
|
8771
8614
|
// 默认输出精度
|
|
8772
8615
|
let outJdYxdsyHsl = 0.1;
|
|
@@ -8776,103 +8619,163 @@ const EChartsUtilsAll = {
|
|
|
8776
8619
|
if (chartExtJson.yxdsyHslJd != null && chartExtJson.yxdsyHslJd != undefined) {
|
|
8777
8620
|
outJdYxdsyHsl = chartExtJson.yxdsyHslJd;
|
|
8778
8621
|
}
|
|
8779
|
-
outValYxdsyHsl = EChartsUtilsComm.getRound(
|
|
8780
|
-
sheet.setValue(chartExtJson.yxdsyHsl.row, chartExtJson.yxdsyHsl.col, outValYxdsyHsl);
|
|
8622
|
+
outValYxdsyHsl = EChartsUtilsComm.getRound(y2, outJdYxdsyHsl);
|
|
8623
|
+
sheet.setValue(chartExtJson.yxdsyHsl.row, chartExtJson.yxdsyHsl.col, typeof outValYxdsyHsl == 'string' && (outValYxdsyHsl + '').indexOf('NaN') != -1 ? '/' : outValYxdsyHsl);
|
|
8781
8624
|
}
|
|
8782
|
-
|
|
8783
|
-
|
|
8784
|
-
|
|
8785
|
-
|
|
8786
|
-
|
|
8787
|
-
|
|
8788
|
-
|
|
8789
|
-
|
|
8790
|
-
|
|
8625
|
+
/* ==========================================================
|
|
8626
|
+
5. 图表配置
|
|
8627
|
+
========================================================== */
|
|
8628
|
+
var option = {
|
|
8629
|
+
/* --- 标题 --- */
|
|
8630
|
+
title: {
|
|
8631
|
+
text: title,
|
|
8632
|
+
left: 'center',
|
|
8633
|
+
top: 0,
|
|
8634
|
+
textStyle: { fontSize: 14, fontWeight: 'normal' },
|
|
8791
8635
|
},
|
|
8792
|
-
|
|
8636
|
+
/* --- tooltip --- */
|
|
8793
8637
|
tooltip: {
|
|
8794
|
-
trigger: '
|
|
8795
|
-
formatter: function (
|
|
8796
|
-
|
|
8797
|
-
|
|
8798
|
-
|
|
8799
|
-
|
|
8800
|
-
: datas[0].data;
|
|
8638
|
+
trigger: 'item',
|
|
8639
|
+
formatter: function (params) {
|
|
8640
|
+
if (params.seriesType === 'scatter' && params.data && params.data.realX !== undefined) {
|
|
8641
|
+
return '(' + params.data.realX + ', ' + params.data.realY + ')';
|
|
8642
|
+
}
|
|
8643
|
+
return '';
|
|
8801
8644
|
},
|
|
8645
|
+
backgroundColor: 'rgba(255,255,255,0.95)',
|
|
8646
|
+
borderColor: '#ccc',
|
|
8647
|
+
borderWidth: 1,
|
|
8648
|
+
textStyle: { color: '#333', fontSize: 13 },
|
|
8649
|
+
padding: [6, 10],
|
|
8802
8650
|
},
|
|
8803
|
-
|
|
8804
|
-
|
|
8651
|
+
grid: { left: 50, right: 10, top: 20, bottom: 0 },
|
|
8652
|
+
/* --- X 轴 --- */
|
|
8653
|
+
xAxis: {
|
|
8654
|
+
type: 'value',
|
|
8655
|
+
min: xMin,
|
|
8656
|
+
max: xMax,
|
|
8657
|
+
axisLine: { show: true },
|
|
8658
|
+
axisTick: { show: false },
|
|
8659
|
+
axisLabel: { show: false },
|
|
8660
|
+
splitLine: { show: false },
|
|
8661
|
+
name: xName,
|
|
8662
|
+
nameLocation: 'center',
|
|
8663
|
+
nameGap: 18,
|
|
8664
|
+
nameTextStyle: { fontSize: 12, color: '#333' },
|
|
8665
|
+
},
|
|
8666
|
+
/* --- Y 轴 --- */
|
|
8667
|
+
yAxis: {
|
|
8668
|
+
type: 'value',
|
|
8669
|
+
min: yMin,
|
|
8670
|
+
max: yMax,
|
|
8671
|
+
interval: yInterval,
|
|
8672
|
+
position: 'left',
|
|
8673
|
+
axisLine: { show: true, lineStyle: { color: '#333', width: 1.5 } },
|
|
8674
|
+
axisTick: { show: true, length: 5, lineStyle: { color: '#333' } },
|
|
8675
|
+
axisLabel: { show: true, fontSize: 12, color: '#333', margin: 10 },
|
|
8676
|
+
splitLine: { show: true, lineStyle: { color: '#e0e6f1', width: 1 } },
|
|
8677
|
+
name: yName,
|
|
8678
|
+
nameLocation: 'center',
|
|
8679
|
+
nameGap: 30,
|
|
8680
|
+
nameRotate: 90,
|
|
8681
|
+
nameTextStyle: { fontSize: 12, color: '#333' },
|
|
8682
|
+
},
|
|
8683
|
+
series: [
|
|
8684
|
+
/* --- ① 纵向灰色网格线 --- */
|
|
8805
8685
|
{
|
|
8806
|
-
|
|
8807
|
-
|
|
8808
|
-
|
|
8809
|
-
|
|
8810
|
-
|
|
8811
|
-
|
|
8812
|
-
|
|
8686
|
+
type: 'line',
|
|
8687
|
+
data: [],
|
|
8688
|
+
silent: true,
|
|
8689
|
+
z: 1,
|
|
8690
|
+
markLine: {
|
|
8691
|
+
silent: true,
|
|
8692
|
+
symbol: 'none',
|
|
8693
|
+
lineStyle: { color: '#e0e6f1', width: 1, type: 'solid' },
|
|
8694
|
+
label: { show: false },
|
|
8695
|
+
data: vLines,
|
|
8813
8696
|
},
|
|
8814
8697
|
},
|
|
8698
|
+
/* --- ② 主直线(含两端延长) --- */
|
|
8815
8699
|
{
|
|
8816
|
-
|
|
8817
|
-
|
|
8818
|
-
|
|
8819
|
-
|
|
8820
|
-
|
|
8821
|
-
|
|
8822
|
-
|
|
8823
|
-
|
|
8824
|
-
|
|
8825
|
-
|
|
8826
|
-
|
|
8827
|
-
|
|
8828
|
-
show: false,
|
|
8829
|
-
left: 'right',
|
|
8830
|
-
data: [legendName],
|
|
8831
|
-
selected: {
|
|
8832
|
-
legendName: true, //显示
|
|
8700
|
+
type: 'line',
|
|
8701
|
+
z: 30,
|
|
8702
|
+
silent: true,
|
|
8703
|
+
data: [
|
|
8704
|
+
[extLX, extLY],
|
|
8705
|
+
[logX1, y1],
|
|
8706
|
+
[logX2, y2],
|
|
8707
|
+
[logX3, y3],
|
|
8708
|
+
[extRX, extRY],
|
|
8709
|
+
],
|
|
8710
|
+
lineStyle: { color: '#409EFF', width: 2 },
|
|
8711
|
+
symbol: 'none',
|
|
8833
8712
|
},
|
|
8834
|
-
|
|
8835
|
-
|
|
8836
|
-
|
|
8837
|
-
|
|
8838
|
-
|
|
8839
|
-
|
|
8840
|
-
|
|
8841
|
-
|
|
8842
|
-
|
|
8713
|
+
/* --- ③ a1 / a2 / a3 圆点(带 tooltip) --- */
|
|
8714
|
+
{
|
|
8715
|
+
type: 'scatter',
|
|
8716
|
+
z: 6,
|
|
8717
|
+
data: [
|
|
8718
|
+
{ value: [logX1, y1], realX: x1, realY: y1, name: 'a1' },
|
|
8719
|
+
{ value: [logX2, y2], realX: x2, realY: +y2.toFixed(2), name: 'a2' },
|
|
8720
|
+
{ value: [logX3, y3], realX: x3, realY: y3, name: 'a3' },
|
|
8721
|
+
],
|
|
8722
|
+
symbol: 'circle',
|
|
8723
|
+
symbolSize: 10,
|
|
8724
|
+
itemStyle: { color: '#409EFF', borderColor: '#fff', borderWidth: 1.5 },
|
|
8843
8725
|
},
|
|
8844
|
-
|
|
8845
|
-
max: 23.5,
|
|
8846
|
-
},
|
|
8847
|
-
yAxis: [
|
|
8726
|
+
/* --- ④ a2 横向绿色线(从 y 轴到 a2)+ 文字标注 --- */
|
|
8848
8727
|
{
|
|
8849
|
-
type: '
|
|
8850
|
-
|
|
8851
|
-
|
|
8852
|
-
|
|
8853
|
-
|
|
8854
|
-
|
|
8855
|
-
|
|
8856
|
-
lineStyle: {
|
|
8857
|
-
|
|
8858
|
-
|
|
8859
|
-
},
|
|
8728
|
+
type: 'scatter',
|
|
8729
|
+
z: 4,
|
|
8730
|
+
silent: true,
|
|
8731
|
+
data: [],
|
|
8732
|
+
markLine: {
|
|
8733
|
+
silent: true,
|
|
8734
|
+
symbol: 'none',
|
|
8735
|
+
lineStyle: { color: '#2eaf4a', width: 2, type: 'solid' },
|
|
8736
|
+
label: { show: false },
|
|
8737
|
+
data: [[{ coord: [xMin, y2] }, { coord: [logX2, y2] }]],
|
|
8860
8738
|
},
|
|
8861
|
-
|
|
8862
|
-
|
|
8863
|
-
|
|
8864
|
-
|
|
8865
|
-
|
|
8866
|
-
|
|
8739
|
+
markPoint: {
|
|
8740
|
+
silent: true,
|
|
8741
|
+
symbol: 'circle',
|
|
8742
|
+
symbolSize: 0,
|
|
8743
|
+
data: [{ coord: [logX2, y2] }],
|
|
8744
|
+
label: {
|
|
8745
|
+
show: true,
|
|
8746
|
+
formatter: '(' + x2 + ', ' + y2.toFixed(2) + ')',
|
|
8747
|
+
position: 'right',
|
|
8748
|
+
distance: 10,
|
|
8749
|
+
fontSize: 13,
|
|
8750
|
+
fontWeight: 'bold',
|
|
8751
|
+
color: '#2eaf4a',
|
|
8752
|
+
},
|
|
8867
8753
|
},
|
|
8868
|
-
|
|
8869
|
-
|
|
8754
|
+
},
|
|
8755
|
+
/* --- ⑤ a2 纵向黑色线(从 x 轴到 a2) --- */
|
|
8756
|
+
{
|
|
8757
|
+
type: 'scatter',
|
|
8758
|
+
z: 4,
|
|
8759
|
+
silent: true,
|
|
8760
|
+
data: [],
|
|
8761
|
+
markLine: {
|
|
8762
|
+
silent: true,
|
|
8763
|
+
symbol: 'none',
|
|
8764
|
+
lineStyle: { color: '#000000', width: 2, type: 'solid' },
|
|
8765
|
+
label: { show: false },
|
|
8766
|
+
data: [[{ coord: [logX2, yMin] }, { coord: [logX2, y2] }]],
|
|
8870
8767
|
},
|
|
8871
8768
|
},
|
|
8872
8769
|
],
|
|
8873
|
-
series: seriesObjs,
|
|
8874
8770
|
};
|
|
8875
|
-
return
|
|
8771
|
+
return {
|
|
8772
|
+
option: option,
|
|
8773
|
+
ext: {
|
|
8774
|
+
labeledTicks: labeledTicks,
|
|
8775
|
+
LOG: LOG,
|
|
8776
|
+
yMin: yMin,
|
|
8777
|
+
},
|
|
8778
|
+
};
|
|
8876
8779
|
},
|
|
8877
8780
|
/**
|
|
8878
8781
|
* 土工合成材料(垂直渗透系数)
|
|
@@ -10623,7 +10526,7 @@ const EChartsUtils = {
|
|
|
10623
10526
|
console.log('xDataArr:', xDataArr);
|
|
10624
10527
|
console.log('yDataArr:', yDataArr);
|
|
10625
10528
|
}
|
|
10626
|
-
let option;
|
|
10529
|
+
let option, ext;
|
|
10627
10530
|
if (config.chartType == 10) {
|
|
10628
10531
|
option = EChartsUtilsAll.chart10(config, xDataArr, yDataArr, sheet);
|
|
10629
10532
|
}
|
|
@@ -10697,7 +10600,9 @@ const EChartsUtils = {
|
|
|
10697
10600
|
option = EChartsUtilsAll.chart330(config, xDataArr, yDataArr, sheet);
|
|
10698
10601
|
}
|
|
10699
10602
|
else if (config.chartType == 350) {
|
|
10700
|
-
|
|
10603
|
+
const allOpts = EChartsUtilsAll.chart350(config, xDataArr, yDataArr, sheet);
|
|
10604
|
+
option = allOpts.option;
|
|
10605
|
+
ext = allOpts.ext;
|
|
10701
10606
|
}
|
|
10702
10607
|
else if (config.chartType == 370) {
|
|
10703
10608
|
option = EChartsUtilsAll.chart370(config, xDataArr, yDataArr, sheet);
|
|
@@ -10732,6 +10637,34 @@ const EChartsUtils = {
|
|
|
10732
10637
|
ecObj.setOption(option);
|
|
10733
10638
|
}
|
|
10734
10639
|
ecObj.setOption(option);
|
|
10640
|
+
if (config.chartType == 350) {
|
|
10641
|
+
/* ==========================================================
|
|
10642
|
+
6. X 轴刻度文字(graphic 精确定位)
|
|
10643
|
+
========================================================== */
|
|
10644
|
+
setTimeout(function () {
|
|
10645
|
+
var graphicList = [];
|
|
10646
|
+
ext.labeledTicks.forEach(function (tick) {
|
|
10647
|
+
var px = ecObj.convertToPixel({ gridIndex: 0 }, [ext.LOG(tick), ext.yMin]);
|
|
10648
|
+
if (!isNaN(px[1] + 12)) {
|
|
10649
|
+
graphicList.push({
|
|
10650
|
+
type: 'text',
|
|
10651
|
+
bottom: 20,
|
|
10652
|
+
x: px[0],
|
|
10653
|
+
y: px[1] + 12,
|
|
10654
|
+
style: {
|
|
10655
|
+
text: String(tick),
|
|
10656
|
+
fontSize: 12,
|
|
10657
|
+
fill: '#333',
|
|
10658
|
+
textAlign: 'center',
|
|
10659
|
+
textVerticalAlign: 'top',
|
|
10660
|
+
},
|
|
10661
|
+
silent: true,
|
|
10662
|
+
});
|
|
10663
|
+
}
|
|
10664
|
+
});
|
|
10665
|
+
ecObj.setOption({ graphic: graphicList });
|
|
10666
|
+
}, 120);
|
|
10667
|
+
}
|
|
10735
10668
|
return ecObj;
|
|
10736
10669
|
},
|
|
10737
10670
|
/**
|