LineChart
Zeichnen Sie die Datenreihe mit den tatsächlichen x/y-Werten als Kurve. Geeignet für Trends wie Geschwindigkeit und Zeit, unterstützt Koordinatenbereiche, Achsen und Beschriftungen; Fehlende y-Werte führen zum Bruch von Liniensegmenten.
Beispiel
function main() {
return (
<LineChart
data={[
{ value: { x: 0, y: 20 }, label: { x: '0s', y: '20' } },
{ value: { x: 10, y: 60 }, label: { x: '10s', y: '60' } },
]}
rangeX={[0, 10]}
rangeY={[0, 100]}
showXLabels={true}
showYLabels={true}
stroke={$env.accent}
xAxis={{ stroke: $env.foreground, lineWidth: 1 }}
/>
);
}
Verwendung
- value.x/y bestimmt Positionen, label.x/y nur Texte. Keine Sortierung nach x; y=null unterbricht die Linie. Für Zeitfenster data und rangeX aktualisieren, etwa [aktuelleSekunden−30,aktuelleSekunden].
- $data.history enthält die letzten 30 Sekunden, älteste zuerst, eventuell leer oder lückenhaft. timestamp ist in Millisekunden, elapsed in Sekunden. Für Zeitdiagramme null-Lücken und elapsed.value als x verwenden, nicht den Index.
- rangeX/rangeY begrenzen Zahlen, nicht Beschriftungen. Versteckte Labels entfernen keine Achsen; dafür stroke="clear" setzen. Native Auswahl verhindert Überlappungen, weshalb nicht jedes aktivierte Label erscheinen muss.
- contentAnimation betrifft Text, Bilder und strukturierte Daten. interpolate benötigt passende Polyline-Punktzahl/closed, Path-Befehlsfolge oder Diagrammstruktur. Strukturänderungen werden sofort übernommen.
Eigenschaften
dataReadonlyArray<ChartDataPoint>Diagrammdaten. value.x/y legt Koordinaten fest, label.x/y den Text; null bei y unterbricht die Linie.
[{value: {x: 0, y: 12}, label: {x: "0s", y: "12"}}, {value: {x: 10, y: 24}, label: {x: "10s", y: "24"}}]rangeX?ChartRangeSichtbarer numerischer Achsenbereich [min, max]. Ohne Angabe automatisch an Daten angepasst.
[0, 30]rangeY?ChartRangeSichtbarer numerischer Achsenbereich [min, max]. Ohne Angabe automatisch an Daten angepasst.
[0, 100]showXLabels?booleanAchsenbeschriftungen anzeigen. Das native Layout wählt eine überlappungsfreie Teilmenge.
trueshowYLabels?booleanAchsenbeschriftungen anzeigen. Das native Layout wählt eine überlappungsfreie Teilmenge.
truexAxis?ChartAxisStyleHorizontale Achsenlinie am unteren Diagrammrand. Standard: Vordergrundfarbe, 1pt breit; mit stroke: clear ausblenden.
{stroke: HDR($env.foreground), lineWidth: 1}yAxis?ChartAxisStyleVertikale Achsenlinie am linken Diagrammrand. Standard: Vordergrundfarbe, 1pt breit; mit stroke: clear ausblenden.
{stroke: HDR($env.foreground), lineWidth: 1}stroke?PaintLinienfarbe oder Verlauf; clear blendet die Linie aus.
HDR($env.dark ? "white" : "black")lineWidth?numberLinienstärke in Punkten; 0 zeichnet keine Linie.
2lineCap?"round" | "butt" | "square"Linienende: butt endet am Punkt, square verlängert eckig, round rundet.
"round"lineJoin?"round" | "miter" | "bevel"Form von Linienverbindungen: miter, round oder bevel.
"round"dash?number[]Abwechselnde Strich- und Lückenlängen in Punkten; leeres Array bedeutet durchgezogen.
[]dashPhase?numberVersatz des Strichmusters in Punkten.
0contentAnimation?ContentAnimationOptionaler Inhaltsübergang. interpolate erfordert dieselbe Anzahl und Position fehlender Werte; sonst sofortige Aktualisierung.
{type: "interpolate", duration: 0.25}Allgemeine Eigenschaften
width?number | "auto" | "fill"Breite in Punkten, automatische Größe oder Ausfüllen des übergeordneten Bereichs.
"fill"height?number | "auto" | "fill"Höhe in Punkten, automatische Größe oder Ausfüllen des übergeordneten Bereichs.
"fill"x?numberVisueller Versatz in Punkten: x nach rechts, y nach unten; der Layoutplatz bleibt gleich.
0y?numberVisueller Versatz in Punkten: x nach rechts, y nach unten; der Layoutplatz bleibt gleich.
0transform?ViewTransformGesamten View ohne Layoutänderung transformieren. Verschiebung in Punkten, Drehung/Neigung in Grad, Skalierung 1 unverändert, Anker 0–1.
{rotation: 0}opacity?numberDeckkraft des gesamten Views: 0 transparent, 1 undurchsichtig.
1clipped?booleanZeichnung außerhalb der View-Grenzen abschneiden.
falseclip?"rectangle" | "ellipse"Schnittform rectangle oder ellipse; Material erlaubt auch false zum Abschalten.
"rectangle"mask?View | nullView als Alphamaske. Zentriert ohne Einfluss auf das Layout; null deaktiviert die Maske.
<Circle width="fill" height="fill" background="white"/>zIndex?numberZeichenreihenfolge unter Geschwistern; größere Werte liegen vorne.
0blur?numberUnschärferadius in Punkten; 0 deaktiviert die Unschärfe.
4innerShadow?DrawingEffectEffektfarbe, Deckkraft, Unschärferadius und x/y-Versatz; Entfernungen in Punkten.
{color: HDR("black"), opacity: 0.5, radius: 4, x: 0, y: 2}glow?DrawingEffectEffektfarbe, Deckkraft, Unschärferadius und x/y-Versatz; Entfernungen in Punkten.
{color: HDR("cyan"), radius: 8, opacity: 0.8}shadowColor?ColorFarbe des äußeren Schattens.
HDR("black")shadowOpacity?numberSchattendeckkraft 0–1; 0 blendet ihn aus.
0shadowRadius?numberUnschärferadius des äußeren Schattens in Punkten.
4shadowX?numberSchattenversatz in Punkten: x rechts, y unten.
0shadowY?numberSchattenversatz in Punkten: x rechts, y unten.
2animations?LineChartAnimation[]Attributänderung animieren. duration/delay in Sekunden; from/to sind Endwerte; repeat/autoreverse steuern Wiederholung, wrap die Periode.
[{property: "opacity", duration: 0.25, curve: "easeInOut"}]key?string | numberStabile Kennung unter Geschwisterelementen.
Praxisbeispiel
function main() {
const now = $data.current.elapsed?.value ?? 0;
const data = $data.history
.filter((sample) => sample.elapsed?.value != null)
.map((sample) => ({
value: { x: sample.elapsed.value, y: sample.speed?.value ?? null },
label: {
x: sample.elapsed.value.toFixed(0) + 's',
y: sample.speed?.value == null ? '' : sample.speed.value.toFixed(0),
},
}));
return (
<LineChart
data={data}
rangeX={[now - 30, now]}
rangeY={[0, 160]}
stroke={$env.accent}
xAxis={{ stroke: $env.foreground, lineWidth: 1 }}
yAxis={{ stroke: 'clear' }}
/>
);
}
Animation
widthheightxyopacityblurshadowColorshadowOpacityshadowRadiusshadowXshadowYstrokelineWidthdashPhasetransform.translateXtransform.translateYtransform.scaleXtransform.scaleYtransform.rotationtransform.skewXtransform.skewYtransform.anchorXtransform.anchorYrangeX.0rangeX.1rangeY.0rangeY.1xAxis.lineWidthxAxis.dashPhaseyAxis.lineWidthyAxis.dashPhasexAxis.strokeyAxis.strokeBeim Weglassen
Die Tabelle zeigt implementierte Vorgaben beim Weglassen. Eigenschaftsbeispiele sind keine Standardwerte. Für feste Ergebnisse explizite Werte setzen; kontextabhängige Maße und Themenfarben sind keine Konstanten.
| Eigenschaften | Beim Weglassen |
|---|---|
data | [] |
showXLabels | true |
showYLabels | true |
lineWidth | 2 |
stroke | HDR($env.dark ? 'white' : 'black') |
xAxis | { stroke: HDR($env.foreground), lineWidth: 1 } |
yAxis | { stroke: HDR($env.foreground), lineWidth: 1 } |