chartcartesian — u_pbt_chartcartesian #
← Komponentenreferenz · Inhalt des Handbuchs
Kartesisches Diagramm: Säulen, Balken, Linien, Flächen und Punktwolken, auf einer Kategorienachse und einer oder zwei Wertachsen. Der Typ wird je Reihe gesetzt.
▶ Live ansehen — Demoanwendung, Kachel Cartesian chart : die Vorschau, der erzeugende Code und diese Seite nebeneinander.
Kurz gefasst #
| Userobject | u_pbt_chartcartesian |
| Elementklasse | n_pbt_chartcartesian_series (of_item(key)) · n_pbt_chartcartesian_axis (of_axis(axis)) |
| Dient zu | Werte entlang einer Achse vergleichen — Monate, Produkte, Regionen |
| Prinzip | Sie setzen die Kategorien, dann die Reihen; Skalen, Gitter und Animation sind unsere Sache |
Schnellstart #
// Local variables
string ls_months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun"}
double ld_sales[] = {420, 510, 480, 620, 700, 660}
// The categories FIRST : they fix how many values a series carries
uo_chart.of_set_categories(/*labels*/ ls_months)
uo_chart.of_add_series(/*key*/ "sales", /*label*/ "Revenue", /*type*/ u_pbt_chartcartesian.TYPE_BAR, /*values*/ ld_sales)
Der Typ gehört zur REIHE, nicht zur Komponente #
Das ist die Entscheidung, aus der alles Übrige folgt. Eine Komponente je Typ — eine für Balken, eine für Linien — kann nie eine Kombination erzeugen: Balken mit einer Ziellinie darüber, auf einer zweiten Achse. Und genau das ist die meistgefragte Form auf einem Dashboard.
Hier gibt es eine Komponente, und jede Reihe trägt ihr is_type (TYPE_BAR, TYPE_LINE, TYPE_AREA, TYPE_SCATTER). Den Typ einer Reihe zu ändern lässt die anderen unberührt.
ib_secondary legt eine Reihe auf die zweite Wertachse. Das lässt eine Auftragszahl und einen Umsatz zusammen leben: ohne sie ist eine der beiden eine flache Linie an der Achse.
of_set_categorieskommt vor den Reihen: Ihre Anzahl legt fest, wie viele Werte jede Reihe tragen muss.
// Local variables
double ld_target[] = {400, 500, 550, 600, 680, 720}
// Bars and a line in the SAME chart : the type belongs to the series
uo_chart.of_add_series(/*key*/ "target", /*label*/ "Target", /*type*/ u_pbt_chartcartesian.TYPE_LINE, /*values*/ ld_target)
// And its own scale, when the two do not share a unit
uo_chart.of_item(/*key*/ "target").ib_secondary = true
Eigenschaften #
| Eigenschaft | Typ | Standard | Rolle |
|---|---|---|---|
is_title | string | "" | Diagrammtitel, oben angezeigt |
ib_show_legend | boolean | true | Zeigt die Legende. Ein Klick auf einen Eintrag blendet seine Reihe aus — der billigste Weg, zwei von fünf Reihen zu vergleichen |
is_legend_location | string | bottom | Wohin die Legende gehört (Konstanten LEGEND_*): über oder unter die Zeichnung oder daneben — START/END setzen sie als Spalte an eine Seite, und die Zeichnung tritt den Platz ab. START/END sind logisch: Sie folgen der Leserichtung. Eine unbekannte Position ist unten und wird so zurückgelesen |
ib_show_grid | boolean | true | Die Linien hinter der Zeichnung, bei jedem runden Wert. Ohne sie bleibt nur die Form lesbar, nie ein Wert |
ib_value_tooltip | boolean | true | Das Wertefeld: Fährt die Maus über eine Kategorie, erscheinen alle Reihen und ihr dortiger Wert auf einmal, und ein Fadenkreuz markiert die Spalte. Es ist nicht is_tooltip (geerbt), der Tooltip der ganzen Komponente — dieses folgt dem Zeiger und sagt, woraus das Diagramm besteht. Jede Reihe schreibt ihre Zeile mit ihrem eigenen is_label_format; ein fehlender Wert hat keine Zeile |
is_orientation | string | vertical | Säulen oder Balken (Konstanten ORIENTATION_*). Dreht den ganzen Bezugsrahmen, Linien und Flächen eingeschlossen |
ib_stacked | boolean | false | Stapelt die Balkenreihen, statt sie nebeneinander zu setzen. Linien und Flächen werden nie gestapelt: Sie nennen ein Niveau |
is_stack_mode | string | value | Summe oder Anteil (Konstanten STACK_*). Bei percentage wird jeder Stapel auf 100 gebracht: Die Achse liest dann Anteile, keine Summen — bis -100, wenn Anteile negativ sind. Ohne Stapelung ohne Bedeutung |
ib_enabled | boolean | true | Ausgegraut: die Komponente zeigt weiter, was sie zeigt — ein Diagramm ohne Daten ist etwas anderes als ein Diagramm, das die Anwendung abgeschaltet hat — antwortet aber nicht mehr: kein Klick, keine Taste, kein Legendeneintrag, und sie verlässt die Tab-Reihenfolge. Standard true |
ib_animated | boolean | true | Das Diagramm kommt animiert an: Die Formen wachsen, die Bänder blenden ein. Wird die Ankunft bei jeder Auffrischung eines Dashboards erneut abgespielt, besser abschalten — eine Ankunft, die alle fünf Sekunden neu beginnt, endet nie. Ein auf weniger Bewegung eingestellter Arbeitsplatz animiert nie |
ii_anim_duration | integer | 450 | Dauer dieser Ankunft, in Millisekunden (0 bis 5000) |
is_anim_easing | string | ease-out | Kurve des Auftritts (EASING_*-Konstanten): linear, ease-out, back-out schießt über und kehrt zurück, bounce-out springt, elastic-out schnappt. Sie gibt der Animation ihren Charakter |
ii_anim_delay | integer | 0 | Versatz zwischen zwei Reihen bei der Ankunft, in Millisekunden (0 bis 1000). Sie kommen dann nacheinander statt alle zugleich, was dem Diagramm seine Leserichtung gibt. 0 = alle gleichzeitig |
is_theme_style | string | "" | Visueller Stil der Komponente (Konstanten THEME_STYLE_*); leer = der der Anwendung, bei jeder Änderung übernommen |
is_theme_mode | string | "" | Helle oder dunkle Variante (Konstanten THEME_MODE_*); leer = die der Anwendung, bei jeder Änderung übernommen |
il_theme_accent | long | -1 | Akzentfarbe dieser Komponente (-1 = Akzent des Themas) |
is_tooltip | string | "" | Einfacher Tooltip beim Überfahren der Komponente |
is_super_tooltip_title | string | "" | Titel des erweiterten Tooltips (hat Vorrang vor is_tooltip) |
is_super_tooltip_text | string | "" | Text des erweiterten Tooltips (Rich-Markup erlaubt) |
is_super_tooltip_image | string | "" | Bild des erweiterten Tooltips |
Methoden #
| Methode | Rolle | |
|---|---|---|
of_set_categories ( string as_labels[] ) | Die Beschriftungen der Kategorienachse. Vor den Reihen aufrufen. Liefert 0 nach dem Anwenden, -2, wenn die Komponente nicht erstellt ist | |
of_set_value_labels ( string as_labels[] ) | Beschriftungen auf der Werteachse. Leer — der Normalfall — trägt diese Achse Zahlen. Gefüllt trägt sie Bänder wie die Kategorieachse: der zweifach kategoriale Rahmen einer Wärmekarte. Liefert 0 nach dem Anwenden, -2, wenn die Komponente nicht erstellt ist | |
of_get_value_labels ( ref string as_labels[] ) | Füllt as_labels[] mit dem, was die Werteachse jetzt trägt, und liefert die Anzahl. Null = sie trägt Zahlen | |
of_add_heat_series ( string as_key, string as_label, long al_x[], long al_y[], double ad_weight[] ) | Eine Wärmekarte: eine Zelle je Paar (Kategorie, Wertebeschriftung), nach ihrem Gewicht eingefärbt. al_x ist der Rang der Kategorie, al_y der Rang der Beschriftung, beide ab 1 — die Ränge eines PowerScript-Feldes, die eine Doppelschleife ohne Rechnerei schreibt. Beide Listen zuerst setzen. Liefert 0 nach dem Hinzufügen, -5, wenn der Schlüssel leer ist, / oder ` | enthält oder schon vergeben ist, -2`, wenn die Komponente nicht erstellt ist |
of_add_ohlc_series ( string as_key, string as_label, double ad_open[], double ad_high[], double ad_low[], double ad_close[] ) | Eine OHLC-Reihe: die Spanne von tief bis hoch, links ein Strich für die Eröffnung, rechts einer für den Schluss. Vier Zahlen je Punkt, und die Achse liest sich am Hoch und am Tief — die beiden anderen liegen bauartbedingt dazwischen. Die vier Felder werden auf das kürzeste gekürzt. Liefert 0 nach dem Hinzufügen, -5, wenn der Schlüssel leer ist, / oder ` | enthält oder schon vergeben ist, -2`, wenn die Komponente nicht erstellt ist |
of_add_candle_series ( string as_key, string as_label, double ad_open[], double ad_high[], double ad_low[], double ad_close[] ) | Dieselben vier Zahlen als Kerzen: ein Docht von tief bis hoch und ein gefüllter Körper zwischen Eröffnung und Schluss. Ein Doji — Eröffnung gleich Schluss — behält ein Pixel Körper und bleibt so eine auffindbare Linie. Liefert 0 nach dem Hinzufügen, -5, wenn der Schlüssel leer ist, / oder ` | enthält oder schon vergeben ist, -2`, wenn die Komponente nicht erstellt ist |
of_set_series_ohlc ( string as_key, double ad_open[], double ad_high[], double ad_low[], double ad_close[] ) | Neue Kurse für eine schon vorhandene Finanzreihe. Was of_set_series_values für eine Wertereihe ist. Liefert 0 nach dem Anwenden, -5, wenn keine Reihe diesen Schlüssel trägt oder sie keine Finanzreihe ist, -2, wenn die Komponente nicht erstellt ist | |
of_get_series_ohlc ( string as_key, ref double ad_open[], ref double ad_high[], ref double ad_low[], ref double ad_close[] ) | Füllt die vier Felder mit dem, was die Reihe jetzt trägt, und liefert die Punktzahl. Eine nicht finanzielle Reihe antwortet 0 | |
of_add_series ( string as_key, string as_label, string as_type, double ad_values[] { , long al_color } ) | Fügt eine Reihe mit ihrem Typ hinzu — TYPE_BAR, TYPE_LINE, TYPE_AREA, TYPE_SCATTER oder TYPE_STEPLINE; die Überladung nimmt auch ihre Farbe (RGB()), sonst wählt die Palette. Ein NULL-Wert (SetNull) ist eine Lücke: Dort wird nichts gezeichnet, beschriftet oder angeklickt, und eine Linie wird unterbrochen. Ein schon vergebener Schlüssel wird abgelehnt, nie ersetzt: of_set_series_values und der Griff of_item ändern eine bestehende Reihe. Liefert 0 nach dem Hinzufügen, -5, wenn der Typ keiner dieser fünf ist (eine Wärmekarte und die Finanzreihen haben ihre eigene Methode) oder der Schlüssel leer ist, / oder ` | enthält oder schon vergeben ist, -2`, wenn die Komponente nicht erstellt ist |
of_set_series_values ( string as_key, double ad_values[] ) | Neue Werte für eine bereits gezeichnete Reihe, alles andere bleibt. Der Aufruf eines lebenden Dashboards: die Reihe behält ihre Identität, die Formen gleiten, statt zu springen. Ein NULL-Wert ist eine Lücke. Liefert 0 nach dem Anwenden, -5, wenn keine Reihe diesen Schlüssel trägt oder sie Punkte oder Kurse trägt (of_set_series_points, of_set_series_ohlc ersetzen diese), -2, wenn die Komponente nicht erstellt ist | |
of_append_values ( string as_key, double ad_values[], long al_max_points ) | Ein Live-Diagramm: hängt neue Werte ans Ende einer Reihe und entfernt die ältesten, sobald sie mehr als al_max_points trägt (0 = keine Grenze). Nur die neuen Werte reisen — die Reihe wird nicht bei jedem Takt erneut gesendet. Zusammen mit of_append_categories verwenden. Liefert 0 nach dem Anwenden, -5, wenn keine Reihe diesen Schlüssel trägt oder sie Punkte oder Kurse trägt, -2, wenn die Komponente nicht erstellt ist | |
of_append_categories ( string as_labels[], long al_max_count ) | Neue Kategorien am Ende der Achse, die ältesten über al_max_count hinaus entfernt (0 = keine Grenze): Die Beschriftungen eines Live-Diagramms gleiten mit seinen Werten. Liefert 0 nach dem Anwenden, -2, wenn die Komponente nicht erstellt ist | |
of_add_point_series ( string as_key, string as_label, double ad_x[], double ad_y[] { , double ad_weight[] } ) | Eine Reihe, die auf beiden Achsen nach Wert platziert wird: x sagt wo entlang der Kategorieachse, y wie hoch. Diese Achse ist dann keine Kategorieachse mehr — sie wird eine zweite Werteachse mit eigenen Teilungen. Eine Überladung nimmt ein Gewicht je Punkt, das die Blase bemisst. Liefert 0 nach dem Hinzufügen, -5, wenn der Schlüssel leer ist, / oder ` | enthält oder schon vergeben ist, -2`, wenn die Komponente nicht erstellt ist |
of_set_series_points ( string as_key, double ad_x[], double ad_y[], double ad_weight[] ) | Neue Punkte für eine Reihe, die schon welche trägt. Was of_set_series_values für eine Wertereihe ist. Liefert 0 nach dem Anwenden, -5, wenn keine Reihe diesen Schlüssel trägt oder sie Werte oder Kurse trägt, -2, wenn die Komponente nicht erstellt ist | |
of_get_series_points ( string as_key, ref double ad_x[], ref double ad_y[], ref double ad_weight[] ) | Füllt die drei Felder mit dem, was die Reihe jetzt trägt, und liefert die Punktzahl. Eine Wertereihe antwortet nichts in ad_x: Sie hat kein eigenes x | |
of_get_series_values ( string as_key, ref double ad_values[] ) | Füllt ad_values[] mit dem, was die Reihe jetzt trägt, und liefert die Anzahl. Live gelesen : es fragt das Diagramm, nicht die letzte Sendung | |
of_remove_series ( string as_key ) | Entfernt eine Reihe; die anderen behalten Farbe und Sichtbarkeit. Ihr Griff (of_item) wird mit ihr zerstört: ein späteres of_item auf denselben Schlüssel erzeugt einen neuen. Liefert 0 nach dem Entfernen, -5, wenn keine Reihe diesen Schlüssel trägt, -2, wenn die Komponente nicht erstellt ist | |
of_clear ( ) | Leert das Diagramm — Reihen und Kategorien; die Reihengriffe gehen mit ihnen. Die Achsen behalten ihre Einstellungen und ihre Abschnitte. Liefert 0 nach dem Leeren, -2, wenn die Komponente nicht erstellt ist | |
of_set_value_format ( integer ai_decimals, string as_prefix, string as_suffix, boolean ab_thousands ) | Zahlenformat des ganzen Diagramms — Achsen, Datenbeschriftungen und Wertepanel: Dezimalstellen, Präfix, Suffix, Tausendertrennzeichen. Dezimal- und Tausendertrennzeichen sind die der Anzeigesprache. Löscht auch das eigene Format jeder Achse. Liefert 0 nach dem Anwenden, -2, wenn die Komponente nicht erstellt ist | |
of_set_value_format ( string as_axis, integer ai_decimals, string as_prefix, string as_suffix, boolean ab_thousands ) | Das Format einer Achse (AXIS_VALUE, AXIS_VALUE2 oder AXIS_CATEGORY, wenn sie Zahlen trägt): ihre Teilungen sowie die Beschriftungen und das Panel der darauf gezeichneten Reihen — ein Betrag auf der einen Seite, eine Bestellanzahl auf der anderen. Liefert 0 nach dem Anwenden, -5, wenn die Achse keine der AXIS_* ist, -2, wenn die Komponente nicht erstellt ist | |
of_clear_value_format ( ) | Zurück zum Standardformat. Liefert 0 nach dem Anwenden, -2, wenn die Komponente nicht erstellt ist | |
of_item ( string as_key ) | Liefert einen Reihengriff, um sie später zu ändern | |
of_axis ( string as_axis ) | Liefert einen Achsengriff (AXIS_CATEGORY, AXIS_VALUE, AXIS_VALUE2), um sie danach einzustellen. Jede andere Rolle liefert keinen Griff (IsValid() ist falsch) | |
of_add_axis_section ( string as_axis, string as_key, double ad_from, double ad_to, long al_color ) | Ein Band quer über die Zeichnung, hinter den Daten: „unter 200 ist schlecht“. Unter den Formen gezeichnet, macht es ihnen nie Konkurrenz. Auf der Kategorienachse sind ad_from und ad_to ab 1 gezählte Positionen (2 bis 3 deckt die zweite und dritte Kategorie ab). Liefert 0 nach dem Hinzufügen, -5, wenn die Achse keine der AXIS_* ist oder der Schlüssel leer ist, / oder ` | enthält oder auf dieser Achse schon vergeben ist, -2`, wenn die Komponente nicht erstellt ist |
of_add_axis_threshold ( string as_axis, string as_key, double ad_at, long al_color, integer ai_thickness ) | Eine Linie quer über die Zeichnung bei einem Wert — ein Ziel, eine Grenze. Dasselbe Register wie die Bänder, aber sichtbar gezeichnet. Liefert 0 nach dem Hinzufügen, -5, wenn die Achse keine der AXIS_* ist oder der Schlüssel leer ist, / oder ` | enthält oder auf dieser Achse schon vergeben ist, -2`, wenn die Komponente nicht erstellt ist |
of_clear_axis_sections ( string as_axis ) | Entfernt alle Bänder und alle Schwellen einer Achse. Liefert 0 nach dem Leeren, -5, wenn die Achse keine der AXIS_* ist, -2, wenn die Komponente nicht erstellt ist | |
of_reset ( ) | Leert das Diagramm — Reihen- und Achsengriffe inbegriffen — und setzt alle Eigenschaften auf ihren Ausgangswert zurück. Liefert 0 danach, -2, wenn die Komponente nicht erstellt ist |
Ohne Schlüssel (Demomodus) zeichnet das Diagramm nur seine ersten 3 Reihen, Legende inbegriffen. Die übrigen bleiben im Modell —
of_count,of_get_series_valuesund ihre Griffe sehen sie — und der gesetzte Schlüssel zeigt sie, ohne dass Sie etwas erneut senden müssen.
Ereignisse #
| Ereignis | Ausgelöst wenn |
|---|---|
ue_point_clicked (string as_key, long al_index, double ad_value) | Ein Balken, ein Punkt, eine Zelle oder ein Kurs wurde angeklickt — oder mit Eingabe bestätigt: der Schlüssel der Reihe, die Position des Punktes in der Reihe, ab 1 gezählt, und sein Wert — der Wert des Punktes, welche Form die Reihe auch hat: das y einer Punktwolke, das Gewicht einer Wärmezelle, der Schlusskurs eines Kurses. Auf der Tastatur durchlaufen Links/Rechts die Kategorien, Oben/Unten wählen die Reihe, die das Panel unterstreicht; eine gewählte Punktreihe oder Wärmekarte wird Punkt für Punkt durchlaufen. Eine Lücke hat nichts anzuklicken |
ue_series_toggled (string as_key, boolean ab_visible) | Der Benutzer hat eine Reihe per Klick in der Legende aus- oder wieder eingeblendet. Was das Diagramm zeigt, ist dann nicht mehr, was die Anwendung gesendet hat. ib_visible zu setzen ist ein Wert, wie ein Häkchen in einem Kontrollkästchen: Dieses Ereignis meldet die Geste des Benutzers |
Die Animation ist ein Weg hinein, keine Berechnung: Die endgültige Geometrie steht sofort, und nur die Ankunft wird gespielt. Ein nie angezeigtes Diagramm — außerhalb des Bildschirms geboren, auf einem Reiter, den niemand öffnet — zeigt daher stillschweigend die richtigen Balken.
Elementeigenschaften #
| Eigenschaft | Typ | Standard | Rolle |
|---|---|---|---|
is_label | string | "" | Der Name der Reihe, wie ihn die Legende zeigt |
is_type | string | bar | bar · line · area · scatter · stepline (Konstanten TYPE_*). Ändert die Zeichnung dieser Reihe allein — das macht ein kombiniertes Diagramm aus. Nur ein Typ derselben Familie wird angenommen: eine Wertereihe unter bar, line, area, scatter und stepline, eine Finanzreihe zwischen ohlc und candle; jeder andere wird ignoriert, und is_type liest den behaltenen Typ zurück |
il_color | long | -1 | Farbe der Reihe (RGB()). -1, solange keine gesetzt ist: die Palette wählt |
ib_visible | boolean | true | false blendet eine Reihe aus, ohne sie zu entfernen — die Legende behält den Weg zurück. Wie ein Kontrollkästchen ist es ein gesetzter Wert: ue_series_toggled meldet den Klick des Benutzers in der Legende |
ib_secondary | boolean | false | Zeichnet die Reihe auf der zweiten Achse. So leben eine Anzahl und ein Betrag im selben Diagramm |
ib_data_labels | boolean | false | Schreibt den Wert jedes Punktes daneben. Standardmäßig aus: Bei fünfzig Punkten verdecken die Beschriftungen die Zeichnung, die sie erklären |
is_label_format | string | "" | Was jede Beschriftung und jede Zeile des Panels sagt: #y# der Wert, #x# die Kategorie (das x einer Punktreihe, die Spalte einer Wärmezelle), #v# die Zeile einer Wärmezelle, #label# der Name der Reihe, #open# #high# #low# #close# die Kurse; der Rest wird so geschrieben, wie er steht — "$#y#K". Leer = der Wert allein. Eine Beschriftung in einem gestapelten Balken nimmt Schwarz oder Weiß, je nachdem, was ihr Balken trägt |
id_smoothness | double | 1 | Nur Linien und Flächen: wie rund die Linie gezeichnet wird, 0 = gerade Segmente, 1 = voll gekrümmt, so wie LiveCharts sie zeichnet. Eine Treppenlinie ignoriert es — sie sagt, dass der Pegel bis zur nächsten Kategorie GEHALTEN hat, eine Kurve würde sagen, er sei gedriftet. Eine Kurve kann über ihre Punkte hinausgehen; sie wird am Rahmen der Zeichnung abgeschnitten und malt nie über die Achsenbeschriftungen |
ib_fill | boolean | true | Linien und Flächen: die Lasur unter dem Strich, bis zur Achse, im Farbton der Reihe. Das Entfernen ist der bewusste Akt — für eine Linie, die über etwas anderem liegt (Säulen, farbige Achsenbänder), das die Lasur verdecken würde |
il_fill_color | long | -1 | Die Farbe dieser Lasur. -1 = die der Linie selbst |
is_marker | string | "circle" | Linien, Stufenlinien und Punktwolken: die FORM des Markers auf jedem Punkt (Konstanten MARKER_*: none, circle, square, triangle, diamond). Keine Dekoration — zwei sich kreuzende Linien, in Grau gedruckt, unterscheiden sich durch ihre Marker und durch nichts sonst |
ii_thickness | integer | 2 | Linien und Flächen: die Strichstärke in Pixeln |
ii_point_count | integer | 0 | Wie viele Punkte diese Reihe trägt — Werte oder (x, y)-Paare (nur lesen) |
il_cold_color | long | -1 | Nur Wärmekarten: das KALTE Ende der Skala, der leichteste Wert. -1 = die eigene Skala der Komponente, ein einziges Blau, von sehr blass bis kräftig |
il_mid_color | long | -1 | Die MITTLERE Stufe. Drei Stufen und nicht zwei: Von einem Ende zum anderen zu interpolieren verwäscht die Mitte der Skala, wo die meisten Werte liegen. -1 = das mittlere Blau der Komponente |
il_hot_color | long | -1 | Das HEISSE Ende, der schwerste Wert. Die Legende zeigt diese Farbe. -1 = das kräftige Blau der Komponente |
il_up_color | long | -1 | Nur Finanzreihen: die Farbe eines Punktes, der über seiner Eröffnung schließt. -1 = das Grün der Komponente |
il_down_color | long | -1 | Und die eines Punktes, der darunter schließt. Zwei Farben, weil die Richtung das ist, wofür man ein solches Diagramm liest — eine einzige würde sie verbergen. -1 = das Rot der Komponente |
Achseneigenschaften #
| Eigenschaft | Typ | Standard | Rolle |
|---|---|---|---|
is_title | string | "" | Titel entlang der Achse. Leer = kein Titel und kein reservierter Platz dafür |
id_min | double | NULL | Vorgegebene Untergrenze. Sie gewinnt gegen die Daten und wird nicht gerundet: Wer 0 schreibt, meint 0. NULL (SetNull) gibt nichts vor: Die Achse folgt wieder ihren Daten, und eine freie Grenze liest sich NULL (IsNull), nie 0. Frei nimmt eine Wertachse die Null nur auf, wenn ein Balken oder eine Fläche darauf steht: Kurse und Linien werden auf ihrer eigenen Spanne gelesen |
id_max | double | NULL | Vorgegebene Obergrenze, gleiche Regel. Was darüber hinausgeht, wird am Rand der Zeichnung abgeschnitten |
id_step | double | 0 | Abstand zwischen zwei Gitterlinien, in Werten. 0 = ein runder Schritt aus dem Bereich |
ii_label_rotation | integer | 0 | Drehung der Beschriftungen dieser Achse, in Grad (-90 bis 90) — Kategorienamen oder Wertteilungen. Zwölf Monatsnamen passen nur schräg unter ein Diagramm; passen sie immer noch nicht, schreibt das Diagramm einen von N, den ersten und den letzten immer |
ib_separator | boolean | true | Ihre Gitterlinien. Eine Kategorieachse braucht sie selten, eine Werteachse fast immer |
ii_section_count | integer | 0 | Wie viele Bänder und Schwellen diese Achse trägt (nur lesen) |
ib_logarithmic | boolean | false | Nur Wertachsen: eine logarithmische Skala, in Dekaden geteilt (1, 10, 100…), jede Dekade gleich hoch — für Zahlen über mehrere Größenordnungen. Null und negative Werte haben darauf keinen Platz und werden nicht gezeichnet |
Beispiele #
Die Animation zum Bildschirm passend einstellen #
// A dashboard that refreshes every few seconds : no arrival animation
uo_chart.ib_animated = false
// Elsewhere, a slower arrival that is actually seen
uo_chart.ii_anim_duration = 1200
Die Zeilen hinter einem Punkt öffnen #
// Event ue_point_clicked of uo_chart : the series key, the position of the
// point (from 1) and its value - enough to open the rows behind it
string ls_month
// On a series of values, the position IS the rank of the category
ls_month = is_months[al_index]
wf_open_orders(/*series*/ as_key, /*month*/ ls_month, /*amount*/ ad_value)
Ein lebendiges Dashboard #
// Timer event of the window : new values for the same series, so the bars
// SLIDE to their new height instead of replaying their arrival
double ld_sales[]
// Read the figures, then hand them to the series already on the chart
ld_sales = wf_read_sales()
uo_chart.of_set_series_values(/*key*/ "sales", /*values*/ ld_sales)
Ein gleitendes Live-Diagramm #
// Timer event of the window, every second : ONE new reading. Only that value
// travels ; past sixty, the oldest leaves on both the axis and the series
// Local variables
string ls_time[]
double ld_cpu[]
// The time of the reading on the axis, the reading itself in the series
ls_time[1] = String(Now(), "hh:mm:ss")
ld_cpu[1] = wf_read_cpu()
uo_chart.of_append_categories(/*labels*/ ls_time, /*max_count*/ 60)
uo_chart.of_append_values(/*key*/ "cpu", /*values*/ ld_cpu, /*max_points*/ 60)
Ein fehlender Messwert und das Diagramm als Bild #
// March was not measured : a NULL value is a gap, the line is cut there
// Local variables
double ld_temp[] = {18.5, 19.2, 0, 21.4}
// The third reading is missing : NULL, not zero
SetNull(ld_temp[3])
uo_chart.of_add_series(/*key*/ "temp", /*label*/ "Temperature", /*type*/ u_pbt_chartcartesian.TYPE_LINE, /*values*/ ld_temp)
// The chart as it is on screen, title and legend included, to a PNG file
uo_chart.of_save_as_png(/*path*/ "C:\Reports\temperature.png")
Ein Band und ein Ziel auf der Wertachse #
// A pale red band below 200 and a target line at 600, behind the bars
uo_chart.of_add_axis_section(/*axis*/ u_pbt_chartcartesian.AXIS_VALUE, /*key*/ "low", /*from*/ 0, /*to*/ 200, /*color*/ RGB(/*red*/ 255, /*green*/ 220, /*blue*/ 220))
uo_chart.of_add_axis_threshold(/*axis*/ u_pbt_chartcartesian.AXIS_VALUE, /*key*/ "target", /*at*/ 600, /*color*/ RGB(/*red*/ 200, /*green*/ 70, /*blue*/ 70), /*thickness*/ 2)
// The value axis says what it measures
uo_chart.of_axis(/*axis*/ u_pbt_chartcartesian.AXIS_VALUE).is_title = "Sales ($K)"
Bewährte Praxis #
- Setzen Sie die Kategorien vor den Reihen. Ihre Anzahl sagt, was eine Reihe enthalten muss; umgekehrt geht es nicht.
- Eine zweite Achse wird begründet, nicht erlitten. Zwei Skalen in einer Zeichnung täuschen das Auge: Holen Sie sie nur hervor, wenn die Einheiten wirklich verschieden sind.
- Schalten Sie die Animation auf einem sich auffrischenden Dashboard ab. Eine Ankunft, die alle fünf Sekunden neu beginnt, endet nie und ermüdet, statt zu helfen.
- Balken beginnen bei null, und die Komponente hält sich daran: Die Null kommt in die Achse, sobald ein Balken oder eine Fläche darauf steht. Ein abgeschnittenes Balkendiagramm übertreibt jeden Abstand. Linien, Punktwolken und Kurse werden auf ihrer eigenen Spanne gelesen.
- Das Diagramm behält seine mathematische Richtung in einer Rechts-nach-links-Anwendung: Kategorien von links nach rechts, Wertachse links. Nur die Legende
START/ENDfolgt der Leserichtung. - Stapeln, um eine Summe zu lesen; nebeneinander, um zu vergleichen. Das sind nicht zwei Stile, das sind zwei verschiedene Fragen.
ue_point_clickedliefert den Rang: Nutzen Sie ihn, um genau die Liste hinter diesem Punkt zu öffnen, nicht die Suchmaske.
Vom gemeinsamen Sockel geerbt #
Diese Mitglieder gibt es bei jeder visuellen Komponente — sie sind nicht dieser eigen. Sie werden einmal in den übergreifenden Kapiteln beschrieben; diese Tabelle sagt nur, wo man sie liest.
| Mitglieder | Rolle | Beschrieben in |
|---|---|---|
of_count · of_keys_at · of_has | Durchlaufen, was die Komponente enthält | 3.2 Die Items |
of_reset | Die Komponente zurücksetzen | 3.6 Eine Komponente zurücksetzen: of_reset() |
of_register_shortcut · of_clear_shortcuts | Tastenkürzel der Komponente | 3.5 Tastenkombinationen |
of_is_created · of_is_ready · of_get_last_error | Ob sie entstanden ist, ob sie bereit ist, was fehlschlug | 3.7 Diagnose |
of_save_as_png · of_save_as_jpg | Die Darstellung als Bild exportieren | 3.8 Die Darstellung als Bild exportieren |
of_set_redraw | Änderungen zu einem einzigen Neuzeichnen bündeln | 3.10 Best Practices |
of_preload_icons | Symbole ohne Verzögerung | Sofortige Anzeige: of_icon |
of_set_translation | Eine Beschriftung der Komponente übersetzen | 5.2 Eine Beschriftung anpassen: of_set_translation |
of_focus_webview | Der Komponente den Fokus geben | 6.4 Tastatur und Fokus |
of_print · of_print_to_pdf | Drucken oder ein PDF schreiben | 6.9 Drucken |
of_set_property · of_get_property · of_component_name | Eine Eigenschaft über ihren Namen steuern | 3.1 Die Eigenschaften-Engine |
Zwei Helfer werden nicht geerbt: of_icon und of_escape_markup liegen auf n_pbt_utils. Deklarieren Sie eines — n_pbt_utils lnv_utils, nichts zu erzeugen — und rufen Sie sie darauf auf.