Zur Navigation

Werte aus Array für ein Diagramm auswerten

1 Jerry02

okay! so werd ich das machen!
und jetzt noch die aller aller aller letzte frage!
wie kann ich jeden wert aus einer spalte einzeln ausgeben und als vaariable speichern, damit ich für diese werte sozusagen ein dynamisches kuchendiagramm erstellen kann?

27.08.2010 10:19

2 Jerry02

es müsste doch theoretisch genauso anfangen:

function Diagramm ()
		{
			var Anzahl = document.getElementById("Tabelle2").childNodes.length;
        Unsortiert = new Array();
        for (i = 0; i < Anzahl; i++) {
            Unsortiert[i] = new Array();
            Unsortiert[i]['Inhalt'] = document.getElementById("Tabelle2").childNodes[i].childNodes[1].firstChild.innerHTML;
            Unsortiert[i]['Wert'] = document.getElementById("Tabelle2").childNodes[i].childNodes[5].firstChild.innerHTML;
        }
        var DName = Unsortiert[0]['Inhalt'];
		var DWert = Unsortiert[0]['Wert'];

nur will ich ja nicht nur den wert und namen der 1. spalte (siehe Markierung), sondern alle, die in diesem moment da sind! und da ich diese ja irgendwie auch durch die gesamtsumme teilen muss und dann *100 damit ich die %-Zahl herausbekomme, müsste doch jeder wert eine eigene variable bekommen! wie geht das?

27.08.2010 11:26

3 Jerry02

okay vielleicht sollte ich die frage konkreter stellen! :) hier erstmal der skript:

function Diagramm ()
		{
			var Summe = 0;
			var Anzahl = document.getElementById("Tabelle2").childNodes.length;
			Unsortiert = new Array();
        for (i = 0; i < Anzahl; i++) {
            Unsortiert[i] = new Array();
            Unsortiert[i]['Inhalt'] = document.getElementById("Tabelle2").childNodes[i].childNodes[1].firstChild.innerHTML;
            Unsortiert[i]['Wert'] = document.getElementById("Tabelle2").childNodes[i].childNodes[5].firstChild.innerHTML;
        }
        for (i = 0; i < Anzahl; i++) {  
			Summe += parseInt(Unsortiert[i]['Wert']);
		} 
		for (i = 0; i < Anzahl; i++) {
		var DName = Unsortiert[i]['Inhalt'];
		var DWert = Unsortiert[i]['Wert'];
		}

es geth wieder um die markierten wörter! bis da hin ist alles klar, nur wenn jetzt das script tabelle durchläuft, dann wird logischerweise in der schleife immer der letzte durchlaufene wert gespeichert, also wird immer nur der letzte wert ausgegeben! wie kann ich aber alle werte ausgeben lassen, weil ich brauche die ja für das kuchendiagramm?

Edit: Ok ich muss die ausgabe dann mit in die schleife machen! nur wenn ich das mache, dann wird die zahl auch nacheinander mit der jeweils nachfolgenden überschrieben!

27.08.2010 12:10 | geändert: 27.08.2010 12:17

4 Jörg Kruse

Warum legst du drei Schleifen an - es reicht doch eine?

Abgesehen davon sind die Werte bereits in dem Array Unsortiert gespeichert - das kannst du ja an deine Kuchendiagramm-Funktion weiterreichen

Falls es darum geht, wie man diese Werte für die Erstellung eines Diagramms auswertet, sollte das aber in einem eigenen Thread besprochen werden, da das dann nichts mehr mit der Frage einer Tabellensortierung zu tun hat

27.08.2010 12:23

5 Jerry02

so neues Thema ;)
stimmt eigendlich. warum hab ich dort 3 schleifen eingebaut!
also hier meine frage: Wie kann ich die werte einfach aus dem array weiterreichen an die Diagrammfunktion?

27.08.2010 12:29

6 Jörg Kruse

Die Frage ist: wie schaut die Diagrammfunktion aus, bzw. was für Argumente möchte sie in welcher Form haben?

27.08.2010 12:35

7 Jerry02

also so sieht ein beispielscript aus von dem Kuchendiagramm:

