Мой источник данных выглядит так:
const data = [
{ dataora: "2019-10-20T04:00:00Z", valore: -0.04 },
{ dataora: "2019-10-20T05:00:00Z", valore: -0.03 },
{ dataora: "2019-10-20T06:00:00Z", valore: -0.03 },
{ dataora: "2019-10-20T07:00:00Z", valore: -0.03 },
{ dataora: "2019-10-21T10:00:00Z", valore: -0.04 },
{ dataora: "2019-10-21T23:00:00Z", valore: -0.04 },
{ dataora: "2019-10-22T00:00:00Z", valore: -0.04 }
];
Мой recharts
компонент выглядит так:
<LineChart width={600} height={300} data={data}>
<Line type="monotone" dataKey="valore" stroke="black" strokeWidth={2} dot={false} />
<CartesianGrid stroke="#ccc" />
<XAxis
dataKey={'dataora'}
tickFormatter={dateFormatter}
/>
<YAxis />
</LineChart>
dateFormatter
выглядит так:
const dateFormatter = date => {
// return moment(date).unix();
return moment(date).format('DD/MM/YY HH:mm');
};
Обычно у меня ввод данных каждые два часа, но 2019-10-21
имеет только два значения за целый день, теперь я хотел бы также показать недостающие часы на моем графике. В других записях данных я могу получить другой промежуток времени, поэтому я не могу установить интервал между тиками вручную. Мне просто нужно, чтобы поле даты было равномерно распределено по XAxis.
Я пытался изменить tickFormatter
чтобы вернуть дату в Unix эпохальных секундах и использовать нижеприведенные реквизиты ..
scale="time" type="number" domain={[dateFormatter(data[0].dataora), dateFormatter(data[1].dataora)]}
, но XAxis исчез вместе со строкой данных. Есть ли способ «заполнить» эти пробелы в датах?
A коды и поле