水平条形图 y 轴对齐方式
Horizontal bar chart y axis alignment
我的水平条形图中的 yAxis 有问题。
var data = [0, 0, 0, 4, 0, 0, 0, 0, 18, 0, 0, 0, 52, 14, 0, 16];
var margin = { left: 20, top: 0 },
width = 420,
barHeight = 20,
height = barHeight * data.length;
var xScale = d3.scale.linear()
.domain([0, d3.max(data)])
.range([0, width - margin.left]);
var yScale = d3.scale.linear()
.domain([0, data.length])
.range([0, height]);
var chart = d3.select(".degree-hist")
.attr("width", width)
.attr("height", barHeight * data.length)
.append("g")
.attr("transform", function(d, i) { return "translate(" + margin.left + ", 0)"; });
var bar = chart.selectAll("g")
.data(data)
.enter().append("g")
.attr("transform", function(d, i) { return "translate(0," + i * barHeight + ")"; });
bar.append("rect")
.attr("width", xScale)
.attr("height", barHeight - 1);
bar.append("text")
.attr("x", function(d) { return xScale(d) - 3; })
.attr("y", barHeight / 2)
.attr("dy", ".35em")
.text(function(d) { return d > 0 ? d : ""; });
var yAxis = d3.svg.axis()
.orient('left')
.scale(yScale)
.tickSize(2)
.tickFormat(function(d, i){ return i + 1; })
.tickValues(d3.range(data.length));
chart.append('g')
.attr("transform", "translate(0,0)")
.attr('id','yaxis')
.call(yAxis);
我在这里说明了这个问题:http://jsfiddle.net/mt556rot/3/
由于某种原因,我没有设法对齐 y 轴标签。我想将标签与它们所属的栏对齐。不过,在我的示例中,它们出现在栏的上边缘。蜱虫也不可见。
有什么想法可以解决这个问题吗?
您不是将条形放在轴标签上的居中,而是从它们开始:
bar.append("rect")
.attr("width", xScale)
.attr("height", barHeight - 1)
.attr("y", -barHeight / 2); <-- added this to center
此外,您的顶部刻度标签被切断,因为您没有考虑top
边距:
var chart = d3.select(".degree-hist")
.attr("width", width)
.attr("height", barHeight * data.length + margin.top)
.append("g")
.attr("transform", function(d, i) { return "translate(" + margin.left + ", " + margin.top + ")"; }); // <-- margin.top into transform with top > 0
最后,您没有为刻度设置任何样式(CSS来自此处):
#yaxis path,
#yaxis line {
fill: none;
stroke: #000;
shape-rendering: crispEdges;
}
更新的小提琴。
相关文章:
- 显示可链接的搜索结果+对齐方式
- fabric.js中的文本对齐方式未按预期工作
- 如何在使用 UIWebView 编辑 HTML 内容时正确调整输入语言更改 (LTR/RTL) 的文本对齐方式
- 如何更改html中复选框的对齐方式
- 如何防止 td 中的文本破坏表格的对齐方式
- iFrame 文本对齐方式
- ext.js 消息框按钮对齐方式
- jquery切换显示/隐藏对齐方式
- 调用后端时,页面会失去对齐方式,并且需要一些时间来重新对齐控件
- 更改文本对齐方式 更改语言后
- Chrome/FF 与 IE8 中的搜索框对齐方式
- jQuery 面板内的手风琴对齐方式
- 水平条形图 y 轴对齐方式
- 带有滚动条和列对齐方式的 Jquery 弹出窗口
- 将彩色带置于图像/标签+图像/文本对齐方式之上->JavaScript Titanium移动应用程序
- 页面的垂直对齐方式为100%的高度
- Div高度动画会导致Div在jQuery中更改对齐方式
- 表中快速的对象对齐方式
- jQuery对齐方式-相对于浏览器窗口
- 如何更改高图工具提示的对齐方式