<html>
  <head>
   <title> Example Chart </title>
   <script language="javascript" src="http://www.google.com/jsapi"></script>
   </head>
   <body>

   <div id="chart"></div>

   <script type="text/javascript">
      var queryString = '';
      var dataUrl = '';

      function onLoadCallback() {
        if (dataUrl.length > 0) {
          var query = new google.visualization.Query(dataUrl);
          query.setQuery(queryString);
          query.send(handleQueryResponse);
        } else {
          var dataTable = new google.visualization.DataTable();
          dataTable.addRows(4);

          dataTable.addColumn('number');
          dataTable.setValue(0, 0, 32.78688524590164);
          dataTable.setValue(1, 0, 50.81967213114754);
          dataTable.setValue(2, 0, 100);
          dataTable.setValue(3, 0, 42.622950819672134);

          draw(dataTable);
        }
      }

      function draw(dataTable) {
        var vis = new google.visualization.ImageChart(document.getElementById('chart'));
        var options = {
          chs: '300x225',
          cht: 'p',
          chco: 'FF9900',
         chd: 's:Uf9a',
          chdl: '30%C2%B0|40%C2%B0|50%C2%B0|60%C2%B0',
          chl: '|||'
        };
        vis.draw(dataTable, options);
      }

      function handleQueryResponse(response) {
        if (response.isError()) {
          alert('Error in query: ' + response.getMessage() + ' ' + response.getDetailedMessage());
          return;
        }
        draw(response.getDataTable());
      }

      google.load("visualization", "1", {packages:["imagechart"]});
      google.setOnLoadCallback(onLoadCallback);

    </script>
  </body>
</html>

die markierte Zeile chd ist dann das wo die werte reinkommen sollen! bzw. dort sind ja schon werte drin aber man kann auch normale Werte dahinter schreiben wie man hier sehen kann: http://code.google.com/intl/de-DE/apis/chart/docs/data_formats.html
nur wie füge ich jetzt die werte aus meinem array dort rein?

27.08.2010 12:42

8 Jörg Kruse

The data must be provided as an array of positive numbers. Any value provided that is not a positive number is encoded as a missing value by using the underscore character (_).

D.h. du benötigst ein eindimensionales Array aus Ganzzahlen.

Ganz unten ist auch ein Beispiel gegeben:

var valueArray = new Array(0,1,4,4,6,11,14,17,23,28,33,36,43,59,65);

Das solltest du in etwa so umsetzen können:

var valueArray = new Array();
for (i = 0; i < Anzahl; i++) {
    valueArray[] = document.getElementById("Tabelle2").childNodes[i].childNodes[5].firstChild.innerHTML;
}

27.08.2010 13:01

9 Jerry02

und das array füge ich dann nur bei data ein, oder muss ich dieses beispielscript mit meinen daten angepasst vor dem eigendlichen diagramm machen?

27.08.2010 13:36

10 Jerry02

hm...für die zeile zeigt mir firebug syntax error an:

valueArray[] = document.getElementById("Tabelle2").childNodes[i].childNodes[5].firstChild.innerHTML;

so sieht jetzt mein code aus um das array und die summe festzulegen:

function Diagramm ()
		{
			var Summe = 0;
			var Anzahl = document.getElementById("Tabelle2").childNodes.length;
			Unsortiert = new Array();
        for (i = 0; i < Anzahl; i++) {
            Unsortiert[i] = new Array();
            Unsortiert[i]['Inhalt'] = document.getElementById("Tabelle2").childNodes[i].childNodes[1].firstChild.innerHTML;
            Unsortiert[i]['Wert'] = document.getElementById("Tabelle2").childNodes[i].childNodes[5].firstChild.innerHTML; 
			Summe += parseInt(Unsortiert[i]['Wert']);
			var valueArray = new Array();
			valueArray[] = document.getElementById("Tabelle2").childNodes[i].childNodes[5].firstChild.innerHTML;
			}

stimmt das so?

Edit: ist denn der simle oder der extended encode besser?

27.08.2010 13:49 | geändert: 27.08.2010 13:53