svg / d3.js 矩形一侧的圆角

2023-12-03

我知道 svg 有一个内置函数可以做圆角,但我只需要在四个角中的 2 个上做圆角。

我知道我可以在彼此之上绘制多个矩形来模仿这一点,但这看起来有点俗气。有什么方法可以使用剪辑或任何 d3.js 方法来做到这一点吗?

现在我有一个水平条形图,其中有如下矩形:

    rects.enter().append("rect")
        .attr("x",function(d,i) { return x(0); })
        .attr("width",function(d) { return x(d.value) - x(0); })
        .attr("height",y.rangeBand())
        .attr("y",function(d) { return y(d.name); })

我正在尝试在矩形的右侧生成圆角,但不知道该怎么做。


扩展 @robert-longson 的答案,您可以使用 SVG椭圆弧命令制作角落,结合线路命令对于直边。这些与使用路径元素。这是一种可能的实现:

// Returns path data for a rectangle with rounded right corners.
// The top-left corner is ⟨x,y⟩.
function rightRoundedRect(x, y, width, height, radius) {
  return "M" + x + "," + y
       + "h" + (width - radius)
       + "a" + radius + "," + radius + " 0 0 1 " + radius + "," + radius
       + "v" + (height - 2 * radius)
       + "a" + radius + "," + radius + " 0 0 1 " + -radius + "," + radius
       + "h" + (radius - width)
       + "z";
}

然后您可以调用此函数来计算“d”属性。例如:

rects.enter().append("path")
    .attr("d", function(d) {
      return rightRoundedRect(x(0), y(d.name), x(d.value) - x(0), y.rangeBand(), 10);
    });

实例:

  • http://bl.ocks.org/3468167

选修的:如果你愿意,你可以重构 rightRoundedRect 函数来使其可配置,而不是采取很多论点。这种方法类似于 D3 的内置方法形状生成器。例如,您可以使用如下所示的矩形生成器:

rects.enter().append("path")
    .attr("d", rightRoundedRect()
      .x(x(0))
      .y(function(d) { return y(d.name); })
      .width(function(d) { return x(d.value) - x(0); })
      .height(y.rangeBand())
      .radius(10));

有关该方法的更多详细信息,请参阅可配置功能教程.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

