Javascript 如何使用d3.ticks在条形图中显示原始y轴值
我有一些金额(美元),我在y轴上显示,在x轴上显示年份。现在,我想在y轴上显示原始数字,但无法显示 我的意思是,在y轴上,我想显示从1到100000的数字作为金额,但现在,使用.ticks(10),我只能在y轴上使用0到8000之间的金额 还有一件事,若我想在x轴上显示字符串,那个么如何显示,请告诉我。我被困在这里,刚加入d3Javascript 如何使用d3.ticks在条形图中显示原始y轴值,javascript,svg,d3.js,Javascript,Svg,D3.js,我有一些金额(美元),我在y轴上显示,在x轴上显示年份。现在,我想在y轴上显示原始数字,但无法显示 我的意思是,在y轴上,我想显示从1到100000的数字作为金额,但现在,使用.ticks(10),我只能在y轴上使用0到8000之间的金额 还有一件事,若我想在x轴上显示字符串,那个么如何显示,请告诉我。我被困在这里,刚加入d3 function test() { var graph_data; // in graph_data it should contain value like thi
function test() {
var graph_data;
// in graph_data it should contain value like this
// [Object { letter="2011", frequency="10000"},
// Object { letter="2012", frequency="8200"}]
var margin = {top: 20, right: 20, bottom: 30, left: 40},
width = 960 - margin.left - margin.right,
height = 500 - margin.top - margin.bottom;
var x = d3.scale.ordinal()
.rangeRoundBands([0, 110], .3);
var y = d3.scale.linear()
.range([height, 0]);
var xAxis = d3.svg.axis()
.scale(x)
.tickPadding(10)
.orient("bottom");
var yAxis = d3.svg.axis()
.scale(y)
.tickPadding(3)
.orient("left")
.ticks(10);
var svg = d3.select("#award_by_year_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 + ")");
x.domain(graph_data.map(function(d) { return d.letter; }));
y.domain([0, d3.max(graph_data, function(d) { return d.frequency; })]);
svg.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + height + ")")
.call(xAxis);
svg.append("g")
.attr("class", "y axis")
.call(yAxis)
.append("text")
.attr("transform", "rotate(-90)")
.attr("y", 6)
.attr("dy", ".71em")
.style("text-anchor", "end")
.text("Total dollar");
svg.selectAll(".bar")
.data(graph_data)
.enter().append("rect")
.attr("class", "bar")
.attr("x", function(d) { return x(d.letter); })
.attr("width", x.rangeBand())
.attr("y", function(d) { return y(d.frequency); })
.attr("height", function(d) { return height - y(d.frequency); });
function type(d) {
d.frequency = +d.frequency;
return d;
}
}
现在,这段代码的工作原理如下图所示。我想根据美元总值来改变y轴的值,它来自于表中,它也可以是-ve+ve,上限不固定。那怎么解决呢
请给我一个有价值的解决方案
谢谢好的,根据我对你的问题的理解,我得到的是: 我的意思是在y轴上,我想显示从1到100000的数字作为数量,但是 现在,对于.ticks(10),我在y只能使用0到8000个数量 轴心国 为此,我要检查一下,它记录了函数
tickValues
。使用此选项,您可以精确指定要在y轴上显示的内容。假设您只想显示0和100000,那么只需传递数组[0,10000]
还有一件事,如果我想在x轴上显示字符串
那我怎么才能展示呢?请告诉我。我被困在这里和新来的
d3
这将允许您自定义x轴上的任何刻度值。如果我不理解问题的第一部分,您也可以在y轴上使用此技巧自定义刻度值的输出。我不清楚您想做什么。从您的代码中,看起来您当前在y轴上显示数字,在x轴上显示字符串。您的问题是如何用美元符号格式化数字,以及如何将字符串解析为日期吗?嗨,Lars Kotthoff。。。实际上,根据我在x轴上的上述代码,显示的是一个输出值,我已经修改了我的问题,并添加了图像,以便进一步澄清。请检查。对不起,我还是不明白——这张照片显示了你目前拥有的东西还是你正在尝试做的事情?而且,看起来你的总价值是负的?实际上。。。。此图像是根据我的上述代码显示的。它也可以取负值。现在,如果我将值20000作为总数传递,那么在x轴。最大范围应显示8000,然后横杆应在上方交叉,但我想设置在两者之间。如果你能让我知道我的skype manijain333thnx这是有帮助的,但如果y轴值(总美元)是负数,那么你喜欢哪种条形图。。我的意思是如何自定义或有任何其他的例子。你总是可以反转条形图,使条形图看起来像是向下的(将x轴放在顶部,反转y域)。这样,负值更有意义。我不知道你是不是这个意思。
svg.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + height + ")")
.call(xAxis);
.selectAll('text')
.text(function(d) {
return 'Some string: ' + d.letter
})