Как отобразить название метки данных по оси y при повторном использовании?

#reactjs #recharts

#reactjs #повторная загрузка

Вопрос:

Проблема:

Я создал вертикальные столбчатые диаграммы с использованием recharts. Здесь я предоставляю свой код.

 import React, { Component, PureComponent } from "react";

import { Card, CardBody, CardTitle } from "reactstrap";
import {
  Bar,
  BarChart,
  Tooltip,
  XAxis,
  YAxis,
  ResponsiveContainer,
  Cell,
  LabelList
} from "recharts";

import "./SubcribersByRegion.css";

const colors = [
  "#138185",
  "#26a0a7",
  "#65d3da",
  "#79d69f",
  "#cbe989",
  "#ebf898",
  "#f9ec86",
  "#fad144",
  "#ec983d",
  "#d76c6c"
];

const data = [
  {
    name: "Page A",
    pv: 2400,
    amt: 2400
  },
  {
    name: "Page B",
    pv: 1398,
    amt: 2210
  },
  {
    name: "Page C",
    pv: 9800,
    amt: 2290
  },
  {
    name: "Page D",
    pv: 3908,
    amt: 2000
  },
  {
    name: "Page E",
    pv: 4800,
    amt: 2181
  },
  {
    name: "Page F",
    pv: 3800,
    amt: 2500
  },
  {
    name: "Page G",
    pv: 4300,
    amt: 2100
  },
  {
    name: "Page H",
    pv: 4300,
    amt: 2100
  },
  {
    name: "Page I",
    pv: 4300,
    amt: 2100
  },
  {
    name: "Page J",
    pv: 4300,
    amt: 2100
  }
];

class SubcribersByRegion extends Component {
  render() {
    return (
      <div>
        <Card className="subscribers-by-region-card">
          <CardTitle className="subscribers-by-region-card-title">
            Subscribers by Region
          </CardTitle>
          <CardBody>
            <ResponsiveContainer width="100%" height="100%" aspect={5.0 / 6.0}>
              <BarChart
                data={data}
                layout="vertical"
                barGap={4}
                margin={{
                  top: 6,
                  right: 50,
                  left: 0,
                  bottom: 0
                }}
              >
                <Tooltip />
                <XAxis type="number" className="xaxies" dy={1} />
                <YAxis type="category" />
                <Bar dataKey="pv" fill="#8884d8" maxBarSize={10}>
                  {data.map((entry, index) => (
                    <Cell key={`cell-${index}`} fill={colors[index]} />
                  ))}
                  <LabelList dataKey="pv" position="right" />
                </Bar>
              </BarChart>
            </ResponsiveContainer>
          </CardBody>
        </Card>
      </div>
    );
  }
}

export default SubcribersByRegion;
  

Это показывает мне 0,1,2 ……. по оси y я хочу показать страницу A, страницу B,…
Может ли кто-нибудь помочь мне решить эту проблему, изменив мой код? Спасибо? Я много пытался найти решение этой проблемы, но мне не удалось найти какое-либо хорошее решение для этой проблемы.

Ответ №1:

https://recharts.org/en-US/api/YAxis

Из документов мы можем видеть, <Label /> является дочерним компонентом YAxis

https://recharts.org/en-US/api/Label

Label имеет поддержку для value

Добавьте Label компонент в качестве дочернего элемента YAxis

Добавление стилей https://github.com/recharts/recharts/issues/720

 <YAxis dataKey={"height"} yAxisId={"height"}>
    <Label
         style={{
             textAnchor: "middle",
             fontSize: "130%",
             fill: "white",
         }}
      angle={270} 
      value={"Height (ft.)"} />
</YAxis>
  

Ответ №2:

Вам просто нужно указать, что dataKey означает для оси.

<YAxis type="category" dataKey="name" />

Ответ №3:

Оси X и yAxis действительно имеют свойство с именем label, которое может использоваться для предоставления текста метки по осям. Примерный пример, который является необязательным, поэтому, если вы ищете ответ в 2023 году, возможно, это может быть полезно. Для того же, на приведенное ниже можно сослаться из официальной документации https://recharts.org/en-US/api/YAxis