svg / d3.js 矩形一侧的圆角 的相关文章

  • 使用 Passport 进行 Node.js 身份验证:如果字段丢失,如何闪烁消息?

    我正在使用 Passport js 如果我的表单字段为空 我想显示一条消息 但我不知道该怎么做 因为如果缺少护照 则不会触发策略回调 我真的希望这个用例更加清晰 而且我不想修改护照 我感觉有办法 但不知道在哪里 我尝试使用路线的回调 app
  • 使用 JavaScript 查找数组中最接近的日期

    我有一个包含天数的数组 每一天都是一个对象 例如 day year 2012 day month 08 day number 03 day name mon 我还通过使用以下方法向每个日期对象添加了时间戳属性 function conver
  • 如何使用 JavaScript 获取光标下的单词?

    如果我有 p some long text p 在我的 HTML 页面上 我如何知道鼠标光标位于 文本 一词上方 我的另一个答案仅适用于 Firefox 这个答案适用于 Chrome 也许在 Firefox 中也能工作 我不知道 funct
  • 系统js语法错误,IE11

    我有一个 Angular 2 应用程序可以在 Firefox 和 Chrome 中工作 但在 IE 中却没有那么多工作 根据我的堆栈跟踪 我的 System js 设置似乎存在问题 这是我在网络控制台中看到的错误描述 Error Syste
  • 是的验证;同一字段可以接受不同类型吗?

    我对是的很陌生 我试图验证字段可以是遵循某个正则表达式的字符串 也可以是此类字符串的数组 这是检查字符串与我的正则表达式匹配的工作示例 field yup string matches regex 现在我想要field如果它有一个这样的字符
  • EXT JS中有全局变量吗

    在 java 和 C 中 我们可以全局存储变量并从项目中的任何位置访问它的值 比如说 我在一个名为Residence我正在保存residenceNumber这是一个INT到一个名为的全局变量houseNumberGlobalVariable
  • 在 NodeJs 中使用 Jest 模拟 Http Post 请求

    我有一个使用本机 https request 使用 Azure Function 内的 Node Js 构建的外部 POST API 一切正常 现在我正在尝试构建单元测试用例 并对模拟 Request 方法感到震惊 回调响应具有 on 功能
  • 将 Babel 与单个输出文件和 ES6 模块一起使用

    这是我的 gulp 任务 将 ES6 代码编译成单个 ES5 文件 我使用类和模块 import export 在 ES6 中 gulp src paths scripts pipe sourcemaps init pipe babel p
  • 绑定到以缩放行为结束的缩放

    如果有一种方法可以在缩放行为转换结束时轻松绑定到事件 当用户松开鼠标或触摸移动图表的某些内容时 那将会很方便 是否可以通过绑定所有 up 事件来实现这一点 或者这是人们通过其他方式完成的事情 在 d3 v4 中 zoom on 类型名称已更
  • 为什么这个 fs.readFile 循环没有将其结果推送到我的数组? [复制]

    这个问题在这里已经有答案了 usr bin env node var fs require fs async require async program require commander program version 0 0 1 usa
  • 使用 javascript 和 jQuery UI datepicker 获取工作日数

    我有两个日期选择器 我可以从中计算天数 而无需计算星期六和星期日 但我想在周五和周六这样做 我尝试过一些不同的方法但失败了 对我来说 处理不包括周六和周日的天数很容易 但处理周五和周六的天数则不然 以下是我的 javascript 代码 f
  • Google 闭包编译器使用 WebStorm

    我喜欢用谷歌闭包编译器 https developers google com closure compiler in WebStorm https www jetbrains com webstorm 我已经通过 npm 下载了它 npm
  • 如何在 Electron 中使窗口大小响应。 (打开应用程序时)

    我最近开始在 Electron 上制作一个应用程序 我想让窗口具有响应能力 例如 如果我在不同的屏幕上打开应用程序 它应该根据屏幕尺寸以全尺寸打开 我的代码 app on ready gt const htmlPath path join
  • td 内的文本可以随 td 一起调整大小吗? (是其高度的百分比?)

    我有一个 100 占屏幕的表格 里面有 3x3 9 个单元格 每个单元格占 33 到目前为止 一切都很好 这是一个干净 可扩展的井字棋游戏 问题在于 TD 内的文本不会随比例缩放 有没有办法说 我希望文本大小为 TD 高度的 30 或者其他
  • 带搜索框的 D3 图表

    我在 D3 中创建了一个图表 其中节点显示特定个人创建文档的时间 该图表还显示了一个搜索框 该搜索框根据搜索框输入是否与与该文档关联的单词匹配而将节点变成红色 这些单词列在数据集的第 5 列中 请参阅下面的数据集 我的问题 一旦将搜索输入到
  • Javascript 或 Coffeescript 中的“Bucket Fill”算法

    我正在编写一个小coffeescript js应用程序 允许用户设计图标 16x16像素或32X32像素 该图标实际上是一个带有颜色单元的二维数组 单元格可以有颜色或为空 我希望用户能够使用 桶油漆 工具填充空白单元格 代表着 如果用户单击
  • 删除移动设备上的 adsense

    我正在研究响应式设计 但在使用 adsense 时遇到了问题 我有一个广告应该显示在桌面设计上 但不能显示在移动设计上 因此 只有在桌面上查看网站时 才应将广告代码放置在 html 中 css 可以使用 display none 但这违反了
  • 当 JavaScript 抛出异常时不要停止它

    我正在使用 JavaScript 编写一个 Windows 边栏小工具 现在我想捕获所有 JavaScript 异常并将其记录到文本文件中 一个问题是 当任何一行抛出异常时 下一行将不会被执行 是否可以自动捕获异常 以便执行以下 JavaS
  • 事件监听器如何/何时附加到 d3.js 中?

    我正在尝试制作一个 SVG 编辑器 长话短说 我需要将鼠标事件附加到
  • 将画布下载为 PNG 图像[重复]

    这个问题在这里已经有答案了 当我尝试将画布下载为 PNG 图像时 浏览器会在新页面中打开该图像 但不下载它 我的下载代码 btnScaricaEtichetta click function console log Download loc

