如何使用D3.J中的区域绘制正方形?

发布于 2025-02-11 00:13:22 字数 976 浏览 1 评论 0原文

如何使用D3.js中的区域绘制正方形?甚至有可能这样做吗?

我的代码:

var data = [
  {x: 0, y: 0},
  {x: 5, y: 0},
  {x: 0, y: 5},
  {x: 5, y: 5},
];

var xScale = d3.scaleLinear().domain([0, 6]).range([25, 175]);
var yScale = d3.scaleLinear().domain([0,20]).range([175, 25]);

var area = d3.area()
  .x(d => xScale(d.x))
  .y0(yScale(0))
  .y1(d => yScale(d.y));

d3.select("#demo1")
.append("path")
.attr("d", area(data))
.attr("fill", "red")
.attr("stroke", "black");
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
<svg id="demo1" width="200" height="200"></svg>

此代码的结果:

感谢您的帮助!

How to draw a square using area in d3.js? Is it even possible to do that?

My code:

var data = [
  {x: 0, y: 0},
  {x: 5, y: 0},
  {x: 0, y: 5},
  {x: 5, y: 5},
];

var xScale = d3.scaleLinear().domain([0, 6]).range([25, 175]);
var yScale = d3.scaleLinear().domain([0,20]).range([175, 25]);

var area = d3.area()
  .x(d => xScale(d.x))
  .y0(yScale(0))
  .y1(d => yScale(d.y));

d3.select("#demo1")
.append("path")
.attr("d", area(data))
.attr("fill", "red")
.attr("stroke", "black");
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
<svg id="demo1" width="200" height="200"></svg>

Result of this code:
enter image description here

Thanks for help!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

你的笑 2025-02-18 00:13:22

您可以使用d3.AREA()使用以下几点创建正方形:

var points = [
    { xpoint: 0, ypoint: 200 },
    { xpoint: 200, ypoint: 200 }
];

var points = [
    { xpoint: 0, ypoint: 200 },
    { xpoint: 200, ypoint: 200 }
];

var Gen = d3.area()
    .x((p) => p.xpoint)
    .y0((p) => 0)
    .y1((p) => p.ypoint);

d3.select("#gfg")
    .append("path")
    .attr("d", Gen(points))
    .attr("fill", "green")
    .attr("stroke", "black");
svg { border: 1px solid red; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
<svg id="gfg" width="200" height="200"></svg>


对于您的图像,尝试以下几点:

var points = [
    { xpoint: 0, ypoint: 0 },
    { xpoint: 100, ypoint: 100 },
    { xpoint: 125, ypoint: 125 },
    { xpoint: 150, ypoint: 175 },
    { xpoint: 190, ypoint: 175 },
    { xpoint: 150, ypoint: 100 },
    { xpoint: 50, ypoint: 0 },
];

var points = [
    { xpoint: 0, ypoint: 0 },
    { xpoint: 100, ypoint: 100 },
    { xpoint: 125, ypoint: 125 },
    { xpoint: 150, ypoint: 175 },
    { xpoint: 190, ypoint: 175 },
    { xpoint: 150, ypoint: 100 },
    { xpoint: 50, ypoint: 0 },
];

var Gen = d3.area()
    .x((p) => p.xpoint)
    .y0((p) => 0)
    .y1((p) => p.ypoint);

d3.select("#gfg")
    .append("path")
    .attr("d", Gen(points))
    .attr("fill", "green")
    .attr("stroke", "black");
svg { border: 1px solid red; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
<svg id="gfg" width="200" height="200"></svg>

You can create a square using d3.area() using the following points:

var points = [
    { xpoint: 0, ypoint: 200 },
    { xpoint: 200, ypoint: 200 }
];

var points = [
    { xpoint: 0, ypoint: 200 },
    { xpoint: 200, ypoint: 200 }
];

var Gen = d3.area()
    .x((p) => p.xpoint)
    .y0((p) => 0)
    .y1((p) => p.ypoint);

d3.select("#gfg")
    .append("path")
    .attr("d", Gen(points))
    .attr("fill", "green")
    .attr("stroke", "black");
svg { border: 1px solid red; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
<svg id="gfg" width="200" height="200"></svg>


For the shape in your image, try the following points:

var points = [
    { xpoint: 0, ypoint: 0 },
    { xpoint: 100, ypoint: 100 },
    { xpoint: 125, ypoint: 125 },
    { xpoint: 150, ypoint: 175 },
    { xpoint: 190, ypoint: 175 },
    { xpoint: 150, ypoint: 100 },
    { xpoint: 50, ypoint: 0 },
];

var points = [
    { xpoint: 0, ypoint: 0 },
    { xpoint: 100, ypoint: 100 },
    { xpoint: 125, ypoint: 125 },
    { xpoint: 150, ypoint: 175 },
    { xpoint: 190, ypoint: 175 },
    { xpoint: 150, ypoint: 100 },
    { xpoint: 50, ypoint: 0 },
];

var Gen = d3.area()
    .x((p) => p.xpoint)
    .y0((p) => 0)
    .y1((p) => p.ypoint);

d3.select("#gfg")
    .append("path")
    .attr("d", Gen(points))
    .attr("fill", "green")
    .attr("stroke", "black");
svg { border: 1px solid red; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
<svg id="gfg" width="200" height="200"></svg>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文