d3.tsv找到最大值
d3.tsv Find Maximum Value
这就是我的TSV的样子,但是有更多的行和值变化更频繁。
cdate ctime Saarland Mecklenburg-Vorpommern Thueringen Magdeburg Dessau Halle Leipzig Dresden Chemnitz Karlsruhe Stuttgart Tuebingen Freiburg Berlin Brandenburg Schleswig-Holstein Hamburg Bremen Trier Koblenz Rheinhessen-Pfalz Unterfranken Oberfranken Mittelfranken Oberpfalz Niederbayern Oberbayern Schwaben Kassel Giessen Darmstadt Munster Detmold Arnsberg Duesseldorf Koeln Luneburg Weser-Ems Hannover Braunschweig
01.01.2011 00:00 1526.66 0.00 497.24 0.00 0.00 0.00 0.00 0.00 0.00 25484.15 319.77 5992.47 92729.72 0.00 0.00 0.00 0.00 551.05 15948.44 9511.05 0.00 12506.98 0.00 11792.09 2354.59 34020.30 40880.95 6813.97 81734.04 0.00 981.48 0.00 0.00 44933.62 1122.27 3760.11 0.00 0.00 27893.19 714.28
01.01.2011 00:15 1526.66 0.00 497.24 0.00 0.00 0.00 0.00 0.00 0.00 25484.15 319.77 5992.47 92729.72 0.00 0.00 0.00 0.00 551.05 15948.44 9511.05 0.00 12506.98 0.00 11792.09 2354.59 34020.30 40880.95 6813.97 81734.04 0.00 981.48 0.00 0.00 44933.62 1122.27 3760.11 0.00 0.00 27893.19 714.28
我如何从这个tsv中读出最大值?
这是d3。tsv叫
d3.tsv("WasserNeu.tsv", importTSV);
var importedData = []; //[date][time].city
function importTSV(error, data) {
for (var row in data) {
var dataRow = data[row]; //row is just the number of the current object, data[row] represents its contents
if (importedData[dataRow.cdate] === undefined) {
importedData[dataRow.cdate] = [];
}
if (importedData[dataRow.cdate][dataRow.ctime] === undefined) {
importedData[dataRow.cdate][dataRow.ctime] = [];
}
for (var oneCity in dataRow) {
if (oneCity != "cdate" && oneCity != "ctime") {
if (importedData[dataRow.cdate][dataRow.ctime][oneCity] === undefined) {
importedData[dataRow.cdate][dataRow.ctime][oneCity] = [];
}
importedData[dataRow.cdate][dataRow.ctime][oneCity] = dataRow[oneCity];
//console.log("dataPoint ("+oneCity+"): "+dataRow[oneCity]);
}
}
//编辑
现在我在return +d3.max
之前加了+var maxValue = d3.max(d3.values(importedData), function(times){
return +d3.max(d3.values(times), function(cities){
return d3.max(d3.values(cities));
});
});
现在我得到的最大值是9672.44,这仍然不是我的最大值。
为什么不简单地在遍历数组时存储它呢?
我还添加了一行来检查数据是否实际表示为number (parseFloat)。你可能会忽略它,但它有助于减少错误来源。
d3.tsv("WasserNeu.tsv", importTSV);
var importedData = []; //[date][time].city
var valueCache; //caching value
var newMaxValue = 0; //store the max value
function importTSV(error, data) {
for (var row in data) {
var dataRow = data[row]; //row is just the number of the current object, data[row] represents its contents
if (importedData[dataRow.cdate] === undefined) {
importedData[dataRow.cdate] = [];
}
if (importedData[dataRow.cdate][dataRow.ctime] === undefined) {
importedData[dataRow.cdate][dataRow.ctime] = [];
}
for (var oneCity in dataRow) {
if (oneCity != "cdate" && oneCity != "ctime") {
if (importedData[dataRow.cdate][dataRow.ctime][oneCity] === undefined) {
importedData[dataRow.cdate][dataRow.ctime][oneCity] = [];
}
valueCache = parseFloat(dataRow[oneCity]); //cache the value to reduce parse and array-access activity
if (valueCache > newMaxValue) {
newMaxValue = valueCache;
}
importedData[dataRow.cdate][dataRow.ctime][oneCity] = valueCache;
}
}
}
console.log("NewMax " + newMaxValue);
由于您没有更具体,这将找到整个"网格"中最大单元格的值:
d3.max(data, function(row){ return d3.max(row.values()); });
查看d3 Arrays文档获取更多信息。
从你的importedData
结构,这应该得到最大值:
d3.max(d3.values(importedData), function(times){
return d3.max(d3.values(times), function(cities){
return d3.max(d3.values(cities));
});
});
相关文章:
- 在Javascript数组中查找绝对最大值
- Html5输入属性的默认值,如最小值、最大值、大小等
- 按最大值获取数组索引
- 识别滑块范围的最小值和最大值
- 如何在最大值之前的某个点停止范围滑块
- 访问Highcharts系列的最小/最大值:afterSetExtremes不会激发
- 如何在拖动后获得图表的最小值和最大值放大高图表
- AngularJs:在数字输入字段中设置验证的条件最小值和最大值
- HTML5范围滑块最小值和最大值
- 如何仅在存在最小值和最大值时才显示错误消息
- 在 JavaScript 事件中添加最小值和最大值
- 从 JavaScript 中的数组中获取最大值和最小值
- 获取整数对象属性名称的最小值和最大值
- 高图表 - 在缩放重置中设置最大值和最小值
- Java 脚本 设置日期的最小值和最大值属性
- 使用javascript动态更改select中的最大值
- 如何设置jQuery微调器的最大值和最小值
- 当达到最小值和最大值时,防止在输入中显示额外的文本
- 使用函数从数组中查找最小值和最大值
- d3.tsv找到最大值