LineChart
Gerçek x/y değerlerine sahip veri serisini bir eğri olarak çizin. Hız ve zaman gibi trendlere uygundur, koordinat aralıklarını, eksenleri ve etiketleri destekler; eksik y değerleri satır bölümlerini kesecektir.
Örnek
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 }}
/>
);
}
Kullanım
- value.x/y konum, label.x/y yalnız yazıdır. x sıralanmaz; y=null çizgiyi keser. Kayan zaman grafiği data ve rangeX değerlerini birlikte günceller: [şimdikiSaniye−30,şimdikiSaniye].
- $data.history son 30 saniyeyi eskiden yeniye içerir; boş veya eksik olabilir. timestamp milisaniye, elapsed saniye. null boşlukları koruyup zamanda indeks değil elapsed.value kullanın.
- rangeX/rangeY etiket değil sayısal aralıktır. Etiketi gizlemek ekseni gizlemez; stroke="clear" kullanın. Yerel düzen çakışmayan etiketleri seçer, hepsini garanti etmez.
- contentAnimation yazı, resim ve yapısal veriyi geçirir. interpolate için Polyline nokta sayısı/closed, Path komutları veya grafik yapısı eşleşmelidir. Yapı değişirse anında güncellenir.
Özellikler
dataReadonlyArray<ChartDataPoint>Grafik verileri. value.x/y koordinatları, label.x/y metni belirler; null y çizgiyi keser.
[{value: {x: 0, y: 12}, label: {x: "0s", y: "12"}}, {value: {x: 10, y: 24}, label: {x: "10s", y: "24"}}]rangeX?ChartRangeGörünür sayısal aralık [min, max]. Atlanırsa verilere otomatik uyarlanır.
[0, 30]rangeY?ChartRangeGörünür sayısal aralık [min, max]. Atlanırsa verilere otomatik uyarlanır.
[0, 100]showXLabels?booleanEksen etiketlerini göster. Yerel düzen çakışmayan bir alt küme seçer.
trueshowYLabels?booleanEksen etiketlerini göster. Yerel düzen çakışmayan bir alt küme seçer.
truexAxis?ChartAxisStyleGrafiğin altındaki yatay eksen çizgisi. Varsayılan: ön plan rengi, 1pt genişlik; stroke: clear ile gizlenir.
{stroke: HDR($env.foreground), lineWidth: 1}yAxis?ChartAxisStyleGrafiğin solundaki dikey eksen çizgisi. Varsayılan: ön plan rengi, 1pt genişlik; stroke: clear ile gizlenir.
{stroke: HDR($env.foreground), lineWidth: 1}stroke?PaintÇizgi rengi veya gradyanı; clear gizler.
HDR($env.dark ? "white" : "black")lineWidth?numberÇizgi kalınlığı, punto; 0 çizmez.
2lineCap?"round" | "butt" | "square"Çizgi ucu: butt keser, square kare uzatır, round yuvarlar.
"round"lineJoin?"round" | "miter" | "bevel"Birleşim şekli: miter, round veya bevel.
"round"dash?number[]Çizgi ve boşluk uzunlukları sırayla, punto; boş dizi düz çizgidir.
[]dashPhase?numberKesik çizgi desen kayması, punto.
0contentAnimation?ContentAnimationİsteğe bağlı geçiş. interpolate aynı örnek sayısını ve eksik değer konumlarını gerektirir; aksi halde hemen günceller.
{type: "interpolate", duration: 0.25}Ortak özellikler
width?number | "auto" | "fill"Punto cinsinden genişlik, otomatik boyut veya üst alanı doldurma.
"fill"height?number | "auto" | "fill"Punto cinsinden yükseklik, otomatik boyut veya üst alanı doldurma.
"fill"x?numberGörsel kaydırma, punto: x sağa, y aşağı. Yerleşimde ayrılan alan değişmez.
0y?numberGörsel kaydırma, punto: x sağa, y aşağı. Yerleşimde ayrılan alan değişmez.
0transform?ViewTransformYerleşimi değiştirmeyen bütünsel dönüşüm. Kaydırma punto, dönüş/eğim derece, ölçek 1 değişmez, dayanak 0–1.
{rotation: 0}opacity?numberTüm View opaklığı: 0 saydam, 1 opak.
1clipped?booleanView sınırlarını aşan çizimi kırpar.
falseclip?"rectangle" | "ellipse"Kırpma şekli rectangle veya ellipse; Material için false kapatır.
"rectangle"mask?View | nullAlfa maskesi View öğesi. Düzeni etkilemeden ortalanır; null maskeyi devre dışı bırakır.
<Circle width="fill" height="fill" background="white"/>zIndex?numberKardeşler arasında çizim sırası; büyük değer öndedir.
0blur?numberBulanıklık yarıçapı, punto; 0 kapatır.
4innerShadow?DrawingEffectEfekt rengi, opaklığı, bulanıklık yarıçapı ve x/y kayması; uzaklıklar punto.
{color: HDR("black"), opacity: 0.5, radius: 4, x: 0, y: 2}glow?DrawingEffectEfekt rengi, opaklığı, bulanıklık yarıçapı ve x/y kayması; uzaklıklar punto.
{color: HDR("cyan"), radius: 8, opacity: 0.8}shadowColor?ColorDış gölge rengi.
HDR("black")shadowOpacity?numberGölge opaklığı 0–1; 0 gizler.
0shadowRadius?numberDış gölge bulanıklık yarıçapı, punto.
4shadowX?numberGölge kayması, punto: x sağa, y aşağı.
0shadowY?numberGölge kayması, punto: x sağa, y aşağı.
2animations?LineChartAnimation[]Özellik değişimini canlandırır. duration/delay saniye; from/to uçlar; repeat/autoreverse tekrar, wrap dönem.
[{property: "opacity", duration: 0.25, curve: "easeInOut"}]key?string | numberKardeş öğeler arasında kararlı kimlik.
Pratik örnek
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' }}
/>
);
}
Animasyon
widthheightxyopacityblurshadowColorshadowOpacityshadowRadiusshadowXshadowYstrokelineWidthdashPhasetransform.translateXtransform.translateYtransform.scaleXtransform.scaleYtransform.rotationtransform.skewXtransform.skewYtransform.anchorXtransform.anchorYrangeX.0rangeX.1rangeY.0rangeY.1xAxis.lineWidthxAxis.dashPhaseyAxis.lineWidthyAxis.dashPhasexAxis.strokeyAxis.strokeAtlandığında
Tablo uygulamada doğrulanmış atlama davranışıdır; örnekler varsayılan değildir. Sabit sonuç için açık değer kullanın; bağlama bağlı boyut ve tema renkleri sabit sayı değildir.
| Özellikler | Atlandığında |
|---|---|
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 } |