具有水平滚动功能的 SVG

2024-01-31

我正在尝试用 D3 制作 SVG 图表(https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.17/d3.min.js https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.17/d3.min.js),其中条形宽度是手动定义的,并且该事物具有水平滚动。

我这里有一个工作小提琴

https://jsfiddle.net/bikrantsharma/zw264tfc/12/ https://jsfiddle.net/bikrantsharma/zw264tfc/12/

这就是我的尺度的定义方式

var barWidth = 30,
  paddingFactor = 2.2,
  responsiveDIVHeight = 300,
  responsiveDIVWidth = tempData.length * barWidth * paddingFactor;



var x = d3.scale.ordinal().rangeRoundBands([0, responsiveDIVWidth], 0.5)
  .domain(tempData.map(function(d) {
    return d.Type
  })),
  y = d3.scale.linear().rangeRound([responsiveDIVHeight, 0])
  .domain([0, d3.max(tempData, function(d) {
    return (d.Count + 10);
  })]),

有两个问题需要帮助:

  1. 条形图向相反方向翻转。如何翻转 div 或变换 bar?

  2. 条形的高度略小于实际值。例如,如果计数为“5”,则条形高度将返回为 4.8 或其他值。那里有什么问题?


你的酒吧是not翻转了。这里发生的事情非常简单:您有两个 SVG,一个在顶部,一个在底部,并且您在底部 SVG 中绘制矩形。矩形如何神奇地出现在topSVG?这是不可能的。

相反,绘制 SVG并排。左边的轴具有垂直轴,float: left的风格<div>它在,并且正确的,可滚动的,有overflow-x: scroll的风格<div>它在。

这是一个对代码进行尽可能少的更改的演示:

var tempData = [];
for (var i = 1; i < 30; i++) {
  var obj = {

    "Id": 1,
    "Type": 'A' + i,
    "Count": 5
  };
  tempData.push(obj);
}


var barWidth = 30,
  paddingFactor = 2.2,
  padding = 20,
  responsiveDIVHeight = 300,
  responsiveDIVWidth = tempData.length * barWidth * paddingFactor;

var x = d3.scale.ordinal().rangeRoundBands([0, responsiveDIVWidth], 0.5)
  .domain(tempData.map(function(d) {
    return d.Type
  })),
  y = d3.scale.linear().rangeRound([responsiveDIVHeight - padding, padding])
  .domain([0, d3.max(tempData, function(d) {
    return (d.Count + 10);
  })]),
  xAxis = d3.svg.axis().scale(x).orient('bottom'),
  yAxis = d3.svg.axis().scale(y).orient('left');


var svgY = d3.select('#verticalSVG')
  .append('svg')
  .attr('height', responsiveDIVHeight)
  .attr("width", 50);

svgY.append('g')
  .attr('class', 'y axis')
  .call(yAxis)
  .attr('dx', '-0.3em')
  .attr('transform', "translate(50, 0)");;

var svgX = d3.select('#horizontalSVG')
  .append('svg')
  .attr('width', responsiveDIVWidth)
  .attr('height', responsiveDIVHeight);

svgX.append('g')
  .attr('class', 'x axis')
  .attr('transform', "translate(0," + (responsiveDIVHeight - padding) + ")")
  .call(xAxis)
  .selectAll('text')
  .attr('dx', '-0.8em')
  .attr('dy', '-.15em')
  .attr('transform', function(d) {
    return "rotate(-60)"
  });


var startPoint = 0;

var bar = svgX.selectAll('.bar')
  .data(tempData)
  .enter()
  .append('rect')
  .attr('y', function(d) {
    return y(d.Count)
  })
  .attr('x', function(d) {
    return x(d.Type)
  })
  .attr('width', barWidth)
  .attr('height', function(d) {
    return responsiveDIVHeight - y(d.Count) - padding
  })
