Ваши данные CSV должны быть в правильном формате. Есть несколько ненужных пробелов, которые затрудняют анализ, поскольку он включает пробелы в именах заголовков, на основании которых он сохраняет имена свойств в объектах.
cpu-util.csv должно быть
Computer_ID,timestamp,value,Percentage
1,01-07-11 0:00,0.8,8
. Кроме того, d3.js анализирует данные, сохраняя метки заголовков. поэтому массив computerid
должен быть заполнен с использованием свойства Computer_ID
данных. Таким образом, ваш код должен выглядеть примерно так:
<script>
var timestamp = [],
computerid = [],
percentage = [];
d3.csv("cpu-util.csv", function(data) {
console.log(data); //see the data structure
for (var i = 0; i < data.length; i++) {
timestamp[i] = data[i].timestamp; //use the property names.
computerid[i] = data[i].Computer_ID;
percentage[i] = data[i].Percentage;
console.log(computerid[i]);
console.log(timestamp[i]);
console.log(percentage[i]);
}
console.log(computerid[0]); //this will appear as it is within the function and
//the array is filled by the time this line is run
});
console.log(computerid[0]); //this will be undefined due to the asynchronous nature of javascript.
//This line of code runs before the for loop within the function
</script>
Если вы видите журнал консоли, console.log(computerid[0])
появится первым в журнале, а не перед тремя другими в функции, из-за асинхронного характера javascript. Есть способы, с помощью которых вы можете объединить функции в синхронные функции, используя Async / Await или Promises.
Также d3.js анализирует всю информацию как строки. Поэтому числовые значения, такие как Percentage
, необходимо преобразовать в числовые типы данных с помощью функции. Просто имейте это в виду.
Реализация определяется. Посмотрите то, что является различием между #include <имя файла> и #include “именем файла”.
Это и относительно текущего исходного файла и к любым данным путям поиска (-I для gcc).
Это зависит, на каком синтаксисе Вы используете в #include директиве:
#include "path-spec"
#include <path-spec>
Заключенная в кавычки форма: Эта форма сообщает, что препроцессор для поиска включает файлы в тот же каталог файла, который содержит #include оператор, и затем в каталогах любых файлов, которые включают (#include) тот файл. Препроцессор затем ищет вдоль пути, указанного/I параметром компилятора, затем вдоль путей, указанных ВКЛЮЧАТЬ переменной среды.
Форма угловой скобки: Эта форма сообщает, что препроцессор для поиска включает файлы сначала вдоль пути, указанного/I параметром компилятора, затем, при компиляции из командной строки, вдоль пути, указанного ВКЛЮЧАТЬ переменной среды.
Спецификация пути является именем файла, которому дополнительно предшествует спецификация каталога. Имя файла должно назвать существующий файл. Синтаксис спецификации пути зависит от операционной системы, в которой компилируется программа.
Эта информация должна быть в документации для Вашей определенной Ссылки Препроцессора C++, вышеупомянутое взято от этой статьи о MSDN, который имеет больше на предмете.
Полный путь поиска может зависеть от компилятора. Для Visual Studio документация указывает что это:
(...) сообщает, что препроцессор для поиска включает файлы в тот же каталог файла, который содержит #include оператор, и затем в каталогах любых файлов, которые включают (#include) тот файл. Препроцессор затем ищет вдоль пути, указанного/I параметром компилятора, затем вдоль путей, указанных ВКЛЮЧАТЬ переменной среды.
Его реализация определяется. Те #include "my_dir/xxy.hpp" на файле (например, foo.h) относительно файла (foo.h, и my_dir был бы на том же уровне в иерархии каталогов). С некоторыми (большинство?) компиляторы, можно использовать флаг для использования их <> (#include
Я знаю, что gcc / g ++ обеспечивает флаг-I. Таким образом, Вы могли использовать g ++-I / домой [...] указание, что xxy.hpp файл расположен в/home/my_dir/каталоге. Я не использовал никакой другой компилятор C/C++ в некоторое время теперь.