使用 d3-cloud 动态调整大小的词云

2024-03-08

我正在通过修改以下代码来创建词云:https://github.com/jasondavies/d3-cloud https://github.com/jasondavies/d3-cloud。我可以通过修改 w & h 来更改大小,但我想随着浏览器窗口的变化来缩放词云。实现这一目标的最佳方法是什么?

代码也发布于http://plnkr.co/edit/AZIi1gFuq1Vdt06VIETn?p=preview http://plnkr.co/edit/AZIi1gFuq1Vdt06VIETn?p=preview

<script>

 myArray = [{"text":"First","size":15},{"text":"Not","size":29},{"text":"Bird","size":80},    {"text":"Hello","size":40},{"text":"Word","size":76},{"text":"Marketplaces","size":75}]
var fillColor = d3.scale.category20b();
var w = 400, // if you modify this also modify .append("g") .attr -- as half of this
  h = 600;

d3.layout.cloud().size([w, h])
  .words(myArray) // from list.js
  .padding(5)
  .rotate(0)      
  .font("Impact")
  .fontSize(function(d) { return d.size; })
  .on("end", drawCloud)
  .start();

function drawCloud(words) {
d3.select("body").append("svg")
    .attr("width", w)
    .attr("height", h)
  .append("g")
  .attr("transform", "translate(" + w/2 + "," + h/2 + ")")
  .selectAll("text")
    .data(words)
    .enter().append("text")
    .style("font-size", function(d) { return (d.size) + "px"; })
    .style("font-family", "Impact")
    .style("fill", function(d, i) { return fillColor(i); })
    .attr("text-anchor", "middle")
    .attr("transform", function(d,i) {
          return "translate(" + [d.x, d.y] + ")rotate(" + d.rotate + ")";
        }
    )
  .text(function(d) { return d.text; });
 }
 </script>

解决方案#1:

第 37 行:

.style("font-size", function(d) { return (d.size) + "px"; })

Replace

.style("font-size", function(d) { return (d.size/3) + "vh"; }) // "d.size/3" is an assumption use your appropriate relative width or height.

而不是使用px use vw这是视口宽度。这是一个 css3 功能,可以根据视口调整文本大小。但是,您需要适当调整实际宽度和高度。

尝试阅读这篇文章:http://css-tricks.com/viewport-sized-typography/ http://css-tricks.com/viewport-sized-typography/

解决方案#2:

第 37 行:

    .style("font-size", function(d) { return (d.size) + "px"; })

Use

   .attr("class", nameOfClass) // use class names here like 'big-font', 'med-font', 'small-font'

并且在 CSS 中使用媒体查询定义样式,将根据条件中的 d.size 分配类,因此可以像 if (d.size > 10) nameOfClass = "big-font" 等那样进行分配。

不要使用 JS 给出单词的宽度和高度,而是使用媒体查询断点为它们分配类。

Read : http://www.w3schools.com/cssref/css3_pr_mediaquery.asp http://www.w3schools.com/cssref/css3_pr_mediaquery.asp

我相信我推荐解决方案 2vw and vh并非所有浏览器都支持。http://caniuse.com/#feat=viewport-units http://caniuse.com/#feat=viewport-units。有一些与此相关的问题报告。

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

