- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个“有效”的 d3 图表,但图表上的线条基于 y 轴并不完全正确。我试图在下面包含一个代码片段来显示代码,但它也是可见的 in this fiddle .
我在天平和其他方面都考虑到了边际;我只是不确定出了什么问题。最容易看出错误的月份是四月;它的值(value)是 3,420 美元,但您可以看到它甚至没有达到 y 轴上的 3,000 美元大关的峰值。
$(document).ready(function() {
var $chart = $('#chart');
var isInitialized = false;
var margin = {
top: 20,
right: 20,
bottom: 40,
left: 40
};
var w = $chart.innerWidth() - margin.left - margin.right;
var h = $chart.innerHeight() - margin.top - margin.bottom;
var svg = d3.select('#chart')
.append('svg')
.classed('chart', true)
.append('g')
.attr('transform', 'translate(' + margin.left + ', ' + margin.top + ')');
var path = svg.append('path');
updateChart({
"1": 567.5,
"2": 1076.25,
"3": 436.5,
"4": 3420,
"5": 1412,
"6": 1485,
"7": 0,
"8": 0,
"9": 0,
"10": 0,
"11": 0,
"12": 0
});
function updateChart(data) {
var keys = _.filter(_.keys(data), function(key) {
return !key.startsWith('$');
});
var months = _.map(keys, function(key) {
return parseInt(key);
});
var sales = _.values(_.pick(data, keys));
var _data = _.map(sales, function(val, idx) {
return {
month: idx + 1,
sales: val
}
});
console.log('months', months);
console.log('sales', sales);
console.log('_data', _data);
var xTickValues = _data.length === 12 ? ["JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"] : ["1Q", "2Q", "3Q", "4Q"];
var xScale = d3.scale.linear()
.domain(d3.extent(months))
.range([margin.left, w - margin.right]);
var xAxis = d3.svg.axis()
.scale(xScale)
.ticks(_data.length)
.tickFormat(function(d, i) {
return xTickValues[i];
})
.orient('bottom');
if (!isInitialized) {
svg.append('g')
.attr('class', 'x axis')
.attr('transform', 'translate(0, ' + (h - (margin.bottom / 2)) + ')')
.call(xAxis);
} else {
svg.select('g.x.axis')
.transition()
.duration(1500)
.ease('sin-in-out')
.call(xAxis);
}
var yScale = d3.scale.linear()
.domain(d3.extent(sales))
.range([h - margin.top, margin.bottom]);
var yAxis = d3.svg.axis()
.scale(yScale)
.orient('left');
if (!isInitialized) {
svg.append('g')
.attr('class', 'y axis')
.attr('transform', 'translate(' + margin.left + ', 0)')
.call(yAxis);
} else {
svg.select('g.y.axis')
.transition()
.duration(1500)
.ease('sin-in-out')
.call(yAxis);
}
var area = d3.svg.line()
.interpolate('basis')
.x(function(d) {
return xScale(d.month);
})
.y(function(d) {
return yScale(d.sales);
});
path.datum(_data)
.transition()
.duration(1500)
.attr('d', area);
isInitialized = true;
}
});
html {
height: 500px;
}
path {
fill: none;
fill-opacity: 0.7;
}
#chart {
height: 400px;
}
#chart>svg {
width: 100%;
height: 100%;
stroke: black;
fill: none;
}
.axis path,
.axis line {
fill: none;
stroke: #000;
stroke-width: 1px;
shape-rendering: crispEdges;
}
.axis text {
font-family: 'Palatino Linotype', 'Book Antiqua', Palatino, FreeSerif, serif;
font-size: 13px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.0/lodash.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
最佳答案
我认为你面临的问题是你的插值
如果你改变
d3.svg.line()
.interpolate('basis')
到
d3.svg.line()
.interpolate('line')
你会看到它会命中你所有的数据点,但不清楚这是否是你想要的。
关于javascript - d3 图表正在显示,但在轴上显示时值关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31195131/
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我试图用这种形式简单地获取数字 28 integer+space+integer+integer+space+integer我试过这个正则表达式 \\s\\d\\d\\s 但我得到了两个数字11 和
最近一直在学习D语言。我一直对运行时感到困惑。 从我能收集到的关于它的信息中,(这不是很多)我知道它是一种有助于 D 的一些特性的运行时。像垃圾收集一样,它与您自己的程序一起运行。但是既然 D 是编译
想问一下这两个正则表达式有区别吗? \d\d\d 与 \d{3} 我已经在我的本地机器上使用 Java 和 Windows 操作系统对此进行了测试,两者都工作正常并且结果相同。但是,当在 linux
我正在学习 Go,而且我坚持使用 Go 之旅(exercise-stringer.go:https://tour.golang.org/methods/7)。 这是一些代码: type IPAddr
我在Java正则表达式中发现了一段令我困惑的代码: Pattern.compile( "J.*\\d[0-35-9]-\\d\\d-\\d\\d" ); 要编译的字符串是: String string
我在 ruby 代码上偶然发现了这个。我知道\d{4})\/(\d\d)\/(\d\d)\/(.*)/是什么意思,但是\1-\2-\3-\4 是什么意思? 最佳答案 \1-\2-\3-\4 是 b
我一直在努力解决这个问题,这让我很恼火。我了解 D 运行时库。它是什么,它做什么。我也明白你可以在没有它的情况下编译 D 应用程序。就像 XoMB 所做的那样。好吧,XoMB 定义了自己的运行时,但是
我有两个列表列表,子列表代表路径。我想找到所有路径。 List> pathList1 List> pathList2 当然是天真的解决方案: List> result = new ArrayList>
我需要使用 Regex 格式化一个字符串,该字符串包含数字、字母 a-z 和 A-Z,同时还包含破折号和空格。 从用户输入我有02-219 8 53 24 输出应该是022 198 53 24 我正在
目标是达到与this C++ example相同的效果: 避免创建临时文件。我曾尝试将 C++ 示例翻译为 D,但没有成功。我也尝试过不同的方法。 import std.datetime : benc
tl;dr:你好吗perfect forwarding在 D? 该链接有一个很好的解释,但例如,假设我有这个方法: void foo(T)(in int a, out int b, ref int c
有什么方法可以在 D 中使用abstract auto 函数吗? 如果我声明一个类如下: class MyClass { abstract auto foo(); } 我收到以下错误: mai
有没有人为内存中重叠的数组切片实现交集?算法在没有重叠时返回 []。 当 pretty-print (使用重叠缩进)内存中重叠的数组切片时,我想要这个。 最佳答案 如果您确定它们是数组,那么只需取 p
我已经开始学习 D,但我在使用 Andrei Alexandrescu 所著的 The D Programming Language 一书中提供的示例时遇到了一些麻烦。由于 int 和 ulong 类
如何创建一个不可变的类? 我的目标是创建一个实例始终不可变的类。现在我只是用不可变的方法和构造函数创建了一个“可变”类。我将其称为 mData,m 表示可变。然后我创建一个别名 alias immut
不久前我买了《The D Programming Language》。好书,很有教育意义。但是,我在尝试编译书中列出的语言功能时遇到了麻烦:扩展函数。 在这本书中,Andrei 写了任何可以像这样调用
我在 D http://www.digitalmars.com/d/2.0/lazy-evaluation.html 中找到了函数参数的惰性求值示例 我想知道如何在 D 中实现可能的无限数据结构,就像
这个问题在这里已经有了答案: 12 年前关闭。 Possible Duplicate: Could anyone explain these undefined behaviors (i = i++
当前是否可以跨模块扫描/查询/迭代具有某些属性的所有函数(或类)? 例如: source/packageA/something.d: @sillyWalk(10) void doSomething()
我是一名优秀的程序员,十分优秀!