如何在 rechart 的 y 轴上给出字符串值
how to give string value on y axis in rechart
我正在研究 Recat.js 并使用 rechart 库来实现图表。我想在 y 轴上给出字符串值作为标签,并在 x 轴的 json 数据中包含的一些数字上进行训练。我在这里给出我的代码,我不知道为什么它不能正常工作。值键对必须通过 x 轴和 y 轴上的标签值。但它不工作。请帮我解决这个问题。我正在提供我的代码
"timestamp": 1645727400000,
"value": 1,
"label":"connection_recovered"
},
{
"timestamp": 1645790232297,
"value": 2,
"label":"up"
},
{
"timestamp": 1645790232297,
"value": -2,
"label":"down"
},
{
"timestamp": 1645790232297,
"value": 2,
"label":"up"
},
{
"timestamp": 1645790232297,
"value": -2,
"label":"down"
}]
return (
<Container lg={6}>
<ResponsiveContainer aspect="3">
<AreaChart
width={500}
height={400}
data={data}
margin={{
top: 10,
right: 30,
left: 0,
bottom: 0,
}}
>
<CartesianGrid strokeDasharray="3 3" />
<XAxis style={{fontSize:"12px"}} dataKey="timestamp" />
<YAxis dataKey="label" type="category" />
<Tooltip />
<defs>
<linearGradient id="splitColor" x1="0" y1="0" x2="0" y2="1">
<stop offset={off} stopColor="green" stopOpacity={1} />
<stop offset={off} stopColor="red" stopOpacity={1} />
</linearGradient>
</defs>
<Area style={{fontSize:"12px"}}
type="monotone"
dataKey="value"
stroke="#000"
fill="url(#splitColor)"
/>
</AreaChart>
</ResponsiveContainer>
</Container>
);
}
在您的数据数组中,我假设
的值
2
将始终具有 "up"
标签,
1
"connection_recovered"
标签和
-2
"down"
标签。
为了让标签在 YAxis 图表中的固定刻度上,您可以使用 tickFormatter 属性,您可以在其中传递一个函数,该函数可以 return 您想要的标签值。
它将给出以下内容:
// Depending on the value of the tick, you'll have a different label
function formatYAxis(value: number) {
switch(value) {
case 2:
return "up";
case -2:
return "down";
case 1:
return "connection_recovered";
default:
return ""
}
}
像这样在Y轴中使用:
<YAxis tickFormatter={formatYAxis} />
这会给出如下图
我正在研究 Recat.js 并使用 rechart 库来实现图表。我想在 y 轴上给出字符串值作为标签,并在 x 轴的 json 数据中包含的一些数字上进行训练。我在这里给出我的代码,我不知道为什么它不能正常工作。值键对必须通过 x 轴和 y 轴上的标签值。但它不工作。请帮我解决这个问题。我正在提供我的代码
"timestamp": 1645727400000,
"value": 1,
"label":"connection_recovered"
},
{
"timestamp": 1645790232297,
"value": 2,
"label":"up"
},
{
"timestamp": 1645790232297,
"value": -2,
"label":"down"
},
{
"timestamp": 1645790232297,
"value": 2,
"label":"up"
},
{
"timestamp": 1645790232297,
"value": -2,
"label":"down"
}]
return (
<Container lg={6}>
<ResponsiveContainer aspect="3">
<AreaChart
width={500}
height={400}
data={data}
margin={{
top: 10,
right: 30,
left: 0,
bottom: 0,
}}
>
<CartesianGrid strokeDasharray="3 3" />
<XAxis style={{fontSize:"12px"}} dataKey="timestamp" />
<YAxis dataKey="label" type="category" />
<Tooltip />
<defs>
<linearGradient id="splitColor" x1="0" y1="0" x2="0" y2="1">
<stop offset={off} stopColor="green" stopOpacity={1} />
<stop offset={off} stopColor="red" stopOpacity={1} />
</linearGradient>
</defs>
<Area style={{fontSize:"12px"}}
type="monotone"
dataKey="value"
stroke="#000"
fill="url(#splitColor)"
/>
</AreaChart>
</ResponsiveContainer>
</Container>
);
}
在您的数据数组中,我假设
的值2
将始终具有"up"
标签,1
"connection_recovered"
标签和-2
"down"
标签。
为了让标签在 YAxis 图表中的固定刻度上,您可以使用 tickFormatter 属性,您可以在其中传递一个函数,该函数可以 return 您想要的标签值。
它将给出以下内容:
// Depending on the value of the tick, you'll have a different label
function formatYAxis(value: number) {
switch(value) {
case 2:
return "up";
case -2:
return "down";
case 1:
return "connection_recovered";
default:
return ""
}
}
像这样在Y轴中使用:
<YAxis tickFormatter={formatYAxis} />
这会给出如下图