Search code examples
javascriptcssvue.jsapexcharts

Vue apexcharts Y-axis label hiding in horizontal barchart


I'm using apexcharts with vue (vue-apexcharts 1.6.1) and making horizontal barchart for UHD resolution. The apexcharts inner is overflowing the chart width which is 100%.

Here is the template code:

<template>
  <div>
    <apexchart height="820" type="bar" :options="options" :series="series"></apexchart>
  </div>
</template>

And here is the chart options:

options() {
  return {
    chart: {
      type: 'bar',
      width: "100%",
      height: 820,
      toolbar: {
        show: false
      }
    },
    legend: {
      show: false
    },
    xaxis: {
      categories: this.categoryData,
      axisBorder: {
        show: false
      },
      axisTicks: {
        show: false
      },
      labels: {
        show: false
      }
    },
    yaxis: {
      opposite: true,
      labels: {
        style: {
          colors: ["#BEBFCB"],
          fontSize: "40px"
        }
      }
    },
    fill: {
      colors: ["#0E5CAD", "#EA5455", "#0396FF", "#7367F0", "#D939CD"],
      type: "gradient",
      gradient: {
        shade: "light",
        gradientToColors: [
          "#79f1a4",
          "#feb692",
          "#abdcff",
          "#ce9ffc",
          "#f6ceec"
        ],
        shadeIntensity: 1,
        type: "diagonal1",
        opacityFrom: 1,
        opacityTo: 1,
        stops: [0, 100]
      }
    },
    plotOptions: {
      bar: {
        horizontal: true,
        distributed: true,
        borderRadius: 10,
        barHeight: "70%",
        colors: {
          ranges: [
            {
              from: 0,
              to: 0,
              color: "pink"
            }
          ],
          backgroundBarColors: "#272A52",
          backgroundBarRadius: 10
        }
      }
    },
    dataLabels: {
      enabled: false
    },
    tooltip: {
      enabled: false
    },
    responsive: [
      {
        breakpoint: 3199,
        options: {
          chart: {
            height: 300
          },
          yaxis: {
            opposite: true,
            labels: {
              style: {
                colors: ["#BEBFCB"],
                fontsize: "14px"
              }
            }
          },
          plotOptions: {
            bar: {
              borderRadius: 4,
              colors: {
                backgroundBarRadius: 4
              }
            }
          }
        }
      }
    ]
  };
}

Here's the output of above code: Output of above code Output of above code with dev tools

Expected behavior: Expected behavior design

How can I adjust the chart so that my site matches the design? Right now the font-size of label is 40px in UHD resolution.

Thanks

P.S. I'm not using flex in any ancestor elements.


Solution

  • I solved this issue by giving maxWidth to y-axis label and by manipulating my x-axis categories to be in multiline.

    After fix image

    yaxis: {
          opposite: true,
          labels: {
            maxWidth: "auto",
            style: {
              colors: ["#BEBFCB"],
              fontSize: "40px"
            }
          }
        }