2009-04-28 6 views
2

Ich habe ein dynamisch erstelltes Diagramm und ich muss eine horizontale und vertikale Achse in einem Skript hinzufügen. Ich kann das Diagramm nicht in MXML einfügen, da ich den Diagrammtyp dynamisch ändere und ein neues Diagramm lösche und erstelle. Daher hat die Variable, die ich zum Erstellen des Diagramms verwende, eine Instanz von chartBase, weder eine horizontaleAchse noch eine vertikaleAchse. Wie weise ich ihnen zu, wenn sie nicht existieren? Sollte ich einen anderen Typ verwenden? Die Graphen, die ich verwenden möchte, sind Linie, Bar und HLOC und/oder Candlestick.Flex: Wie fügt man einem Diagramm horizontale Achsen hinzu?

Antwort

1

Ich denke, Sie werden bessere Ergebnisse erzielen, indem Sie Ihr Diagramm als richtigen Typ instanziieren.

Zum Beispiel in einer Komponente I ein Skelett Linechart-Setup im mxml habe ...

<mx:LineChart id="lineChart" dataProvider="{chartData}" dataTipFunction="dataTipFunction" 
    width="100%" 
    height="100%" 
    showDataTips="true" 
    /> 

... aber man könnte es als eine Variable erstellen und in den Behälter hinzuzufügen. Dann gilt für die Achse ich die Art bestimmen, ich will, und erstellen und anwenden sie, hier ist einige Code, den ich für die horizontale Achse verwenden ...

// Setup new horizontal axis. 
switch (hAxisFieldsComboBox.selectedItem.dataType) 
{ 
    case "Date": 
     var hDtAxis:DateTimeAxis = new DateTimeAxis(); 
     hDtAxis.title = hAxisFieldsComboBox.selectedItem.label; 
     hDtAxis.dataUnits = "days"; 
     hDtAxis.dataInterval = 1; 
     hDtAxis.parseFunction = dateParser; 
     lineChart.horizontalAxis = hDtAxis; 
     break; 
    case "Time": 
     var hTAxis:DateTimeAxis = new DateTimeAxis(); 
     hTAxis.title = hAxisFieldsComboBox.selectedItem.label; 
     hTAxis.dataInterval = 1; 
     hTAxis.parseFunction = timeParser; 
     lineChart.horizontalAxis = hTAxis; 
     break; 
    case "Number": 
     var hLAxis:LinearAxis = new LinearAxis(); 
     hLAxis.title = hAxisFieldsComboBox.selectedItem.label; 
     hLAxis.interval = 1; 
     hLAxis.minimum = 0; 
     lineChart.horizontalAxis = hLAxis; 
     break; 
    default: 
     var hCatAxis:CategoryAxis = new CategoryAxis(); 
     hCatAxis.title = hAxisFieldsComboBox.selectedItem.label; 
     hCatAxis.dataProvider = schemaUtil.aggregateAndSortCasesAC(chartData, vAxisFieldsComboBox.selectedItem.data, [hAxisFieldsComboBox.selectedItem.data]); 
     hCatAxis.categoryField = hAxisFieldsComboBox.selectedItem.data; 
     lineChart.horizontalAxis = hCatAxis; 
} 

Hoffnung, das hilft.

Verwandte Themen