使用 d3-cloud 动态调整大小的词云 的相关文章

  • onclick 函数上的 CSS 选择器

    有没有办法让CSS选择器onclick function 您可以在onclick https stackoverflow com questions 24365416 select element which have specific a
  • 如何将 div (或任何元素)覆盖在表格行 (tr) 上?

    我想在恰好有多个列的表行 tr 标记 上覆盖一个 div 或任何可以使用的元素 我尝试了几种方法 似乎都不起作用 我在下面发布了我当前的代码 我确实得到了一个覆盖 但不是直接覆盖在该行上 我尝试将覆盖顶部设置为 div Bottom css
  • 执行页面的 javascript 后保存页面的 html 输出

    我正在尝试抓取一个网站 它首先加载 html js 使用js修改表单输入字段 然后使用POST 如何获得 POSTed 页面的最终 html 输出 我尝试使用 phantomjs 执行此操作 但它似乎只有渲染图像文件的选项 谷歌搜索表明这应
  • Visual Studio IDE 中功能后的空间

    如何设置 Visual Studio 中的设计以在我的 javascript 函数后面放置一个空格 目前 当我按下返回键时 我得到了这个 var myfunc function 当我想要这个的时候 var myfunc function 知
  • Chrome 内存/垃圾收集问题

    我在使用 Chrome 时遇到内存 垃圾收集问题 我正在开发一个照片上传网站 该网站允许我的客户使用 HTML5 和文件 API 拖放照片进行上传 因此这在 IE 中不起作用 它仅适用于 Chrome 和 FF 我还没有在 Safari O
  • 如何在下拉列表中选择一个选项

    我正在使用 AngularJS 指令 我需要在模板中设置下拉列表的选定选项
  • 如何在 javascript 或 jquery 中按尺寸对图像进行排序

    如何在 JavaScript 或 jQuery 中按尺寸对图像进行排序 我的代码如下 var imgsrc if document images length lt 1 alert No images to open return for
  • 数据表“footerCallback”函数未在页脚中显示结果

    我尝试获取每列的总和并将结果显示在页脚中 我在用着 页脚回调 https datatables net reference option footerCallbackDatatables提供的功能 但是它在页脚中没有显示任何内容 数据表解释
  • 如何删除从 javascript var 转义的反斜杠?

    我有这个变量 var x div class Which is div class 但是我需要 div class abcdef 我怎样才能 unes cape 这个变量来删除所有转义字符 您可以通过正则表达式将反斜杠后跟引号替换为仅引号
  • 模型不是 AngularJS 中输入的日期对象

    使用 AngularJS 我试图使用输入显示日期type date
  • Famo.us 滚动视图高度

    我正在尝试使用著名的顺序布局在滚动视图下方添加图像 但滚动视图的高度有问题 这就是我创建滚动视图的方式 var scrollview new Scrollview direction Utility Direction X options
  • 如何正确删除动画集中引用的 Raphael SVG 元素?

    我有一组动画 Raphael SVG 元素 我正在通过用户发起的 ajax 调用添加新元素并删除旧元素 我 set push 新元素 但因为我需要删除的元素通常不是集合中的最后一个元素 所以我使用 element remove 而不是 se
  • 如何在服务器端按钮点击时关闭当前标签页?

    我尝试在确认后关闭当前选项卡 因此我将以下代码放在确认按钮的末尾 但选项卡没有关闭 string jScript ClientScript RegisterClientScriptBlock this GetType keyClientBl
  • 使用 javascript 调整图像大小以在画布 createPattern 中使用

    我见过一些关于如何调整图像大小的技巧 在 IMG 标签内使用 但我想在里面有一个图像变量 一个 Javascript 调整它的大小 然后使用 a 中的图像 context createPattern 图像 重复 我还没有找到任何提示 关于如
  • 我可以在不使用 Jquery UI 的情况下获得 Jquery Pulsate Effect 吗?

    我遇到了由于某种原因无法使用 Jquery UI 的情况 我正在尝试在不使用 Jquery UI 的情况下获得 Jquery UI 脉冲效果 与此链接类似 http docs jquery com UI Effects Pulsate ht
  • 如何上传文件 - sails.js

    我可以下载图像和 pdf 但无法下载文档文件 doc pptx odt 下载文档 doc pptx odt 时 仅将其下载为 ZIP XML 文件 我可以做什么 我在用着 填写上传文件文档 https github com balderda
  • ES6 Reflect API 的好处

    我一直在努力升级一些代码以使用 ES6 语法 我有以下代码行 delete this foo 我的 linter 提出了使用建议 Reflect deleteProperty this foo 您可以找到该方法的文档here https d
  • 使用 div 或表格来包含链接列更好吗?

    我的页面底部有 3 列链接 每列都放入一个 div 中 所有三个 div 都包装在页面中央的一个大 div 中 这是更适合桌子的东西还是桌子不适合这项工作 您还可以使用 ul http www w3schools com tags tag
  • R闪亮:使用闪亮的JS从数据表中获取信息

    我想读出所有列名称以及它们在数据表中显示的顺序 由于不同的原因 我无法使用 stateSave 等选项 我对 JS 没有什么把握 但我确信用它可以完成 所以我需要你帮助我 我尝试过类似的代码片段 datatable data callbac
  • React 错误:目标容器不是 DOM 元素

    我刚刚开始使用 React 所以这可能是一个非常简单的错误 但我们开始吧 我的html代码非常简单 load staticfiles

