rapid-spreadjs 1.0.166 → 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.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), lineColor = lineData[0].lineColor;
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)), yVal2 = Number(EChartsUtilsComm.getRound(EChartsUtilsComm.calcTrend(jsN, hsl, jsN[1]).y, 0.1)), yVal25 = Number(EChartsUtilsComm.getRound(EChartsUtilsComm.calcTrend(jsN, hsl, 25).y, 0.1)),
8527
- //通过calcTrend获取y轴的趋势数据,然后分别-2和+2
8528
- yAxisMin = Math.floor(Number(yVal2)) - 2, yAxisMax = Math.floor(Number(yVal1)) + 2;
8529
- let title = config.chartTitle, xName = config.chartXName, yName = config.chartYName, legendName = '图例1';
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
- //x和y轴的字体大小
8537
- const xyFontSize = 8;
8538
- let seriesObjs = [
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
- name: legendName,
8541
- type: 'line',
8542
- //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol
8543
- symbol: 'circle',
8544
- z: 10, //控制曲线的浮动层级,避免在markLine下方被遮住
8545
- //线条的颜色
8546
- lineStyle: {
8547
- color: lineColor,
8548
- //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)
8549
- // type: 'dotted',
8550
- },
8551
- //线条上数据点的颜色
8552
- itemStyle: {
8553
- color: lineColor,
8554
- },
8555
- connectNulls: true, //是否连接空数据
8556
- data: [
8557
- [0, null],
8558
- [2, null],
8559
- [3.5, null],
8560
- [4.9, null],
8561
- [5.9, null],
8562
- [6.9, null],
8563
- {
8564
- //延长线1
8565
- value: [10.4, yVal25 - (2.7 * (yVal25 - yVal1)) / 2.1],
8566
- symbol: 'none', //隐藏线条上的数据点
8567
- },
8568
- [11, yVal1], //第一个点
8569
- [11.8, null],
8570
- [13.1, yVal25], //第二个点
8571
- [14.6, yVal2], //第三个点
8572
- {
8573
- //延长线2
8574
- value: [15.2, (2.1 / 1.5) * (yVal2 - yVal25) + yVal25],
8575
- symbol: 'none', //隐藏线条上的数据点
8576
- },
8577
- [16.4, null],
8578
- [17.4, null],
8579
- [18.9, null],
8580
- [19.8, null],
8581
- [20.7, null],
8582
- [21.6, null],
8583
- [22.6, null],
8584
- ],
8585
- markPoint: {
8586
- data: [
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(yVal25, outJdYxdsyHsl);
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
- let option = {
8783
- grid: {
8784
- // show: true,//是否显示外边框线
8785
- // borderColor: '#f00',//外边框线颜色
8786
- top: 25,
8787
- left: 30,
8788
- right: 10,
8789
- bottom: 35,
8790
- containLabel: true,
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
- //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip
8636
+ /* --- tooltip --- */
8793
8637
  tooltip: {
8794
- trigger: 'axis',
8795
- formatter: function (datas, ticket) {
8796
- return datas && datas[0].data.length > 1
8797
- ? datas[0].data[1] == null
8798
- ? ''
8799
- : datas[0].seriesName + '(' + datas[0].data[0] + ')' + ':' + datas[0].data[1]
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
- //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title
8804
- title: [
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
- show: true,
8807
- text: title,
8808
- left: 'center',
8809
- top: 0,
8810
- textStyle: {
8811
- fontSize: 14,
8812
- fontWeight: 'normal',
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
- show: true,
8817
- text: xName,
8818
- left: 'center',
8819
- bottom: 0,
8820
- textStyle: {
8821
- fontSize: 12,
8822
- fontWeight: 'normal',
8823
- },
8824
- },
8825
- ],
8826
- //图例,参考文档:https://echarts.apache.org/zh/option.html#legend
8827
- legend: {
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
- selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)
8835
- },
8836
- xAxis: {
8837
- type: 'value',
8838
- axisTick: { show: false }, //隐藏刻度线
8839
- axisLabel: { show: false }, //隐藏刻度值
8840
- //网格线,参考文档:https://echarts.apache.org/zh/option.html#xAxis.splitLine
8841
- splitLine: {
8842
- show: false, //隐藏分割线
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
- min: 0,
8845
- max: 23.5,
8846
- },
8847
- yAxis: [
8726
+ /* --- ④ a2 横向绿色线(从 y 轴到 a2)+ 文字标注 --- */
8848
8727
  {
8849
- type: 'value',
8850
- name: yName,
8851
- nameGap: !isAllNull ? 30 : 10,
8852
- nameRotate: 90,
8853
- nameLocation: 'middle',
8854
- splitLine: {
8855
- show: true,
8856
- lineStyle: {
8857
- color: '#e0e6f1', //'#e0e6f1',
8858
- type: 'solid',
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
- splitNumber: 4, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……
8862
- min: !isAllNull ? yAxisMin : null,
8863
- max: yAxisMax,
8864
- axisLabel: {
8865
- show: !isAllNull ? true : false,
8866
- fontSize: xyFontSize,
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
- axisTick: {
8869
- show: !isAllNull ? true : false,
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 option;
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
- option = EChartsUtilsAll.chart350(config, xDataArr, yDataArr, sheet);
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
  /**
@@ -19688,15 +19621,16 @@ const FormulaUtils = {
19688
19621
  else {
19689
19622
  x = Number(x);
19690
19623
  }
19691
- let tempXData = [], tempYData = [];
19692
- xData.forEach((element, index) => {
19693
- if (element && element != 0) {
19694
- tempXData.push(element);
19695
- tempYData.push(yData[index]);
19696
- }
19697
- });
19698
- xData = tempXData;
19699
- yData = tempYData;
19624
+ // let tempXData = [],
19625
+ // tempYData = [];
19626
+ // xData.forEach((element, index) => {
19627
+ // if (element && element != 0) {
19628
+ // tempXData.push(element);
19629
+ // tempYData.push(yData[index]);
19630
+ // }
19631
+ // });
19632
+ // xData = tempXData;
19633
+ // yData = tempYData;
19700
19634
  // console.log(111, retData);
19701
19635
  // console.log(222, xData);
19702
19636
  // console.log(333, yData);