code: function prepareSymbolSize(
      data, dataIndex, layout, symbolRepeat, symbolClip, boundingLength,
      pxSign, symbolPatternSize, opt, output
  ) {
      var valueDim = opt.valueDim;
      var categoryDim = opt.categoryDim;
      var categorySize = Math.abs(layout[categoryDim.wh]);
  
      var symbolSize = data.getItemVisual(dataIndex, 'symbolSize');
      if (zrUtil.isArray(symbolSize)) {
          symbolSize = symbolSize.slice();
      }
      else {
          if (symbolSize == null) {
              symbolSize = '100%';
          }
          symbolSize = [symbolSize, symbolSize];
      }
  
      // Note: percentage symbolSize (like '100%') do not consider lineWidth, because it is
      // to complicated to calculate real percent value if considering scaled lineWidth.
      // So the actual size will bigger than layout size if lineWidth is bigger than zero,
      // which can be tolerated in pictorial chart.
  
      symbolSize[categoryDim.index] = parsePercent(
          symbolSize[categoryDim.index],
          categorySize
      );
      symbolSize[valueDim.index] = parsePercent(
          symbolSize[valueDim.index],
          symbolRepeat ? categorySize : Math.abs(boundingLength)
      );
  
      output.symbolSize = symbolSize;
  
      // If x or y is less than zero, show reversed shape.
      var symbolScale = output.symbolScale = [
          symbolSize[0] / symbolPatternSize,
          symbolSize[1] / symbolPatternSize
      ];
      // Follow convention, 'right' and 'top' is the normal scale.
      symbolScale[valueDim.index] *= (opt.isHorizontal ? -1 : 1) * pxSign;
  }
docs: Support ['100%', '100%']