如何在 react-vis 中 reverse/descend/sort x 轴数据
How to reverse/descend/sort x-axis data in react-vis
我在文档中找不到这个。我想显示一个 X 轴渲染日期和时间的图表,左侧是 最近的 数据。我曾希望只反转数据 属性 数组就可以做到,但 react-vis 库比这更聪明。
我还以为信息在this documentation page。
那么,我如何 对 x 轴进行降序排序?
代码示例
function ExampleGraph(props) {
const {
data,
x, y,
} = props
// const keys = Object.keys(data)
// if(keys.length>2){
// console.error({data}, "has too many dimensions for x-y")
// }
const keys=[x,y]
const xyData = (()=> {
const xKey = keys[0]
const yKey = keys[1]
const xArgs = data.map(r => (r[xKey]))
const yArgs = data.map(r => (r[yKey]))
const coords = xArgs.map((x, i) => ({
x: x,
y: yArgs[i]
}))
return coords
})()
return (
<XYPlot
width={1000}
height={640}>
<HorizontalGridLines />
<LineSeries
data={xyData}
/>
<XAxis />
<YAxis />
</XYPlot>
)
}
呈现组件的 BlazeJS (MeteorJS) 模板
<template name="stepCountsGraph">
<div>
{{> React
component=ExampleGraph
data=stepCounts
y="step_count"
x="time"
}}
</div>
</template>
您应该可以通过指定 xDomain 来反转它! react-vis 接受每个维度的各种属性(例如 xDomain/xRange/xType 和 yDomain/yRange/yType),因此如果您想控制图表的确切布局,您可以指定部分或全部这些属性。为了实现您所描述的反向域效果,您可以将您的片段修改成这样
function ExampleGraph() {
const xKey = this.props.x;
const yKey = this.props.y;
const xyData = data.map(r => ({x: r[xKey], y: r[yKey]}));
const xDomain = data.reduce((res, row) => {
return {max: Math.max(res.max, row[xKey]), min: Math.min(res.min, row[xKey])};
}, {min: Infinity, max: -Infinity});
return (
<XYPlot
xDomain={[xDomain.max, xDomain.min]}
width={1000}
height={640}>
<HorizontalGridLines />
<LineSeries data={xyData} />
<XAxis />
<YAxis />
</XYPlot>
)
}
希望这能回答您的问题!我已经打开一个问题以将此类说明添加到文档 here.
我在文档中找不到这个。我想显示一个 X 轴渲染日期和时间的图表,左侧是 最近的 数据。我曾希望只反转数据 属性 数组就可以做到,但 react-vis 库比这更聪明。
我还以为信息在this documentation page。
那么,我如何 对 x 轴进行降序排序?
代码示例
function ExampleGraph(props) {
const {
data,
x, y,
} = props
// const keys = Object.keys(data)
// if(keys.length>2){
// console.error({data}, "has too many dimensions for x-y")
// }
const keys=[x,y]
const xyData = (()=> {
const xKey = keys[0]
const yKey = keys[1]
const xArgs = data.map(r => (r[xKey]))
const yArgs = data.map(r => (r[yKey]))
const coords = xArgs.map((x, i) => ({
x: x,
y: yArgs[i]
}))
return coords
})()
return (
<XYPlot
width={1000}
height={640}>
<HorizontalGridLines />
<LineSeries
data={xyData}
/>
<XAxis />
<YAxis />
</XYPlot>
)
}
呈现组件的 BlazeJS (MeteorJS) 模板
<template name="stepCountsGraph">
<div>
{{> React
component=ExampleGraph
data=stepCounts
y="step_count"
x="time"
}}
</div>
</template>
您应该可以通过指定 xDomain 来反转它! react-vis 接受每个维度的各种属性(例如 xDomain/xRange/xType 和 yDomain/yRange/yType),因此如果您想控制图表的确切布局,您可以指定部分或全部这些属性。为了实现您所描述的反向域效果,您可以将您的片段修改成这样
function ExampleGraph() {
const xKey = this.props.x;
const yKey = this.props.y;
const xyData = data.map(r => ({x: r[xKey], y: r[yKey]}));
const xDomain = data.reduce((res, row) => {
return {max: Math.max(res.max, row[xKey]), min: Math.min(res.min, row[xKey])};
}, {min: Infinity, max: -Infinity});
return (
<XYPlot
xDomain={[xDomain.max, xDomain.min]}
width={1000}
height={640}>
<HorizontalGridLines />
<LineSeries data={xyData} />
<XAxis />
<YAxis />
</XYPlot>
)
}
希望这能回答您的问题!我已经打开一个问题以将此类说明添加到文档 here.