- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用以下代码创建一个 D3 图形。在此,我尝试绘制一些与天气相关的数据。在代码中,我尝试更改轴值但无法执行此操作。它被固定为我一开始提供的默认值。有人可以帮我吗?我使用的数据集是json数据(链接:https://drive.google.com/file/d/13-unvzxvjmFWVgfSKRJObZJc81VriyIf/view?usp=sharing)。
以下是我正在使用的代码。
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<style>
body {
font: 11px sans-serif;
}
.axis path,
.axis line {
fill: none;
stroke: #000;
shape-rendering: crispEdges;
}
.dot {
stroke: #000;
}
.tooltip {
position: absolute;
width: 200px;
height: 28px;
pointer-events: none;
}
</style>
<body>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script>
var margin = {top: 20, right: 20, bottom: 30, left: 40},
width = 960 - margin.left - margin.right, //900
height = 500 - margin.top - margin.bottom; //450
// setup fill color
var colorScale = d3.scale.linear()
.domain([-15, 30])
.range(["blue","red"]);
// add the graph canvas to the body of the webpage
var svg = d3.select("body").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 + ")");
// add the tooltip area to the webpage
var tooltip = d3.select("body").append("div")
.attr("class", "tooltip")
.style("opacity", 0);
var selectData = [ { "text" : "meantempm" },
{ "text" : "meanpressurem" },
{ "text" : "meanwindspdm" },
{ "text" : "humidity" },
]
var body = d3.select('body');
// load data
d3.json("weatherdata.json", function(error, data) {
// change string (from CSV) into number format
data.forEach(function(d) {//to check the utility
d.meanwindspdm = +d.history.dailysummary[0].meanwindspdm;
d.meantempm = +d.history.dailysummary[0].meantempm;
d.meanpressurem = +d.history.dailysummary[0].meanpressurem;
d.humidity = +d.history.dailysummary[0].humidity;
// console.log(d);
});
// setup x
var xExtent = d3.extent(data, function(d) { return (d.meanpressurem);}), //given
xScale = d3.scale.linear().domain(xExtent).range([0, width]), // value -> display //given
xValue = function(d) { return ((d.meanpressurem));}, // data -> value
xMap = function(d) { return xScale(d.meanpressurem);}, // data -> display
xAxis = d3.svg.axis().scale(xScale).orient("bottom"); //given
// setup y
var yExtent = d3.extent(data, function(d) {return (d.meantempm);}),
yValue = function(d) { return d.meantempm;}, // data -> value
yScale = d3.scale.linear().domain(yExtent).range([height, 0]), // value -> display
yMap = function(d) { return yScale(yValue(d));}, // data -> display
yAxis = d3.svg.axis().scale(yScale).orient("left");
//new addition
// Select X-axis Variable
var defs = body.append('defs')
.text('X-Axis:')
var yInput = body.append('select')
.attr('id','xSelect')
.on('change',xChange)
.selectAll('option')
.data(selectData)
.enter()
.append('option')
.attr('value', function (d) { return d.text }) ///check
.text(function (d) { return d.text ;})
//body.append('br')
// Select Y-axis Variable
var span = body.append('defs')
.text('Y-Axis: ')
var yInput = body.append('select')
.attr('id','ySelect')
.on('change',yChange)
.selectAll('option')
.data(selectData)
.enter()
.append('option')
.attr('value', function (d) { return d.text })//check
.text(function (d) { return d.text ;})
body.append('br')
//new addition upto
// x-axis
svg.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + height + ")")
.call(xAxis)
.append("text")
.attr("class", "label")
.attr('id','xAxisLabel')
.attr("x", width)
.attr("y", -6)
.style("text-anchor", "end")
.text("meanwindspdm");
// y-axis
svg.append("g")
.attr("class", "y axis")
.call(yAxis)
.append("text")
.attr("class", "label")
.attr('id','yAxisLabel')
.attr("transform", "rotate(-90)")
.attr("y", 6)
.attr("dy", ".71em")
.style("text-anchor", "end")
.text("meantempm");
// draw dots
svg.selectAll(".dot")
.data(data)
.enter().append("circle")
.attr("class", "dot")
.attr("r", 3.5)
.attr("cx", xMap)
.attr("cy", yMap)
.style("fill", function(d){return colorScale(d.meantempm)})
.on("mouseover", function(d) {
tooltip.transition()
.duration(200)
.style("opacity", .9);
tooltip.html(d.history.date.pretty + "<br/> (" + xValue(d)
+ ", " + yValue(d) + ")")
.style("left", (d3.event.pageX + 5) + "px")
.style("top", (d3.event.pageY - 28) + "px");
})
.on("mouseout", function(d) {
tooltip.transition()
.duration(500)
.style("opacity", 0);
});
// draw legend
var legend = svg.selectAll(".legend")
.data(colorScale.domain())
.enter().append("g")
.attr("class", "legend")
.attr("transform", function(d, i) { return "translate(0," + i * 20 + ")"; });
// draw legend colored rectangles
legend.append("rect")
.attr("x", width - 10)
.attr("width", 10)
.attr("height", 10)
.style("fill", colorScale);
// draw legend text
legend.append("text")
.attr("x", width - 16)
.attr("y", 9)
.attr("dy", ".35em")
.style("text-anchor", "end")
.text(function(d) { return d;})
// new addiiton/////////
function yChange() {
var value = this.value // get the new y value
yScale // change the yScale
.domain([
d3.min([0,d3.min(data,function (d) { return +d.history.dailysummary[0][value] })]),
d3.max([0,d3.max(data,function (d) { return +d.history.dailysummary[0][value] })])
])
yAxis.scale(yScale) // change the yScale
d3.select('#yAxis') // redraw the yAxis
.transition().duration(50)
.call(yAxis)
d3.select('#yAxisLabel') // change the yAxisLabel
.text(value)
d3.selectAll('circle') // move the circles
.transition().duration(50)
.delay(50)
//.delay(function (d,i) { return i*100})
.attr('cy',function (d) { return yScale(+d.history.dailysummary[0][value]) })
}
function xChange() {
var value = this.value // get the new x value
console.log(value);
console.log(data);
xScale // change the xScale
.domain([
d3.min([0,d3.min(data,function (d) {console.log( +d.history.dailysummary[0][value] ) ; return +d.history.dailysummary[0][value] })]),
d3.max([0,d3.max(data,function (d) { return +d.history.dailysummary[0][value] })])
])
xAxis.scale(xScale) // change the xScale //issue here I guess`enter code here`
d3.select('#xAxis') // redraw the xAxis
.transition().duration(50)
.call(xAxis)
d3.select('#xAxisLabel') // change the xAxisLabel
.transition().duration(50)
.text(value)
d3.selectAll('circle') // move the circles
.transition().duration(50)
.delay(50)
//.delay(function (d,i) { return i*100})
.attr('cx',function (d) { return xScale(+d.history.dailysummary[0][value]); })
}
// new addiiton upto/////////
});
</script>
</body>
</html>
最佳答案
如果我正确地阅读了您的代码,您正在尝试选择具有 id xAxis
或 yAxis
的元素,您尚未在给定的代码中指定该元素,您可以给了
.attr("class", "x axis")
尝试使用 d3.select(".x")
和 d3.select(".y")
而不是 d3.select("#xAxis ")
和 d3.select("#yAxis")
。
关于javascript - 无法更改 D3 中的 X/Y 轴值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47700549/
SO亲爱的 friend 们: 2014 年 3 月 18 日。我正在处理一种情况,在使用 ng-repeat 时,数组内的元素(我从 Json 字符串中获取)更改了原始顺序。 需要明确的是,数组中的
有很多问题询问如何在 JavaScript 单击处理程序中更改 div 的类,例如,此处:Change Div style onclick .我理解得很好(只需更改 .className),并且它有效
我从access导入了一个数据库到mysql,但其中一个表的列名“股数”带有空格,但我尝试更改、替换甚至删除列名,但失败了。任何人都可以帮助解决这一问题 String UpdateQuary = "U
我正在做一个随机的学校元素。 目前,我有一个包含两个 CSS 的页面。一种用于正常 View ,一种用于残障人士 View 。 此页面还包括两个按钮,它们将更改使用的样式表。 function c
我需要使用 javascript 更改 HTML 元素中的文本,但我不知道该怎么做。 ¿有什么帮助吗? 我把它定义成这样: Text I want to change. 我正在尝试这样做: docum
我在它自己的文件 nav_bar.shtml 中有一个主导航栏,每个其他页面都包含该导航栏。这个菜单栏是一个 jQuery 菜单栏(ApyCom 是销售这些导航栏的公司的名称)。导航栏上的元素如何确定
我正在摆弄我的代码,并开始想知道这个变化是否来自: if(array[index] == 0) 对此: if(!array[index] != 0) 可能会影响任何代码,或者它只是做同样的事情而我不需
我一直在想办法调整控制台窗口的大小。这是我正在使用的函数的代码: #include #include #define WIDTH 70 #define HEIGHT 35 HANDLE wHnd;
我有很多情况会导致相同的消息框警报。 有没有比做几个 if 语句更简单/更好的解决方案? PRODUCTS BOX1 BOX2 BOX3
我有一个包含这些元素的 XELEMENT B Bob Petier 19310227 1 我想像这样转换前缀。 B Bob Pet
我使用 MySQL 5.6 遇到了这种情况: 此查询有效并返回预期结果: select * from some_table where a = 'b' and metadata->>"$.countr
我想知道是否有人知道可以检测 R 中日期列格式的任何中断的包或函数,即检测日期向量格式更改的位置,例如: 11/2/90 12/2/90 . . . 15/Feb/1990 16/Feb/1990 .
我希望能够在小部件显示后更改 GtkButton 的标签 char *ButtonStance == "Connect"; GtkWidget *EntryButton = gtk_button_ne
我正在使用 Altera DE2 FPGA 开发板并尝试使用 SD 卡端口和音频线路输出。我正在使用 VHDL 和 C 进行编程,但由于缺乏经验/知识,我在 C 部分遇到了困难。 目前,我可以从 SD
注意到这个链接后: http://www.newscientist.com/blogs/nstv/2010/12/best-videos-of-2010-progress-bar-illusion.h
我想知道在某些情况下,即使剧本任务已成功执行并且 ok=2,ansible 也会显示“changed=0”。使用 Rest API 和 uri 模块时会发生这种情况。我试图找到解释但没有成功。谁能告诉
这个问题已经有答案了: 已关闭12 年前。 Possible Duplicate: add buttons to push notification alert 是否可以在远程通知显示的警报框中指定有
当您的 TabBarController 中有超过 5 个 View Controller 时,系统会自动为您设置一个“更多” View 。是否可以更改此 View 中导航栏的颜色以匹配我正在使用的颜
如何更改.AndroidStudioBeta文件夹的位置,默认情况下,该文件夹位于Windows中的\ .. \ User \ .AndroidStudioBeta,而不会破坏任何内容? /编辑: 找
我目前正在尝试将更具功能性的编程风格应用于涉及低级(基于 LWJGL)GUI 开发的项目。显然,在这种情况下,需要携带很多状态,这在当前版本中是可变的。我的目标是最终拥有一个完全不可变的状态,以避免状
我是一名优秀的程序员,十分优秀!