gpt4 book ai didi

css - 带有多条线和工具提示的胜利图表

转载 作者:行者123 更新时间:2023-12-04 13:46:40 31 4
gpt4 key购买 nike

我正在制作一个图表,必须为每个数据点缩放和显示工具提示。在 Victory 的文档中有一个 multi-line chart with tooltips但是,如果您调整数据集,工具提示会重叠。我发现 VictoryPortal 是一种克服此问题的机制,但似乎即使在链接的示例中,它也使用 VictoryPortal。 (工具提示的 Prop 有 renderInPortal: true, )

为了克服这个问题,我在 Lines/Scatters 之后创建了第二个 VictoryGroup,它只是 的 Scatters。全部 数据集合并并给了它们 opacity: 0所以看起来你是在原来的 Scatter 点上悬停。这种方法有效,但感觉必须有一种我在这里缺少的更好、更干净的方法。我不知道如何使用 Victory 制作一个片段,所以这里是有问题的代码:

为一组中的单个数据集渲染线/散点的方法:

renderLine = (m, i) => (
this.state.s[i]
? <VictoryGroup
key={i}
color={m.color}
data={m.data}
labels={(d) => `y: ${d.y}\nx: ${d.x}`}
labelComponent={
<VictoryTooltip
cornerRadius={0}
style={{ fontSize: 10 }}
/>}
>
<VictoryLine />
<VictoryScatter size={(d, a) => a ? 8 : 3} />
</VictoryGroup>
: null
)

我的渲染方法:
render() {
const { renderLine } = this
return (
<div style={{ width: '50vw', margin: '0 auto' }}>
<VictoryChart
height={400}
width={400}
padding={30}
containerComponent={<VictoryZoomContainer />}>
<VictoryAxis
domain={{ x: [-180, 180] }}
standalone
label={'Angle (°)'}
style={axisStyle}
crossAxis={false}
orientation={'bottom'}
axisLabelComponent={
<VictoryLabel orientation={'top'} y={'97%'} verticalAnchor={'end'} />
}
gridComponent={
<Line
style={{
...axisStyle.grid,
transform: 'translate3d(0,100%,0)'
}}
/>
}
tickCount={12}
tickLabelComponent={<VictoryLabel dy={-5} />}
/>
<VictoryAxis
dependentAxis
orientation={'left'}
label={'Discriminiation (dB)'}
axisLabelComponent={
<VictoryLabel orientation={'left'} x={15} />
}
standalone
offsetX={30}
style={axisStyle}
/>
{masterData.map((d, i) => renderLine(d, i))}
<VictoryGroup
color={'rgba(0,0,0,0)'}
data={[...dataSet, ...dataSet2, ...dataSet3, ...dataSet4]}
labels={(d) => `y: ${d.y}\nx: ${d.x}`}
labelComponent={
<VictoryTooltip
cornerRadius={0}
style={{ fontSize: 10 }}
/>}
>
<VictoryScatter size={(d, a) => a ? 8 : 3} />
</VictoryGroup>
</VictoryChart>
</div>
);
}

任何意见或建议将不胜感激。提前致谢!

最佳答案

我从一个类似的解决方案开始,但最后我使用 VoronoiContainer 组件并使用那里的工具提示取得了一些成功的结果。

https://formidable.com/open-source/victory/docs/victory-voronoi-container/

您必须在 VictoryChart 中放置一个 VoronoiContainer 作为 containerComponent。

使用该方法不需要 VictoryScatter。

关于css - 带有多条线和工具提示的胜利图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45822447/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com