- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在每个条形图旁边添加计数(条形图的值),但计数不可见。我试图为文本添加不透明度甚至 z 索引以检查它是否被条重叠,但它没有帮助。在检查元素时,我知道标签包含在其中,这是导致问题的原因,任何人都可以指导我,以便我可以更正我的代码。
是否可以在刷新数据时更新值?
代码如下:jsfiddle link
datasetOption1 = [{
label: "10-20",
value: 22,
count: 22
}, {
label: "20-30",
value: 33,
count: 33
}, {
label: "30-40",
value: 4,
count: 4
}, {
label: "40-50",
value: 15,
count: 15
}, {
label: "50-60",
value: 36,
count: 36
}];
datasetOption2 = [{
label: "Category 1",
value: 10,
count: 11
}, {
label: "Category 2",
value: 20,
count: 3
}, {
label: "Category 3",
value: 30,
count: 41
}, {
label: "Category 4",
value: 5,
count: 17
}, {
label: "Category 5",
value: 12,
count: 9
}, {
label: "Category 6",
value: 23,
count: 33
}];
var chart = document.getElementById("chart");
var margin = {
top: 10,
right: 20,
bottom: 40,
left: 50
},
width = 400,
height = 300;
var div = d3.select(chart).append("div").attr("class", "toolTip");
var formatPercent = d3.format("");
var y = d3.scale.ordinal()
.rangeRoundBands([height, 0], .2, 0.5);
var x = d3.scale.linear()
.range([0, width - 20]);
var xAxis = d3.svg.axis()
.scale(x)
.ticks(6)
.tickSize(5)
.orient("bottom");
var yAxis = d3.svg.axis()
.scale(y)
.orient("left");
//.tickFormat(formatPercent);
var svg = d3.select(chart).append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
svg.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + height + ")")
.call(xAxis);
d3.select("input[value=\"total\"]").property("checked", true);
function changeAge(dataset) {
var dataMax = d3.max(dataset, function(d) {
return d.count;
});
y.domain(dataset.map(function(d) {
return d.label;
}));
x.domain([0, (dataMax * 1.4)]);
scale = d3.scale.linear()
.domain([0, (dataMax * 1.4)])
.range([0, width - 40 - 10]);
svg.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + parseInt(height + margin.top + 10) + ")")
.call(xAxis);
svg.select(".y.axis").remove();
svg.select(".x.axis").remove();
svg.append("g")
.attr("class", "y axis")
.call(yAxis)
.append("text")
.attr("transform", "rotate(0)")
.attr("x", 50)
.attr("dx", ".1em")
.style("text-anchor", "end");
/* .text("Option %"); */
var bar = svg.selectAll(".bar")
.data(dataset, function(d) {
return d.label;
});
// new data:
bar.enter().append("rect")
.attr("class", "bar")
.attr("x", function(d) {
return x(d.count);
})
.attr("y", function(d) {
return y(d.label);
})
.attr("width", function(d) {
return width - x(d.count);
})
.attr("height", y.rangeBand());
//add a value label to the right of each bar
bar.append("text")
.attr("class", "label")
//y position of the label is halfway down the bar
.attr("y", function(d) {
return y(d.label) + y.rangeBand() / 2 + 4;
})
//x position is 3 pixels to the right of the bar
.attr("x", function(d) {
return x(d.count) + 3;
})
.text(function(d) {
return d.count;
});
// removed data:
bar.exit().remove();
// updated data:
bar.transition()
.duration(750)
.attr("x", function(d) {
return 0;
})
.attr("cx", 0)
.attr("y", function(d) {
return y(d.label);
})
.attr("width", function(d) {
return x(d.count);
})
.attr("height", y.rangeBand());
}
changeAge(datasetOption1);
$('#btnChange').on('click', function() {
changeAge(datasetOption2)
})
svg {
width: 100%;
height: 350px;
}
.bar {
fill: rgb(39, 85, 130);
/* fill: #A18FDB; */
}
.axis path,
.axis line {
fill: none;
stroke: #000;
stroke-width: 1px;
shape-rendering: crispEdges;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3-tip/0.7.1/d3-tip.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.10/d3.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div id="chart">
</div>
<button id="btnChange">
change </button>
最佳答案
您正在使用 rect
DOM 添加 text
DOM,这就是您看不到文本标签的原因。
解决问题:
像这样创建一个组:
bar.enter().append("g")
.attr("class", "bar")
将您的 rect
和 text
DOM 添加到组中。
最后,对于矩形 DOM 的转换,从组中选择矩形:
bar.selectAll("rect").transition()
.duration(750)
.attr("x", 函数(d) {
工作代码here
关于javascript - 在条形图 d3js 旁边添加计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48413921/
我想在 下面添加按钮标签,但不知道使用什么 CSS 来实现。下图显示了一个可能的场景,“Main_Page”标题和按钮构成了一个单独的 div 的每个部分。我尝试使用 margin-top属性,但想
我的图像不会位于 slider 旁边.. 而只是堆叠在 slider 下方。好像没有空间放置图像,因为 slider 占用了太多空间,但是当我查看代码时,情况似乎并非如此,除非我错过了什么:) Thi
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 6 年前。 Improve
我想在文本的左侧放置一个图像,并根据窗口的分辨率保持原样。 这是没有图像的样子:http://prntscr.com/fmky4f 这是我希望它放置后的样子。 https://prnt.sc/fmkk
我创建了一个button,当我点击button然后popup模型显示时,它会隐藏在页面主体旁边,按钮也会隐藏我滚动。我希望当弹出窗口出现时我无法滚动我的页面主体。我使用 Bootstrap 创建了模型
我是一名学生网络开发人员,需要一些帮助。我需要复制这个 wikipedia page尽我所能 我想把 Story 和下面的 div 放在官方 wiki 页面上的位置。 另一个问题是游戏玩法“div”,
需要这项工作的 header 的屏幕截图: 如您所见,菜单位于 Logo 下方。我想要它旁边的菜单,在 Logo 的右侧。我不知道这是否可行,但如果可行,我需要一些帮助,谢谢。 这是所有内容的代码,为
基本上,我们必须有这样的布局,其中图像必须溢出容器,文本填充图像创建的空间(向左偏移)。 我们目前有这样的结构: Some paragraph
我有一个“弹出式”表格,它是一个固定元素。该表有时太高以适应某些屏幕,因此我将 overflow 设置为 auto。然而,滚动条似乎与弹出表格分离,因为父 div 是屏幕的宽度而表格较小。有没有办法让
我有一个带有边框的 div: 表示上面内容的div使用的样式是这样的: const style = { textAlign: "center", mar
如何在各种屏幕尺寸下完美地放置图像? .background-login { background: url(../img/login.png) no-repeat; background-s
我正在尝试在居中的圆形头像旁边的右上角放置一个编辑图标。但是,如果我在行小部件中使用中心小部件,它就不起作用: Row( children: [
首先,感谢您阅读我的问题! 因此,我遇到了一些有关将单元格名称传递到下一个 View 的问题。现在它会传递它,但只会显示最近加载的单元格。 现在的编程方式如下: var passName = "" v
这是网站:www.red-tuxedo.com 我希望“红色燕尾服”文本位于 Logo 旁边,而不是下方,并且我想摆脱贯穿 Logo 的硬性规定。我的 CSS/HTML 技能达不到要求。当我更改文本时
我有一个顶部水平菜单栏,宽度为 100%,居中对齐,位置固定,因此它不会随页面滚动。 但我还想在菜单左侧的菜单内联一个名称(例如名为 test)。 但即使我使用内联 block ,它也会根据左侧的 d
我有一个 4 个链接。我希望他们都在同一行。其中两个在中间,另外两个在右边。我把它们包了两个又两个,但我无法让它工作。 我的 CSS 是这样的: #links_center { } #links_ri
我在 material-ui 中使用 Grid 组件。我无法让网格元素相互堆叠。现在他们正在彼此堆叠。我不确定是什么让它们堆叠在一起。我已经这样做了,所以只有在小屏幕上网格元素才会堆叠在一起,否则每个
我试图在固定宽度的内联 block div 旁边放置一个按钮。但它就在 div 的下面。我试过减少容器的宽度,但这是行不通的。我想在不将类添加按钮放在单独的容器中的情况下完成此操作。该按钮应位于 .i
我在“聊天气泡”旁边有一个用户的图像,但该图像显示在气泡之后。 我如何将图像放在聊天气泡之前并固定在 div 上? 我的代码在这里:http://www.codepen.io/anon/pen/fFx
编辑 #1:这是问题的图片: 编辑 #2:这是我使用品牌类后的图片 编辑#3: 我正在尝试将图像 float 到导航栏旁边。它一直有效,直到我的导航栏宽度达到 100%。然后导航栏位于图像下方。 这是
我是一名优秀的程序员,十分优秀!