LineChart

Vẽ chuỗi dữ liệu với các giá trị x/y thực tế dưới dạng đường cong. Phù hợp với các xu hướng như tốc độ và thời gian, hỗ trợ phạm vi tọa độ, trục và nhãn; thiếu giá trị y sẽ làm đứt đoạn dòng.

Ví dụ

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 }}
    />
  );
}

Cách sử dụng

  • value.x/y định vị, label.x/y chỉ đặt chữ. Không sắp xếp x; y=null ngắt nét. Biểu đồ thời gian cuộn cập nhật data và rangeX, như [giâyHiệnTại−30,giâyHiệnTại].
  • $data.history là 30 giây gần nhất, cũ trước mới sau, có thể rỗng hoặc thiếu. timestamp mili giây, elapsed giây. Giữ đoạn null và dùng elapsed.value, không dùng chỉ số, làm thời gian.
  • rangeX/rangeY giới hạn số, không phải nhãn. Ẩn nhãn không ẩn trục; dùng stroke="clear" riêng. Native chọn nhãn không đè nhau nên không đảm bảo hiện tất cả.
  • contentAnimation chuyển chữ, ảnh hoặc dữ liệu cấu trúc. interpolate cần số điểm/closed Polyline, chuỗi lệnh Path hoặc mẫu biểu đồ tương ứng. Đổi cấu trúc cập nhật ngay.

Thuộc tính

dataReadonlyArray<ChartDataPoint>

Dữ liệu biểu đồ. value.x/y đặt tọa độ, label.x/y đặt văn bản; y null sẽ ngắt đường.

Ví dụ[{value: {x: 0, y: 12}, label: {x: "0s", y: "12"}}, {value: {x: 10, y: 24}, label: {x: "10s", y: "24"}}]
rangeX?ChartRange

Phạm vi số hiển thị [min, max]. Bỏ qua để tự động khớp dữ liệu.

Ví dụ[0, 30]
rangeY?ChartRange

Phạm vi số hiển thị [min, max]. Bỏ qua để tự động khớp dữ liệu.

Ví dụ[0, 100]
showXLabels?boolean

Hiện nhãn trục. Bố cục gốc chọn tập nhãn không chồng lấp.

Ví dụtrue
showYLabels?boolean

Hiện nhãn trục. Bố cục gốc chọn tập nhãn không chồng lấp.

Ví dụtrue

Đường trục ngang ở đáy vùng vẽ. Mặc định dùng màu tiền cảnh, rộng 1pt; stroke: clear để ẩn.

Ví dụ{stroke: HDR($env.foreground), lineWidth: 1}

Đường trục dọc ở bên trái vùng vẽ. Mặc định dùng màu tiền cảnh, rộng 1pt; stroke: clear để ẩn.

Ví dụ{stroke: HDR($env.foreground), lineWidth: 1}
stroke?Paint

Màu hoặc chuyển màu của nét; clear ẩn nét.

Ví dụHDR($env.dark ? "white" : "black")
lineWidth?number

Độ dày nét theo điểm; 0 không vẽ nét.

Ví dụ2
lineCap?"round" | "butt" | "square"

Đầu nét: butt cắt tại điểm, square kéo dài vuông, round bo tròn.

Ví dụ"round"
lineJoin?"round" | "miter" | "bevel"

Hình mối nối: miter, round hoặc bevel.

Ví dụ"round"
dash?number[]

Độ dài nét và khoảng trống xen kẽ theo điểm; mảng rỗng là nét liền.

Ví dụ[]
dashPhase?number

Độ dịch mẫu nét đứt theo điểm.

Ví dụ0
contentAnimation?ContentAnimation

Chuyển tiếp tùy chọn. interpolate yêu cầu cùng số mẫu và vị trí thiếu dữ liệu; nếu khác sẽ cập nhật ngay.

Ví dụ{type: "interpolate", duration: 0.25}
Thuộc tính chung
width?number | "auto" | "fill"

Chiều rộng tính bằng point, tự động hoặc lấp đầy khung cha.

Ví dụ"fill"
height?number | "auto" | "fill"