随机推荐

  • Core Data SUBQUERY 和 NSFetchedResultsController 的键路径错误

    如果这是重复的 我们深表歉意 20 分钟的搜索没有找到确切的情况或解决方案 我有一个包含三个类的核心数据堆栈XClass YClass and ZClass XClass与 具有一对多关系YClass YClass与 具有一对多关系ZCla
  • 为什么此 toDataURL 行是安全错误?

    如果将来自另一个站点的图像加载到页面 然后将其作为合成中的部分成分写入画布 请使用 context drawImage image 0 0 w h 似乎任何不安全的事情都已经在画布上发生了 那为什么会 window location can
  • 长按NavigationView只能作用于左侧部分,不能作用于所有NavigationLink?

    下面是一个NavigationView 视图弹出到Destination2当长按 NavigationLink 并Destination1正常点击时 但图中NavigationLink的右侧区域无法长按 有谁知道原因吗 谢谢 import
  • WIX:继续安装之前应关闭以下应用程序

    我的应用程序有托盘图标 当我卸载它时 我有一个窗口 其中建议关闭 my tray app exe 带有文本 在继续安装之前应关闭以下应用程序 我使用wix CloseApplication Element Util Extension 来关
  • 如何使用 javafx-maven-plugin 运行包含 jfoenix 的 Maven java fx 项目

    我试图创建编译我的应用程序并创建一个可执行文件 目前我认为最好使用的工具是 javafx maven plugin 我无法让它工作 所以我从根据此创建项目时生成的基本代码开始 https www youtube com watch v 4v
  • Google Gmail SMTP 设置不允许我使用 PHPMailer 发送电子邮件

    我在 Gmail 上创建了一个帐户 因为前一个帐户也给我带来了同样的问题 以便我的应用程序可以使用 google smtp 服务器发送电子邮件 我正在使用 PHPMailer 库并要求它显示任何日志错误 我总是收到类似的消息 它略有不同 有
  • Android 中的 RTSP 客户端

    可能有人问过同样的问题 但我没有找到任何适合我的解决方案 我正在尝试在 android 中播放 RTSP 流 服务器是 Darwin 流服务器 目前我尝试了VideoView和MediaPlayer 当我使用3G时 这两个都工作正常 但有时
  • 确定 PHP 调用函数的位置

    你们知道我如何从哪个文件中确定该函数内部调用的函数吗 我正在考虑使用 debug backtrace 但这看起来并不是一种优雅的方式 而且他们还在另一个问题中列举了其他原因here 那么还有什么其他选择呢 多谢 我前段时间从某个地方借用了这
  • 在 Angular2 路由中使用 Resolve

    在 Angular 1 中我的配置如下所示 routeProvider when news templateUrl newsView html controller newsController resolve message functi
  • Umbraco 7 更新 Umbraco 路线

    我正在尝试创建一个 Umbraco 7 MVC 应用程序 在此过程中 我希望能够创建在幕后管理数据的自定义控制器 通过我的研究 我发现使用 SurfaceController 是最成功的 但是 该路线将 umbraco surface 添加
  • 如何在 apache 服务器上运行 socket.io(仅限客户端)

    我想在我的 apache 服务器上运行 socket io 的客户端 我已将 socket io 目录上传到我的网络服务器 并尝试了主站点的简单客户端连接示例套接字 io但它不起作用 我不知道需要什么才能让它工作并连接我正在运行的服务器 我
  • 将参数传递给返回集合的 OData (GET) 方法

    我在用OData v3 如何将参数传递给OData控制器并返回一个集合 我正在尝试做的示例 EnableQuery AllowedQueryOptions AllowedQueryOptions All public IQueryable
  • Firestore Cloud Function 空集合

    我有一个问题困扰了我好几天 我正在尝试创建一个从 Firestore 数据库读取的 Firebase Cloud 函数 我的 Firestore 数据库如下所示 问题是我无法列出users像这样 db collection users ge
  • Azure DevOps管道:取消队列中的多个待处理作业

    在 Azure DevOps 管道中 如何取消作业池的所有待处理作业 我有很多工作在排队 但看不到在哪里可以取消我正在等待的所有工作 Azure Devops 尚不具备从 UI 部分批量取消所有待处理作业的功能 您可以编写脚本来调用rest
  • 我可以有一个空的 Java 类吗?

    我正在创建一个基于网格的游戏 我需要实现一组在网格内占据随机位置的障碍物 我创建了一个抽象类ALifeForm 它保存网格中每个项目的通用方法 显然 抽象类无法初始化 所以我要创建一个新类AObstacle 这将延长ALifeForm 唯一
  • 模板实例化检查类中存在的成员

    我有一组类 其中有一个或多个类型为memberA memberB memberC 的成员 并非所有班级都有所有成员 我想创建一个模板来设置成员 例如 template
  • Getresponse API 2(使用 PHP 添加自定义字段和联系人)

    我对编码和 Web 开发还很陌生 而深入研究 API 是我希望自己从未做过的事情 然而话虽这么说 我的进步比预期的要远 我现在在尝试将自定义字段添加到添加联系人功能时遇到问题 我试图获取代码以在用户点击我的感谢页面时添加隐藏的表单输入字段
  • 为什么我无法在 Mac OS Sierra 上安装 Sass?

    我已经尝试在 Mac OS Sierra 10 12 上从终端输入以下代码安装 Sass 3 次 sudo gem install sass 然后它要求我输入密码 我输入密码 但没有任何反应 我什至等了半个小时 它甚至没有给出任何错误或任何
  • 使用目标文件名变量重命名文件时出现“错误文件名或编号”

    我正在尝试循环一个充满 html 文件的文件夹 并在文件的开头添加一些代码 尽管我在插入的代码之前遇到了一些不需要的换行符 并且还获取了
  • svg / d3.js 矩形一侧的圆角

    我知道 svg 有一个内置函数可以做圆角 但我只需要在四个角中的 2 个上做圆角 我知道我可以在彼此之上绘制多个矩形来模仿这一点 但这看起来有点俗气 有什么方法可以使用剪辑或任何 d3 js 方法来做到这一点吗 现在我有一个水平条形图 其中