制作单词频率直方图
Making histogram of frequency of words
所以我成功地创建了一个数字频率的直方图。我想在文字上也这样做。
bins = [1,1,1,2,3,4,4,4,4,5,5,6,6,6,2,2,3,3,1,23,54,6,6,7,6,5,4]
@svg = d3
.select('.histogram')
.append('svg')
.attr('width', @model.get('width'))
.attr('height', @model.get('height'))
.append('g')
data = d3
.layout
.histogram().bins(bins.length)(bins)
bar = @svg
.selectAll('.bar')
.data(data)
.enter()
.append('g')
bar
.append('rect')
.attr('x', 0)
.attr('y', (d) -> return d.x*5)
.attr("width", (d) -> return d.y * 20)
.attr("height", 5)
.attr('fill','steel')
我想为这样的阵列建立一个频率直方图-
bins = ['hello','hello','goodbye','goodbye','beatles','kill','harry','harry']
我该怎么做?使用直方图布局的值函数似乎是一个不错的选择,但这意味着我需要以某种方式保持状态。此外,我希望它能使单词作为标签出现在其关联栏旁边。
感谢
我认为你不应该为分类数据布局.histogram,因为这种布局的想法是将值分布到bin中,而在你的情况下,每个单词只有一个单独的栏。
所以考虑一下这个演示。
在这里我手动计算分布:
// calculate frequency for each word in the list
var groups = _(values).chain()
.groupBy(_.identity)
.map(function (values, key) {
return {
freq: values.length,
value: key
};
})
.sortBy(function (d) { return d.value; })
.value();
然后从这些组中画一个简单的条形图:
var bars = svg.selectAll('.bar')
.data(groups)
.enter().append('g');
bars
.append('rect')
.attr('x', 0)
.attr('y', function (d, i) { return yScale(i); })
.attr("width", function (d) { return xScale(d.freq); })
.attr("height", barHeight)
.attr('fill','steel');
相关文章:
- 使用AnalyserNode的频率截止
- 带有dc.js的均匀间隔直方图仓
- Undercore:查找数组中出现频率最高的对象
- d3 可重复使用的直方图
- 用于制作直方图的库 JavaScript
- 根据已经给定的频率创建一个d3.js直方图
- 单词中重复出现字母频率最高的字符串
- R直方图到动态HTML/JS
- requestAnimationFrame的触发频率远高于每秒60帧
- 获取日期直方图的桶平均值,弹性搜索
- 增加Meteor.observe的更新频率
- ajax获取数据的频率不同
- Javascript中的简单直方图算法
- d3.js-是否可以在没有.map的情况下绘制和直方图
- 如何在JavaScript中检测声音的频率
- 初学者:掷骰子:频率和如果-否则-如果
- 按频率对数组进行排序
- 直方图绘制 - 图像处理工具
- 制作单词频率直方图
- D3.js直方图不能与每个箱子的总频率数组一起工作