填充堆积面积图将反转 d3
The fill in stacked area chart gets reversed d3
我不知道
为什么我的堆积面积图的填充被颠倒了。我不知何故能够从网站上复制它并创建一支笔。有很多数据(对此感到抱歉)。请检查此笔链接。感谢帮助。下面我的代码片段:
function plotStackedArea(data) {
clearChart();
appendResponsiveSvg();
checkLength(sgChartData);
// getting min and max values to pass in domain
var minX = d3.min(data, function (kv) {
return d3.min(kv.values, function (d) {
return d.x;
}) });
var maxX = d3.max(data, function (kv) {
return d3.max(kv.values, function (d) {
return d.x;
}) });
var minY = d3.min(data, function (kv) {
return d3.min(kv.values, function (d) {
return d.y;
}) });
var maxY = d3.max(data, function (kv) {
return d3.max(kv.values, function (d) {
return d.y;
}) });
// we exclude x axis label from here
var getKeysArr = d3.keys(stackedDataToPlot[0]).filter(function(key) { return key !== xaxisData[0].columnID; });
// Color range - add your favorites here
var color = d3.scale.ordinal()
.range(["#98abc5", "#8a89a6", "#7b6888", "#6b486b", "#a05d56", "#d0743c", "#ff8c00"]);
function xAxisScale() {
if ((xaxisData[0].hasOwnProperty("dataType")) && (xaxisData[0].dataType === "String")) {
// this is for ordinal data
var ordinal = d3.scale.ordinal().rangePoints([MARGINS.left, WIDTH - MARGINS.right], 0).domain(sgChartData.map(function(d) {
return d.x;
}));
return ordinal;
} else {
// this is for numbers
var linear = d3.scale.linear().range([MARGINS.left, WIDTH - MARGINS.right]).domain([minX, maxX]);
return linear;
}
}
var xScale = xAxisScale(),
yScale = d3.scale.linear()
.range([HEIGHT - MARGINS.top, MARGINS.bottom])
.domain([0, maxY]),
xAxis = d3.svg.axis()
.scale(xScale)
.tickValues(_arr.map(function(d) {
return d.x;
})),
yAxis = d3.svg.axis()
.scale(yScale);
yAxis = d3.svg.axis()
.scale(yScale)
.orient("left");
// for stacked area
d3.layout.stack(data);
var area = d3.svg.area()
.x(function(d) {
return xScale(d.x);
})
.y0(function(d) {
return yScale(HEIGHT - MARGINS.top, MARGINS.bottom);
})
.y1(function(d) {
return yScale(d.y);
})
.interpolate("cardinal");
data.forEach(function(d, i) {
svg.append('svg:path')
.attr('d', area(d.values))
.attr('id', 'line_' + d.key)
.attr('fill', function(d, j) {
return color(i);
});
});
svg.append("svg:g")
.attr("class", "axis")
.attr("transform", "translate(0," + (HEIGHT - MARGINS.bottom) + ")")
.call(xAxis);
svg.append("svg:g")
.attr("class", "axis")
.attr("transform", "translate(" + (MARGINS.left) + ",0)")
.call(yAxis);
var legend = svg.selectAll(".legend")
.data(getKeysArr.slice().reverse())
.enter().append("g")
.attr("class", "legend")
.attr("transform", function(d, i) { return "translate(0," + i * 20 + ")"; });
legend.append("rect")
.attr("x", WIDTH - 18)
.attr("width", 18)
.attr("height", 18)
.style("fill", function(d, j) {
return color(j);
});
legend.append("text")
.attr("x", WIDTH - 24)
.attr("y", 9)
.attr("dy", ".35em")
.style("text-anchor", "end")
.text(function(d) { return d; });
}
plotStackedArea(multiLineData);
带解决方案的笔链接:堆积区域 d3
您不需要缩放初始 y0 值。您希望它们与 x 轴定位的 y 值匹配(假设您希望图表底部位于 x 轴上):
.y0(function(d) {
return HEIGHT - MARGINS.bottom;
})
相关文章:
- d3饼图与烧瓶服务器
- 在画布上绘制d3形状的面积图
- D3饼图未更新
- 如何在d3.js图库中基于nodes id连接边和节点
- D3折线图鼠标悬停坐标效果
- Neo4j结果(JSON格式)创建D3树图
- 面积图的条件填充 D3.js
- 填充堆积面积图将反转 d3
- 具有 D3.js 的多个面积图
- D3.js 折线和面积图 - 想要添加一条由两点定义并表示阈值/最小值的额外线(以便于查看)
- D3.js面积图 - JSON 数据未绑定到图表
- D3面积图能量示例
- D3.js中json文件的堆叠面积图
- D3.js中的堆积面积图
- 更新d3中的多级数面积图
- 面积图与平滑的线条可能与D3.js
- 有没有一种简单的方法可以把这个D3多线图变成面积图
- D3 中带有工具提示的面积图
- 在 d3 堆积面积图中鼠标悬停时显示“矩形”内的工具提示值
- 带有 D3 的面积图无法在 JSP 页面上呈现,但与 HTML 配合使用正常