PBToolboxAI v4 ← Site

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 #

Userobjectu_pbt_chartcartesian
Elementklassen_pbt_chartcartesian_series (of_item(key)) · n_pbt_chartcartesian_axis (of_axis(axis))
Dient zuWerte entlang einer Achse vergleichen — Monate, Produkte, Regionen
PrinzipSie 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_categories kommt 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 #

EigenschaftTypStandardRolle
is_titlestring""Diagrammtitel, oben angezeigt
ib_show_legendbooleantrueZeigt die Legende. Ein Klick auf einen Eintrag blendet seine Reihe aus — der billigste Weg, zwei von fünf Reihen zu vergleichen
is_legend_locationstringbottomWohin 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_gridbooleantrueDie Linien hinter der Zeichnung, bei jedem runden Wert. Ohne sie bleibt nur die Form lesbar, nie ein Wert
ib_value_tooltipbooleantrueDas 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_orientationstringverticalSäulen oder Balken (Konstanten ORIENTATION_*). Dreht den ganzen Bezugsrahmen, Linien und Flächen eingeschlossen
ib_stackedbooleanfalseStapelt die Balkenreihen, statt sie nebeneinander zu setzen. Linien und Flächen werden nie gestapelt: Sie nennen ein Niveau
is_stack_modestringvalueSumme 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_enabledbooleantrueAusgegraut: 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_animatedbooleantrueDas 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_durationinteger450Dauer dieser Ankunft, in Millisekunden (0 bis 5000)
is_anim_easingstringease-outKurve 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_delayinteger0Versatz 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_stylestring""Visueller Stil der Komponente (Konstanten THEME_STYLE_*); leer = der der Anwendung, bei jeder Änderung übernommen
is_theme_modestring""Helle oder dunkle Variante (Konstanten THEME_MODE_*); leer = die der Anwendung, bei jeder Änderung übernommen
il_theme_accentlong-1Akzentfarbe dieser Komponente (-1 = Akzent des Themas)
is_tooltipstring""Einfacher Tooltip beim Überfahren der Komponente
is_super_tooltip_titlestring""Titel des erweiterten Tooltips (hat Vorrang vor is_tooltip)
is_super_tooltip_textstring""Text des erweiterten Tooltips (Rich-Markup erlaubt)
is_super_tooltip_imagestring""Bild des erweiterten Tooltips

Methoden #

MethodeRolle
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_values und ihre Griffe sehen sie — und der gesetzte Schlüssel zeigt sie, ohne dass Sie etwas erneut senden müssen.


Ereignisse #

EreignisAusgelö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 #

EigenschaftTypStandardRolle
is_labelstring""Der Name der Reihe, wie ihn die Legende zeigt
is_typestringbarbar · 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_colorlong-1Farbe der Reihe (RGB()). -1, solange keine gesetzt ist: die Palette wählt
ib_visiblebooleantruefalse 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_secondarybooleanfalseZeichnet die Reihe auf der zweiten Achse. So leben eine Anzahl und ein Betrag im selben Diagramm
ib_data_labelsbooleanfalseSchreibt den Wert jedes Punktes daneben. Standardmäßig aus: Bei fünfzig Punkten verdecken die Beschriftungen die Zeichnung, die sie erklären
is_label_formatstring""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_smoothnessdouble1Nur 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_fillbooleantrueLinien 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_colorlong-1Die Farbe dieser Lasur. -1 = die der Linie selbst
is_markerstring"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_thicknessinteger2Linien und Flächen: die Strichstärke in Pixeln
ii_point_countinteger0Wie viele Punkte diese Reihe trägt — Werte oder (x, y)-Paare (nur lesen)
il_cold_colorlong-1Nur 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_colorlong-1Die 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_colorlong-1Das HEISSE Ende, der schwerste Wert. Die Legende zeigt diese Farbe. -1 = das kräftige Blau der Komponente
il_up_colorlong-1Nur Finanzreihen: die Farbe eines Punktes, der über seiner Eröffnung schließt. -1 = das Grün der Komponente
il_down_colorlong-1Und 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 #

EigenschaftTypStandardRolle
is_titlestring""Titel entlang der Achse. Leer = kein Titel und kein reservierter Platz dafür
id_mindoubleNULLVorgegebene 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_maxdoubleNULLVorgegebene Obergrenze, gleiche Regel. Was darüber hinausgeht, wird am Rand der Zeichnung abgeschnitten
id_stepdouble0Abstand zwischen zwei Gitterlinien, in Werten. 0 = ein runder Schritt aus dem Bereich
ii_label_rotationinteger0Drehung 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_separatorbooleantrueIhre Gitterlinien. Eine Kategorieachse braucht sie selten, eine Werteachse fast immer
ii_section_countinteger0Wie viele Bänder und Schwellen diese Achse trägt (nur lesen)
ib_logarithmicbooleanfalseNur 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 #

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.

MitgliederRolleBeschrieben in
of_count · of_keys_at · of_hasDurchlaufen, was die Komponente enthält3.2 Die Items
of_resetDie Komponente zurücksetzen3.6 Eine Komponente zurücksetzen: of_reset()
of_register_shortcut · of_clear_shortcutsTastenkürzel der Komponente3.5 Tastenkombinationen
of_is_created · of_is_ready · of_get_last_errorOb sie entstanden ist, ob sie bereit ist, was fehlschlug3.7 Diagnose
of_save_as_png · of_save_as_jpgDie Darstellung als Bild exportieren3.8 Die Darstellung als Bild exportieren
of_set_redrawÄnderungen zu einem einzigen Neuzeichnen bündeln3.10 Best Practices
of_preload_iconsSymbole ohne VerzögerungSofortige Anzeige: of_icon
of_set_translationEine Beschriftung der Komponente übersetzen5.2 Eine Beschriftung anpassen: of_set_translation
of_focus_webviewDer Komponente den Fokus geben6.4 Tastatur und Fokus
of_print · of_print_to_pdfDrucken oder ein PDF schreiben6.9 Drucken
of_set_property · of_get_property · of_component_nameEine Eigenschaft über ihren Namen steuern3.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.

← Komponentenreferenz · Inhalt des Handbuchs