You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apexchart-reactjs库阿拉伯语Y轴标签不支持问题求助

Fixing Arabic Y-Axis Labels in React-ApexCharts

Hey there! I’ve dealt with similar RTL text challenges in ApexCharts before, so let’s walk through a few practical workarounds to get your Arabic Y-axis labels up and running—since you haven’t heard back from the devs yet, these should help bridge the gap.

1. Use a Custom Label Formatter + RTL Styling

The simplest approach is to leverage ApexCharts’ built-in yaxis.labels.formatter function to return Arabic text directly, then tweak the CSS to handle right-to-left rendering. Here’s how to implement it:

import React from "react";
import Chart from "react-apexcharts";

const ArabicLineChart = () => {
  const options = {
    yaxis: {
      labels: {
        // Map numerical values to Arabic labels (adjust this to your use case)
        formatter: (value) => {
          const arabicValueMap = {
            0: "صفر",
            10: "عشر",
            20: "عشرون",
            30: "ثلاثون",
            // Add more mappings as needed
          };
          // Fallback to converted Arabic digits if no label exists
          return arabicValueMap[value] || convertNumToArabicDigits(value);
        },
        style: {
          // Use a font that supports Arabic characters (load this locally in your project!)
          fontFamily: "'Noto Naskh Arabic', serif",
          direction: "rtl",
        },
      },
    },
    // Keep your other chart config here
  };

  const series = [
    {
      name: "بياناتي",
      data: [0, 10, 20, 30, 25, 15],
    },
  ];

  // Helper function to convert English digits to Arabic
  const convertNumToArabicDigits = (num) => {
    const arabicDigits = ["٠", "١", "٢", "٣", "٤", "٥", "٦", "٧", "٨", "٩"];
    return num.toString().split("").map((d) => arabicDigits[parseInt(d)]).join("");
  };

  return <Chart options={options} series={series} type="line" height={400} />;
};

export default ArabicLineChart;

Pro Tip: Make sure to include an Arabic-compatible font in your project (e.g., Amiri, Noto Naskh Arabic) via local font files or project-side CSS. This ensures the Arabic characters render correctly without relying on external links.

2. Manipulate the DOM Post-Render

If the formatter doesn’t give you enough control, you can directly modify the Y-axis label elements after the chart renders. This works well if you need to override auto-generated labels:

import React, { useEffect, useRef } from "react";
import Chart from "react-apexcharts";

const ArabicLineChart = () => {
  const chartRef = useRef(null);

  useEffect(() => {
    if (chartRef.current) {
      // Target all Y-axis label elements
      const yAxisLabels = chartRef.current.chart.el.querySelectorAll(".apexcharts-yaxis-label");
      
      yAxisLabels.forEach((label) => {
        // Replace the text with your Arabic equivalent
        const originalValue = label.textContent;
        label.textContent = convertNumToArabicDigits(originalValue);
        
        // Apply RTL styling
        label.style.direction = "rtl";
        label.style.fontFamily = "'Noto Naskh Arabic', serif";
      });
    }
  }, []);

  // Same helper function as before
  const convertNumToArabicDigits = (num) => {
    const arabicDigits = ["٠", "١", "٢", "٣", "٤", "٥", "٦", "٧", "٨", "٩"];
    return num.toString().split("").map((d) => arabicDigits[parseInt(d)]).join("");
  };

  // Your chart options and series here...

  return <Chart ref={chartRef} options={options} series={series} type="line" height={400} />;
};

3. Try Global RTL Chart Configuration

ApexCharts has a lesser-documented chart.dir property that might enable global RTL rendering, which could fix label alignment automatically:

const options = {
  chart: {
    dir: "rtl", // Enable RTL mode for the entire chart
  },
  yaxis: {
    labels: {
      style: {
        fontFamily: "'Noto Naskh Arabic', serif",
      },
    },
  },
  // Other config...
};

This might not work perfectly for all chart types, but it’s worth testing as a quick fix.


All these methods have worked for me in past projects when dealing with Arabic text in ApexCharts. If none of these solve your issue, you might need to wait for an official RTL update from the library maintainers—but in the meantime, these workarounds should get your labels displaying correctly.

内容的提问来源于stack exchange,提问作者Fadi Ramzi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:01:19