Chiều cao tính bằng point, tự động hoặc lấp đầy khung cha.

Ví dụ"fill"
x?number

Dịch chuyển hiển thị theo điểm: x sang phải, y xuống dưới; không đổi chỗ trong bố cục.

Ví dụ0
y?number

Dịch chuyển hiển thị theo điểm: x sang phải, y xuống dưới; không đổi chỗ trong bố cục.

Ví dụ0
transform?ViewTransform

Biến đổi toàn View không đổi bố cục. Dịch chuyển theo điểm, xoay/nghiêng theo độ, tỷ lệ 1 giữ nguyên, điểm neo 0–1.

Ví dụ{rotation: 0}
opacity?number

Độ đục toàn bộ View: 0 trong suốt, 1 đục hoàn toàn.

Ví dụ1
clipped?boolean

Cắt phần vẽ vượt ra ngoài View.

Ví dụfalse
clip?"rectangle" | "ellipse"

Hình cắt rectangle hoặc ellipse; Material còn nhận false để tắt.

Ví dụ"rectangle"
mask?View | null

View mặt nạ alpha. Căn giữa mà không ảnh hưởng bố cục; null tắt mặt nạ.

Ví dụ<Circle width="fill" height="fill" background="white"/>
zIndex?number

Thứ tự vẽ giữa các phần tử cùng cấp; giá trị lớn nằm trước.

Ví dụ0
blur?number

Bán kính làm mờ theo điểm; 0 là tắt.

Ví dụ4
innerShadow?DrawingEffect

Màu, độ đục, bán kính mờ và độ lệch x/y của hiệu ứng; khoảng cách theo điểm.

Ví dụ{color: HDR("black"), opacity: 0.5, radius: 4, x: 0, y: 2}

Màu, độ đục, bán kính mờ và độ lệch x/y của hiệu ứng; khoảng cách theo điểm.

Ví dụ{color: HDR("cyan"), radius: 8, opacity: 0.8}
shadowColor?Color

Màu bóng đổ bên ngoài.

Ví dụHDR("black")
shadowOpacity?number

Độ đục bóng 0–1; 0 ẩn bóng.

Ví dụ0
shadowRadius?number

Bán kính làm mờ bóng ngoài theo điểm.

Ví dụ4
shadowX?number

Độ lệch bóng theo điểm: x sang phải, y xuống.

Ví dụ0
shadowY?number

Độ lệch bóng theo điểm: x sang phải, y xuống.

Ví dụ2
animations?LineChartAnimation[]

Hoạt ảnh khi thuộc tính đổi. duration/delay theo giây; from/to là đầu cuối; repeat/autoreverse điều khiển lặp, wrap là chu kỳ.

Ví dụ[{property: "opacity", duration: 0.25, curve: "easeInOut"}]
key?string | number

Định danh ổn định giữa các phần tử cùng cấp.

Ví dụ kết hợp

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' }}
    />
  );
}

Hoạt ảnh

Hoạt ảnh

widthheightxyopacityblurshadowColorshadowOpacityshadowRadiusshadowXshadowYstrokelineWidthdashPhasetransform.translateXtransform.translateYtransform.scaleXtransform.scaleYtransform.rotationtransform.skewXtransform.skewYtransform.anchorXtransform.anchorYrangeX.0rangeX.1rangeY.0rangeY.1xAxis.lineWidthxAxis.dashPhaseyAxis.lineWidthyAxis.dashPhasexAxis.strokeyAxis.stroke

Khi bỏ qua

Bảng ghi hành vi bỏ qua đã kiểm tra từ triển khai; ví dụ không phải mặc định. Muốn kết quả cố định hãy truyền giá trị rõ, kích thước và màu theo ngữ cảnh không phải hằng số.

Thuộc tínhKhi bỏ qua
data[]
showXLabelstrue
showYLabelstrue
lineWidth2
strokeHDR($env.dark ? 'white' : 'black')
xAxis{ stroke: HDR($env.foreground), lineWidth: 1 }
yAxis{ stroke: HDR($env.foreground), lineWidth: 1 }