recharts - 如何在 Rechart 中计算自定义 CartesianGrid 的线条。如何重新映射到正确的域
问题描述
CartesianGrid 允许我设置要显示的verticalPoints 和horizontalPoints。
不幸的是,这些值是图表上的像素值,而不是 x 和 y 域的坐标。
我肯定错过了什么。我有一个 x 轴和一个 y 轴。如何将这些域中的值映射到图表上的位置?
解决方案
因此,给定一些定义图表的常量:
const chartWidth = 600; // width set on our chart object
const xAxisLeftMargin = 10; // margins set on our chart object
const xAxisRightMargin = 20;
const xPadding = 0; // padding set on both sides of xAxis
const yAxisWidth = 120; // total widths of all yAxes
我们可以使用 d3 创建一个 xScale,如下所示:
const leftX = 0 + yAxisWidth + xAxisLeftMargin + xPadding;
const rightX = chartWidth - xPadding - xAxisRightMargin;
// note that rightX assumes there are no axes on the right hand side
const xScale = d3.scaleLinear().domain(xDomain).range([leftX, rightX]);
然后假设我们有一个verticalPoints数组:
const verticalPoints: number[] = [];
我们只需像这样在 xDomain 中添加值:
verticalPoints.push(xScale(value))
我们可以使用 CartesianGrid 在 x 轴上渲染我们的垂直线,如下所示:
<CartesianGrid stroke="#d5d5d5" verticalPoints={verticalPoints} />
推荐阅读
- python - 响应 = request.urlopen(url) 不工作
- python - RuntimeError:pytorch中的cuda运行时错误(8)
- wordpress - 高级自定义字段 - WPML 问题
- iis-7 - 如何使用 web.config 文件在 IIS 中禁用 Web 目录索引?
- php - Facebook PHP SDK 登录错误“跨站请求伪造验证失败”仅 PHP 7.2
- json - 用于过滤 json 的 unix 命令
- python - 当通过子进程启动的应用程序关闭时 Pyhon 执行操作
- php - 下拉值保持选中状态
- javascript - 使用分组元素 dc.js 的百分比聚合数据表
- ios - iOS 电话通话对话框未显示