<template>
  <div>
    <div id="chart">
      <apexchart
        type="line"
        height="350"
        :options="chartOptions"
        :series="series"
      ></apexchart>
    </div>
  </div>
</template>

<script>
import VueApexCharts from 'vue-apexcharts'

// This demo also loads: https://apexcharts.com/samples/assets/stock-prices.js

export default {
  components: {
    apexchart: VueApexCharts,
  },
  data: function () {
    return {
      series: [
        {
          name: 'Price',
          data: series.monthDataSeries1.prices,
        },
      ],
      chartOptions: {
        chart: {
          height: 350,
          type: 'line',
          id: 'areachart-2',
        },
        annotations: {
          yaxis: [
            {
              y: 8200,
              borderColor: '#00E396',
              label: {
                borderColor: '#00E396',
                style: {
                  color: '#fff',
                  background: '#00E396',
                },
                text: 'Support',
              },
            },
            {
              y: 8600,
              y2: 9000,
              borderColor: '#000',
              fillColor: '#FEB019',
              opacity: 0.2,
              label: {
                borderColor: '#333',
                style: {
                  fontSize: '10px',
                  color: '#333',
                  background: '#FEB019',
                },
                text: 'Consolidation zone',
              },
            },
          ],
          xaxis: [
            {
              x: new Date('23 Nov 2025').getTime(),
              strokeDashArray: 0,
              borderColor: '#775DD0',
              label: {
                borderColor: '#775DD0',
                style: {
                  color: '#fff',
                  background: '#775DD0',
                },
                text: 'Earnings',
              },
            },
            {
              x: new Date('26 Nov 2025').getTime(),
              x2: new Date('28 Nov 2025').getTime(),
              fillColor: '#B3F7CA',
              opacity: 0.4,
              label: {
                borderColor: '#B3F7CA',
                style: {
                  fontSize: '10px',
                  color: '#fff',
                  background: '#00E396',
                },
                offsetY: -10,
                text: 'Holiday week',
              },
            },
          ],
          points: [
            {
              x: new Date('01 Dec 2025').getTime(),
              y: 8607.55,
              marker: {
                size: 8,
                fillColor: '#fff',
                strokeColor: 'red',
                radius: 2,
                cssClass: 'apexcharts-custom-class',
              },
              label: {
                borderColor: '#FF4560',
                offsetY: 0,
                style: {
                  color: '#fff',
                  background: '#FF4560',
                },

                text: 'Analyst upgrade',
              },
            },
            {
              x: new Date('08 Dec 2025').getTime(),
              y: 9340.85,
              marker: {
                size: 0,
              },
              image: {
                path: '../../assets/images/ico-instagram.png',
              },
            },
          ],
        },
        dataLabels: {
          enabled: false,
        },
        stroke: {
          curve: 'straight',
        },
        grid: {
          padding: {
            right: 30,
            left: 20,
          },
        },
        title: {
          text: 'Line with Annotations',
          align: 'left',
        },
        labels: series.monthDataSeries1.dates.map(function (d) {
          return d.replace('2017', '2025')
        }),
        xaxis: {
          type: 'datetime',
        },
      },
    }
  },
}
</script>

<style>
#chart {
  max-width: 650px;
  margin: 35px auto;
}
</style>
Line with Annotations - Vue Line Charts | ApexCharts.js | ApexCharts.js