## 图表类型：精灵 (Spirits)

**生成指令**：你现在的任务是生成一个 ECharts 的 `option` 配置。请根据以下骨架代码和数据结构要求，结合用户的实际数据进行填充和修改，生成一份完整的图表配置参数。

### ECharts Option 骨架参考
请基于此结构（已剥离冗长写死的数据）生成配置。不要直接输出此骨架，而是要输出**包含真实数据和完整逻辑**的完整 `option` 对象：

```javascript
const spirit =
  'image://data:image/png;base64,[encoded data, 13212 characters]';
var maxData = 2000;
option = {
  tooltip: {},
  xAxis: {
    max: maxData,
    splitLine: { show: false },
    offset: 10,
    axisLine: {
      lineStyle: {
        color: '#999'
      }
    },
    axisLabel: {
      margin: 10
    }
  },
  yAxis: {
    data: ['2013', '2014', '2015', '2016'],
    inverse: true,
    axisTick: { show: false },
    axisLine: { show: false },
    axisLabel: {
      margin: 10,
      color: '#999',
      fontSize: 16
    }
  },
  grid: {
    top: 'center',
    height: 200,
    left: 70,
    right: 100
  },
  series: [
    {
      // current data
      type: 'pictorialBar',
      symbol: spirit,
      symbolRepeat: 'fixed',
      symbolMargin: '5%',
      symbolClip: true,
      symbolSize: 30,
      symbolBoundingData: maxData,
      data: [891, 1220, 660, 1670],
      markLine: {
        symbol: 'none',
        label: {
          formatter: 'max: {c}',
          position: 'start'
        },
        lineStyle: {
          color: 'green',
          type: 'dotted',
          opacity: 0.2,
          width: 2
        },
        data: [
          {
            type: 'max'
          }
        ]
      },
      z: 10
    },
    {
      // full data
      type: 'pictorialBar',
      itemStyle: {
        opacity: 0.2
      },
      label: {
        show: true,
        formatter: function (params) {
          return ((params.value / maxData) * 100).toFixed(1) + ' %';
        },
        position: 'right',
        offset: [10, 0],
        color: 'green',
        fontSize: 18
      },
      animationDuration: 0,
      symbolRepeat: 'fixed',
      symbolMargin: '5%',
      symbol: spirit,
      symbolSize: 30,
      symbolBoundingData: maxData,
      data: [891, 1220, 660, 1670],
      z: 5
    }
  ]
};
// Make dynamic data.
function random() {
  return +(Math.random() * (maxData - 10)).toFixed(1);
}
setInterval(function () {
  const dynamicData = [random(), random(), random(), random()];
  myChart.setOption({
    series: [
      {
        data: dynamicData.slice()
      },
      {
        data: dynamicData.slice()
      }
    ]
  });
}, 3000);
```

