2009-04-02 3 views
0

Ich habe ein Diagramm mit Birt erstellt und ich möchte ein Etikett hinzufügen, um die 4 Bereiche durch die 2 roten Markierungen (siehe Bild unten), eine Bezeichnung in jedem Quadranten (mittig wenn möglich) zu spezifizieren.Wie wird ein Overlay-Etikett in einem Diagramm angezeigt?

Ich suche nach einer Lösung, um dies zu tun, direkt mit Birt-Chart-Editor oder mit einem Javascript (wie ich für die roten Markierungen getan habe).

alt text

+0

Könnten Sie mich bitte spezifischer? Möchten Sie eine Beschriftung in jedem Quadranten hinzufügen, an der Kreuzung der Markierungen, unter/über der X-Achsenmarkierung, auf jeder Seite der Y-Achsenmarkierung oder vollständig außerhalb der Seite/unten/oben auf dem Diagramm? – Tom

+0

Entschuldigung. Ich möchte ein Label in jedem Quadranten hinzufügen (wenn möglich zentriert) –

Antwort

1

Um dynamisch in jedem Quadranten des Graphen eine Art Etikett zu zentrieren, werden Sie eine Möglichkeit zur Berechnung der Koordinaten haben müssen. Natürlich bin ich mit Birt nicht wirklich vertraut und ich gehe davon aus, dass die roten Marker des Graphen variieren werden.

Wie dem auch sei, vorausgesetzt, dass Sie die Koordinaten erhalten können, können Sie eine Funktion schreiben, die dynamisch das Label auf der Grundlage einer Reihe von Parametern erzeugen würde:

function generateLabel(sContent, iXoffset, iYoffset) { 

    var eLabel = document.createElement('span'); 
    eLabel.appendChild(document.createTextNode(sContent)); 

    var eDivision = document.createElement('div'); 
    eDivision.appendChild(eLabel); 

    eDivision.style.left = iXoffset + 'px'; 
    eDivision.style.top = iYoffset + 'px'; 
    // include other styles here... 

    return eDivision; 

} 

und dann von dort aus können Sie rufen Sie diese Funktion mit der Satz Etiketteninhalt und Offset-Koordinaten:

var eQuadrantOneLabel = generateLabel('Quadrant One', 10, 25); 
// and so on... 

Dann fügen nur das Element mit dem Behälter des Graphen (unter der Annahme, dass eine ist von id hat, sagen wir,):

var eGraphContainer = document.getElementById('graph'); 
eGraphContainer.appendChild(eQuadrantOneLabel); 
// and so on for each label... 
Verwandte Themen