7
votes

D3 semble supposer que je connais les noms de colonne d'un CSV?

J'ai des fichiers CSV générés et j'essaie de les charger dans D3 pour les graphiquement. Les noms de colonne sont basés sur les données, donc je ne les connais essentiellement pas à l'avance. Avec des tests, je suis capable de charger ces données et de la graphique tout bien et bien si je connais les noms des colonnes ... mais je ne sais pas mon cas d'utilisation.

Comment puis-je gérer cela dans d3? Je n'arrive pas à trouver quelque chose pour aider / référencer cela en ligne ou dans la documentation. Je peux voir quand je me connecte à la base de données de la console [0] à partir de D3.CSV qu'il y a deux colonnes et les valeurs lues pour eux, mais je ne sais pas comment se référer arbitrairement à la colonne 1 ou 2 des données sans connaître le Nom de la colonne à l'avance. J'aimerais éviter cela en général, sachant que mes horodares sont dans la colonne 1 et que mes données sont dans la colonne 2, si cela a du sens.

Modifier, ma réponse utilise d3.entre pour aider à apprendre le nom du nom de la colonne inconnue, puis continue d'accéder à tous les objets avec cet index: xxx


0 commentaires

4 Réponses :


3
votes

Vous pouvez utiliser d3.tries () Fonction pour transformer un tableau associatif en un autre tableau contenant un tableau associatif avec la touche et Valeur pour chaque paire de valeur de clé.


4 commentaires

Super merci. Je vois maintenant je suis capable de trouver le nom de la colonne. Je suis toujours nouveau à D3, cependant, et je dois voir comment se référer à des valeurs dans cette colonne maintenant dans le reste du code, similaire à la manière dont les exemples se réfèrent à "D.Date" et "D.Close", J'ai maintenant besoin d'utiliser le nom de la colonne de variable que j'ai trouvé pour faire référence à ces entrées. Est-ce possible ici? Je peux stocker le nom de la colonne mais ne peut pas sembler accéder aux données par ce nom de colonne de manière raisonnable. Merci du coup de main jusqu'à présent


On dirait que vous devriez transformer votre matrice CSV en une structure de données plus appropriée, par ex. En mappant une fonction sur celle-ci que, pour chaque élément (c'est-à-dire une ligne de votre CSV), obtient les intérêts et extrayez ceux que vous souhaitez.


Je ne suis pas exactement avec ce que je dois utiliser dans d3. Voyez-vous ce que mon problème est? Tout est identique à des appels normaux d3.csv, sauf que je ne connais pas les noms des colonnes au préalable, et je veux donc simplement charger les données dans mon CSV et tracer un graphique de ligne simple comme avant, mais avoir appris le nom de la deuxième colonne pour le faire. Je peux éventuellement bouger avec le tableau D3.entries (), je me suis rendu, je pense? Mais je ne suis pas sûr et je ne veux pas perdre trop de temps si c'est maintenant ce que vous vouliez vouloir essayer.


Éditer, newmind. Je suis juste un idiot et je ne savais pas que je pouvais accéder à un champ d'objet JS avec [] Syntaxe, donc je ne fais que sauvegarder le nom de la colonne et accéder aux objets avec cela. Je mettrai à jour le poste avec plus de ma réponse et j'accepte votre choix comme 99% des travaux. Merci



-1
votes

J'ai utilisé d3.entries () comme ci-dessous: xxx

espère que cela aide :)


2 commentaires

sélectionnée n'est pas défini.


C'est la clé que vous utilisez. Par exemple, mes données contiennent de nombreuses colonnes et je dessine un graphique basé sur des valeurs x et y sélectionnées.



1
votes

Vous pouvez obtenir des touches (noms de colonne) à l'aide de D3 V3 valeurs () méthode comme ceci: xxx


0 commentaires

1
votes

Je suis content que vous l'avez compris, @CDietschrun.

La version 4 de D3 vous permet de le faire un peu plus simplement. Il introduit une propriété colonnes em>, qui crée une gamme d'en-têtes de colonne (c.-à-d. Les «touches» du jeu de données). P>

donc, au lieu d'utiliser votre code: P>

var valueKey = data.columns;


0 commentaires