随机推荐

  • 哪种适用于 Node.js 的 MySQL 驱动程序可以在 Windows 上运行?

    我想在 Windows 上将 MySQL 与 Node js 一起使用 我尝试过使用节点数据库mysql https github com mariano node db mysql 不过好像不支持Windows 是否还有其他适用于 Win
  • 每 X 时间运行一次后台任务

    我想启动一项服务 偶尔在所有平台上检查是否有通知出现 有没有连接所有平台的nuget或者一些例子 您可以使用Device StartTimer TimeSpan minutes 方法启动一个后台任务 该任务将在给定的时间跨度后重复 这是一个
  • JavaFX 中的可复制标签/文本字段/LabeledText

    我只想在 JavaFX 中创建可复制的标签 我尝试创建没有背景 没有焦点边框和默认背景颜色的 TextField 但没有成功 我发现了很多关于如何从控制中删除焦点背景的问题 但所有这些看起来都像是 黑客 是否有任何标准解决方案来实现可复制文
  • Eclipse 4.2 和 Java 8

    我找到了这个page http www eclipse org eclipse development plans eclipse project plan 4 2 xml声明 Java 8 对 Juno 的支持已推迟 但我找不到更多信息
  • 使用 C# 解析 JSON 数据

    我有大约 7000 行 JSON 数据需要解析 可以看到仅部分示例here https graph facebook com 367501354973 access token 2227470867 7C2 fYhXYnFbw5vb6GXN
  • 在选择选项中使用@click - Vue.js 2

    我想在选择选项中使用 click 到目前为止我有
  • 使用 HoloEverywhere 构建 Android Studio 项目失败

    每当我尝试构建包含 HoloEverywhere 作为依赖项的项目时 我都会遇到以下错误 Gradle 失败 构建因异常而失败 出了什么问题 任务 HoloEverywhere Library processDebugManifest 执行
  • 意外结果 - Google Autocomplete 针对约克郡

    我使用 Google 地图自动完成 API 得到针对 约克郡 的意外结果 我已过滤结果以仅显示英国地区 请帮我 以下是我在搜索约克郡时得到的结果 北约克郡 Royaume Uni 约克郡东方 Reino Unido 南约克郡 统一王国 下面
  • Java 中的类型转换以及动态类型与静态类型

    我正在学习静态类型与动态类型 并且我已经了解了它的大部分内容 但这种情况仍然让我困惑 如果上课B延伸A 我有 A x new B 是否允许以下 行为 B y x 或者是否需要显式转换 B y B x Thanks 显式转换是required
  • 如何退出 Google 云端硬盘帐户?

    如何退出 Google 云端硬盘服务 我不想切换帐户 而是最终退出 我正在开发一个应用程序 该应用程序将使用用户的 Google 云端硬盘存储以及其他存储服务 因此我需要允许用户退出 Google Drive 我发现这有效 这些与我使用的登
  • 如何验证 HTML5 日期格式

    我想使用 HTML5 日期输入字段
  • Tomcat 7 - Maven 插件?

    我只是想仔细检查一下 是否有人找到或正在开发 Tomcat 7 插件 如果没有 有人有兴趣帮助我启动和运行它吗 我想要 Glassfish 的另一个快速替代品 JBoss AS 6 0 对于快速模型来说仍然有点重 Walter 它对我来说如
  • malloc(sizeof(int)) vs malloc(sizeof(int *)) vs (int *)malloc(sizeof(int))

    我承认这三个都有不同的含义 但是 我不明白这些都适用于哪些特定情况 任何人都可以分享每个例子吗 谢谢 malloc sizeof int malloc sizeof int int malloc sizeof int malloc size
  • 事务隔离级别和锁定记录,对正在运行的事务中的记录禁用 SELECT

    Can I disable SELECT在事务内部使用的行上 例如 表中的行potatoes在事务 1 中被销毁 并且需要很长时间才能销毁 在交易2中 有SELECT on the potatoes桌子 我不想选择事务 1 中正在使用的那些
  • 实体框架代码优先开发资源和文档

    我知道 EF4 仍在开发中 但作为该主题的新手 我需要使用 EF 4 代码优先方法的文档 教程等 所有信息都位于 EF 4 团队博客中 但分散在不同的帖子中 全面覆盖真的很好 有人知道有这样一个地方吗 迄今为止我见过的最好的在线资源是斯科特
  • 如何禁用按 Enter 键时的自动提交行为?

    我想根据我输入的输入文本按 Enter 键转到 p2 htm 或 p3 htm 我还想按 Submit1 按钮手动提醒 no1 它在 FireFox 中工作 但在 IE6 中 当我按 Enter 键时 它将提交提交按钮 我怎样才能在 IE
  • 使用 Google Cloud + CloudFlare 创建子域

    我在 CloudFlare 上有一个域名 bar com 该域名链接到 Google Cloud 上托管的网站 我可以在 CloudFlare 上为子域名 foo 创建新的 A 记录 但如何将其映射到 Google Cloud 上的 bar
  • 将 LinearSVC 的决策函数转换为概率(Scikit learn python)

    我使用 scikit learn LinearSVC 中的线性 SVM 来解决二元分类问题 我知道 LinearSVC 可以为我提供预测标签和决策分数 但我想要概率估计 对标签的置信度 由于速度原因 我想继续使用 LinearSVC 与具有
  • python - 获取当前模块中所有函数的列表。检查当前模块不起作用?

    我有以下代码 fset obj for name obj in inspect getmembers sys modules name if inspect isfunction obj def func num pass if name
  • 使用 d3-cloud 动态调整大小的词云

    我正在通过修改以下代码来创建词云 https github com jasondavies d3 cloud https github com jasondavies d3 cloud 我可以通过修改 w h 来更改大小 但我想随着浏览器窗