.legend-main-div {
  padding: 2%;
  max-height: 150px;
  overflow-y: scroll;
  border: 1px solid blue;
}

.axis line,
.axis path {
  fill: none;
  stroke: black;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
<div class="row">
  <div class="col-md-12">

    <div id="verticalSVG" style="float:left">

    </div>
    <div id="horizontalSVG" style="overflow-x:scroll">

    </div>
  </div>

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

具有水平滚动功能的 SVG 的相关文章

  • React-native:将场景绑定到导航栏

    我正在整理这个提问 回答应用程序 并遇到了这个障碍 我想从导航栏触发场景中的功能 与登录应用程序类似 我在导航栏中有一个用于提交答案的按钮 RightButton route navigator index navState if rout
  • 取消html5浏览器中的单图请求

    我正在动态加载 大 图像以绘制到 html5 画布中 如下所示 var t new Image t onload t src http myurl 但每隔一段时间就会想取消图片请求完全地 我想出的唯一方法是设置src to i e t sr
  • HTML/VBA Click 事件未触发

    这是我第一次在 StackOverflow 上发布问题 到目前为止 我已经能够通过 VBA 帮助论坛解决我的大部分问题 我的问题很简单 我有一个自动数据拉取 我需要在其中导出数据 我过去曾在这方面取得过成功 但这次略有不同 我尝试单击以生成
  • 访问sendBeacon发送的数据

    文档表明sendBeacon通过发送其数据HTTP POST request 但在 PHP 中 POST变量似乎是一个空数组 这是我的 JavaScript 代码 navigator sendBeacon beacon log php My
  • 如何使用 selenium 和 Mocha 获取 xPath() 选择的锚标记的文本

    我已经成功选择了 a 标签 我想显示锚标记的文本 但无法这样做 我正在使用 selenium mocha javascript 和 phantomJS 这是我的脚本 详细 var assert require assert var test
  • 网站 YouTube 嵌入视频不断播放

    我正在使用 youtube 提供的 iframe 在我的网站上嵌入视频 我还使用了一个 css 弹出窗口 这是我从这个页面学到的http www pat burt com web development how to do a css po
  • 用隐藏单元格补充 colspanned 表格有什么不好吗?

    我一直在表格上开发一些排序和选择功能 我发现在具有跨单元格的表格中定位非常困难 我只是添加了跨区单元格并将其隐藏 它看起来不错 它与我的 js 一起工作 非常适合索引 但我想知道这是否是合法的方法 stuffing display none
  • Ember.js 处理 View 事件后转换到路由

    Setup 我有一个 Ember 应用程序 支持使用 Imgur API 上传图像 我已经有一个工作路线和模板来处理任何 Imgur ID 但我想在上传新图像后转换到此路线 使用返回的 Imgur ID 这是该应用程序的相关部分 http
  • 即使我可以监视其他方法,也无法监视事件处理程序

    我想使用 Jest Jasmine Enzyme 测试 React 中的事件处理程序 MyComponent js import React from react class MyComponent extends React Compon
  • 仅一页 JavaScript 应用程序

    您是否尝试过单页 Web 应用程序 即浏览器仅从服务器 获取 一页 其余部分由客户端 JavaScript 代码处理 此类 应用程序页面 的一个很好的例子是 Gmail 对于更简单的应用程序 例如博客和 CMS 使用这种方法有哪些优点和缺点
  • Javascript - 将值从下拉框传递到 Google Maps API

    我正在使用 Google 地图 API 为一家出租车公司创建报价表 目前 用户在 2 个文本框中输入出发点和接载点 API 会计算两点之间的距离以及行程费用 我正在尝试添加两个具有设定位置的下拉框 以便用户可以选择这些位置之一或使用文本框输
  • Google Chrome 106 可拖动导致元素消失

    使用拖放元素时 绝对定位元素中包含的大多数其他元素都会从屏幕上消失 如果我调整窗口大小 这些元素会出现 但在开始拖动时会再次消失 我在最新版本的 Google Chrome 106 和 Beta 版本 107 0 5304 18 以及现在的
  • 在d3.js中将2D形状转换为3D,并根据ANGULAR中的值调整高度

    我正在使用 d3 js v6 创建以下 2D 图表表示的 3D 图表 这个圆圈中有多个正方形 每个正方形都根据值分配了一种颜色 值越大 正方形越暗 现在我想将其转换为 3D 形状 其中当值变高时 只有特定正方形的高度会增加 因此结果在某种程
  • IE11不监听MSFullscreenChange事件

    我正在尝试使用 Bigscreen js 在 IE11 中使用全屏 但 IE11 不监听 MS FullscreenChange 事件 document addEventListener MSFullscreenChange functio
  • 将数组排序为第一个最小值、第一个最大值、第二个最小值、第二个最大值等

    编写一个JS程序 返回一个数组 其中第一个元素是第一个最小值 第二个元素是第一个最大值 依此类推 该程序包含一个函数 该函数接受一个参数 一个数组 该函数根据要求返回数组 输入示例 array 2 4 7 1 3 8 9 预期输出 1 9
  • 单击关闭按钮后不显示 Google 一键登录 UI

    我正在尝试按照本指南使新的谷歌一键登录工作 https developers google com identity one tap web https developers google com identity one tap web
  • 查询为空 Node Js Sequelize

    我正在尝试更新 Node js 应用程序中的数据 我和邮递员测试过 我的开发步骤是 从数据库 MySQL 获取ID为10的数据进行更新 gt gt 未处理的拒绝SequelizeDatabaseError 查询为空 我认识到 我使用了错误的
  • 单击引导分页链接时调用 jquery 函数

    我想在单击引导分页链接时调用 jquery 函数 假设我想从第1页遍历到第2页 应该调用一个jquery函数 我正在使用以下代码 但它不起作用 ul pagination on click li function alert page ch
  • 防止文本区域出现新行

    我正在开发聊天功能 使用 Vue 并使用文本区域作为输入 以便溢出换行 并且对于编写较长消息的用户来说更具可读性 不幸的是 当用户按下 Enter 键并提交时 光标会在提交之前移动到新行 从而使用户体验感觉不佳 关于如何使用普通 Javas
  • KeyboardAvoidingView - 隐藏键盘时重置高度

    我正在使用 React NativeKeyboardAvoidingView设置我的高度View当显示键盘时 但是当我关闭应用程序中的键盘时 视图的高度不会变回原来的值

随机推荐

  • “函数式编程”的含义很明确,但是“函数式语言”有明确的含义吗?

    我非常清楚函数式和命令式之间的区别编程技术 但是现在有一种普遍的趋势是谈论 函数式语言 这确实让我感到困惑 当然 像 Haskell 这样的一些语言是更热情好客但即使是前者也可以进行 I O 它只是将其保留在贫民窟中 你可以用 C 语言编写
  • 以编程方式将证书导入 IIS?

    我有一个 SSL pem 证书 我想将其与 MSI 中的 Web 应用程序一起分发 必须在客户端计算机上运行 然后 我需要将其导入 导入到某些凭据存储中 并告诉我的站点绑定使用它 但我怎样才能在代码中做到这一点呢 我发现了 Microsof
  • “case_when”函数中“~”后面的条件项

    我想在后面加上一个条件项 in a case when功能 我的例子 df df lt structure list x c a a a b b b c c c a a a y 1 12 class data frame row names
  • 在 Evernote API 中设置 NoteFilter

    我已经像这样设置了我的 Python 页面 摘录 import evernote edam userstore constants as UserStoreConstants import evernote edam type ttypes
  • 指向匿名结构的 C 指针

    有没有办法获取指向匿名结构的指针 如果没有匿名结构 我可以编写以下内容 struct a int z struct b int y struct a x 这工作正常 但我只使用struct a within struct b用它来污染全局命
  • 正则表达式搜索 C++

    include
  • 将列添加到 SQL 查询结果

    我正在 SSRS 中整理一份报告 该数据集由 MS SQL 服务器的 SQL 查询填充 它使用 Union All 查询几个相似的表 问题是存在一些信息丢失 不同的表对应不同的工作地点 但这些表中没有一列包含该地点的名称 识别站点的唯一方法
  • Vue中,template、render、VNode是什么关系?

    在开发vue项目的过程中 遇到一些疑问template render VNode 阅读文档后https v2 vuejs org v2 guide syntax html https v2 vuejs org v2 guide syntax
  • 如何从 Yahoo! 抓取关键统计数据使用 R 进行财务? [复制]

    这个问题在这里已经有答案了 不幸的是 我还不是一个经验丰富的爬虫 然而 我需要使用 R 从雅虎财经抓取多只股票的关键统计数据 我对使用 rvest 包中的 read html html nodes 和 html text 直接从 html
  • 内嵌文本 - 带填充的背景颜色

    我需要制作一个背景颜色不是块的标题 只有文本背景是彩色的 Here is an image of what I have to archieve 这是我到目前为止所得到的 http jsbin com tiwuquze 1 edit htt
  • Textmate 中的自动完成

    有时我会观看有人使用文本伴侣的屏幕截图 我是一名 Rails 开发人员 所以这些是 Rails 屏幕截图 他们会输入如下内容 def 例如 并且 end 会自动出现在下面 我确实启用了 Rails 捆绑包 为什么我没有发生这种情况 Than
  • 使用 R 绘制二次回归线

    我对 R 很陌生 而且对 R 也很陌生plotly 我正在尝试绘制二次 即二次多项式 回归线 一旦一些价格与年份 以及相同的价格与某些整数列表 可以相同 比方说分数 本例中的数据是 price c 995 675 690 600 612 7
  • 如何强制 r optim 运行更多迭代?

    R Optim 比我想要的更早停止迭代 我使用 method L BFGS B 因为我需要不同参数的不同界限 我知道我可以通过 control gt maxit 设置最大迭代次数 但 optim 没有达到最大值 我想 control gt
  • Emacs - Ubuntu 初始化

    在 ubuntu 上加载 emacs 的行为很奇怪 似乎发生了一些初始化 这些初始化不在 emacs 中 也不在 emacs 报告通过 emacs debug init 加载的任何文件中 我发现了一些与字体相关的调整大小的参考 但这种行为似
  • 依赖注入架构设计——服务类循环引用

    我有以下服务类别 public class JobService private UserService us public JobService UserService us this us us public void addJob J
  • Objective C - 访问 zip 中的文件而不解压 zip

    我正在寻找一种访问 zip 文件中的文件而不提取整个文件的方法 我在互联网上找到的所有 zip 解决方案似乎都提取了整个 zip 有谁知道解决方案吗 Google 有一个基于 minizip 的 Objective C 库 http cod
  • 如何从事件中删除所有事件处理程序?

    我有以下课程 Public Class SimpleClass Public Event SimpleEvent Public Sub SimpleMethod RaiseEvent SimpleEvent End Sub End Clas
  • 如何处理 csv 列表中的单词[重复]

    这个问题已经存在了 我遇到了基于以下程序的问题 Code Download the helper library from https www twilio com docs python install import os from tw
  • 如何使用 python 的 cassandra-driver 将地图类型插入 cassandra

    因为 cassandra 支持地图类型 我想将 python 字典插入 cassandra 中 我试过这个 cql Insert into table name my key name my dict values s s s my key
  • 具有水平滚动功能的 SVG

    我正在尝试用 D3 制作 SVG 图表 https cdnjs cloudflare com ajax libs d3 3 5 17 d3 min js https cdnjs cloudflare com ajax libs d3 3 5