Повторные диаграммы с несколькими строками - PullRequest
2 голосов
/ 27 сентября 2019

Я хочу создать компонент ReChart, который имеет несколько строк.

ТАК, что у меня есть этот фиктивный код.

<LineChart
  data={data}
  margin={{
    top: 16,
    right: 16,
    bottom: 0,
    left: 24
  }}
>
  <XAxis dataKey="time" />
  <YAxis>
    <Label angle={270} position="left" style={{ textAnchor: "middle" }}>
      Cyber assesment
    </Label>
  </YAxis>
  <Line type="monotone" dataKey="amount" stroke="#556CD6" dot={false} />
</LineChart>

с данными, являющимися массивом, с объектом с двумя значениями:

function createData(time, amount) {
  return { time, amount };
}

const data = [
  createData('00:00', 0),
  createData('03:00', 300),
  createData('06:00', 600),
  createData('09:00', 800),
  createData('12:00', 1500),
  createData('15:00', 2000),
  createData('18:00', 2400),
  createData('21:00', 2400),
  createData('24:00', undefined),
];

я хочу сделать так, чтобы я мог построить несколько линий, где я пытался создать другуюФункция и добавление других данных, в тот же массив, но без хорошего результата.

Как этого достичь?

Я пытался создать рабочий пример, но безуспешно

function createData(amountA, amountB) {
  return {a: amountA, b: amountB  };
}

const data = [
  createData(100, 200),
  createData(200, 400),
  createData(400, 500),
  createData(600, 800),
  createData(650, 700),
  createData(900, 800)
];

export default function Chart() {
    console.log(data)
  return (
    <React.Fragment>
      <Title>Performance indication</Title>
      <ResponsiveContainer>
        <LineChart
          data={data}
          margin={{
            top: 16,
            right: 16,
            bottom: 0,
            left: 24,
          }}
        >
          <XAxis dataKey="time" />
          <YAxis>
            <Label angle={270} position="left" style={{ textAnchor: 'middle' }}>
              Cyber assesment
            </Label>
          </YAxis>
          <Line type="monotone" dataKey={data.a} stroke="#556CD6" dot={false} />
          <Line type="monotone" dataKey={data.b} stroke="#556CD6" dot={false} />
        </LineChart>
      </ResponsiveContainer>
    </React.Fragment>

1 Ответ

2 голосов
/ 27 сентября 2019

Просто объявите два Line и два YAxis components внутри вашего LineChart и явно объявите yAxisId.Вот пример одного из наших

<LineChart data={data} margin={{ left: -10, right: 10 }}>
    <XAxis height={40} dataKey="part" tick={{ fontSize: 10 }}>
        <Label
            value='Período'
            position='insideBottom'
            fontSize={14}
            fill='#676767'
        />
    </XAxis>
    <YAxis width={80} yAxisId="left" tick={{ fontSize: 10 }}>
        <Label
            value={selected.A}
            angle={-90}
            position='outside'
            fill='#676767'
            fontSize={14}
        />
    </YAxis>
    <YAxis width={80} yAxisId="right" orientation="right" tick={{ fontSize: 10, }}>
        <Label
            value={selected.B}
            angle={-90}
            position='outside'
            fill='#676767'
            fontSize={14}
        />
    </YAxis>
    <Tooltip formatter={(value) => floatParser(value)} />
    <Line yAxisId="left" type="monotone" dataKey={selected.A} stroke={colors[1]} />
    <Line yAxisId="right" type="monotone" dataKey={selected.B} stroke={colors[0]} />
</LineChart>

enter image description here

data массив:

const data = [
    { part: 'foo', axisA: 21211, axisB: 1232 }
]
...