BarChart
พล็อตแต่ละรายการข้อมูลเป็นแท่ง เหมาะสำหรับการเปรียบเทียบค่าหมวดหมู่ สามารถจัดเรียงในแนวนอนหรือแนวตั้ง กำหนดช่วงตัวเลข ป้ายหมวดหมู่ และป้ายตัวเลข และรองรับค่าบวกและค่าลบ
ตัวอย่าง
function main() {
return (
<BarChart
data={[
{ value: 30, label: 'A' },
{ value: 70, label: 'B' },
]}
axis="vertical"
rangeY={[0, 100]}
showLabels={true}
showValueLabels={true}
background={$env.accent}
cornerRadius={6}
yAxis={{ stroke: $env.foreground, lineWidth: 1 }}
/>
);
}
การใช้งาน
- หนึ่ง data คือหนึ่งแท่งตามลำดับ ไม่ต้องมี x แม้ horizontal ช่วงค่ายังชื่อ rangeY ช่วงอัตโนมัติรวมศูนย์ ค่าลบยื่นอีกฝั่งฐาน background เติมแท่ง
- rangeX/rangeY จำกัดตัวเลข ไม่ใช่ป้าย ซ่อนป้ายไม่ซ่อนแกน ใช้ stroke="clear" แยกต่างหาก ระบบเลือกป้ายที่ไม่ชนกัน จึงไม่รับรองว่าจะแสดงทุกป้าย
- contentAnimation เปลี่ยนข้อความ ภาพ หรือข้อมูลโครงสร้าง interpolate ต้องมีจำนวนจุด/closed ของ Polyline ลำดับ Path หรือโครงสร้างกราฟที่เข้าคู่ หากโครงสร้างเปลี่ยนจะอัปเดตทันที
คุณสมบัติ
dataReadonlyArray<BarChartDataPoint>หมวดหมู่ตามลำดับอาร์เรย์ แต่ละรายการมีค่าตัวเลขและป้ายกำกับที่เลือกใส่ได้
[{value: 10, label: "A"}, {value: 20, label: "B"}, {value: 30, label: "C"}]axis?"horizontal" | "vertical"ทิศทางแท่ง: vertical เรียงจากซ้ายไปขวา ส่วน horizontal เรียงจากบนลงล่าง
"vertical"rangeY?ChartRangeช่วงค่าที่แสดง [min, max] หากไม่ระบุจะปรับตามข้อมูลและรวมศูนย์
[0, 100]showLabels?booleanแสดงป้ายกำกับหมวดหมู่ ป้ายที่ไม่ได้ระบุจะเว้นว่าง และเลย์เอาต์เนทีฟจะป้องกันการทับซ้อน
trueshowValueLabels?booleanแสดงป้ายตัวเลขบนแกนที่สร้างอัตโนมัติ
truebarThickness?number | "auto"ความหนาของแท่งเป็นพอยต์ หรือ auto เพื่อปรับตามระยะห่างหมวดหมู่
"auto"xAxis?ChartAxisStyleเส้นแกนนอนด้านล่างพื้นที่กราฟ ค่าเริ่มต้นเป็นสีพื้นหน้ากว้าง 1pt ใช้ stroke: clear เพื่อซ่อน
{stroke: HDR($env.foreground), lineWidth: 1}yAxis?ChartAxisStyleเส้นแกนตั้งด้านซ้ายพื้นที่กราฟ ค่าเริ่มต้นเป็นสีพื้นหน้ากว้าง 1pt ใช้ stroke: clear เพื่อซ่อน
{stroke: HDR($env.foreground), lineWidth: 1}background?Paintสีเติมแต่ละแท่ง ค่าเริ่มต้นคือสีพื้นหน้าของธีม
HDR($env.dark ? "white" : "black")cornerRadius?numberรัศมีมุมของแต่ละแท่ง จำกัดตามขนาดของแท่ง
0stroke?Paintสีหรือไล่สีเส้นขอบ clear ซ่อนเส้น
"clear"lineWidth?numberความหนาเส้นเป็นพอยต์ 0 ไม่วาดเส้น
2strokePosition?"inside" | "center" | "outside"ตำแหน่งเส้นขอบเทียบกับแต่ละแท่ง ค่าเริ่มต้นคือ inside
"inside"dash?number[]ความยาวเส้นและช่องว่างสลับกันเป็นพอยต์ อาร์เรย์ว่างคือเส้นทึบ
[]dashPhase?numberระยะเลื่อนลายเส้นประเป็นพอยต์
0contentAnimation?ContentAnimationการเปลี่ยนเนื้อหาแบบเลือกได้ interpolate ต้องมีจำนวนหมวดหมู่และทิศทางเดียวกัน มิฉะนั้นจะอัปเดตทันที
{type: "interpolate", duration: 0.25}คุณสมบัติทั่วไป
width?number | "auto" | "fill"ความกว้างเป็นพอยต์ ปรับขนาดอัตโนมัติ หรือเติมเต็มพื้นที่แม่
"fill"height?number | "auto" | "fill"ความสูงเป็นพอยต์ ปรับขนาดอัตโนมัติ หรือเติมเต็มพื้นที่แม่
"fill"x?numberเลื่อนภาพเป็นพอยต์: x ไปขวา y ลงล่าง ไม่เปลี่ยนพื้นที่ในเลย์เอาต์
0y?numberเลื่อนภาพเป็นพอยต์: x ไปขวา y ลงล่าง ไม่เปลี่ยนพื้นที่ในเลย์เอาต์
0transform?ViewTransformแปลงทั้ง View โดยไม่เปลี่ยนเลย์เอาต์ ระยะเลื่อนเป็นพอยต์ หมุน/เอียงเป็นองศา สเกล 1 ไม่เปลี่ยน จุดยึด 0–1
{rotation: 0}opacity?numberความทึบทั้ง View: 0 โปร่งใส 1 ทึบ
1clipped?booleanตัดส่วนที่วาดเกินขอบ View
falseclip?"rectangle" | "ellipse"รูปทรงตัด rectangle หรือ ellipse; Material ใช้ false เพื่อปิดได้
"rectangle"mask?View | nullView มาสก์อัลฟา จัดกึ่งกลางโดยไม่ส่งผลต่อเลย์เอาต์; null ปิดการใช้มาสก์
<Circle width="fill" height="fill" background="white"/>zIndex?numberลำดับวาดระหว่างองค์ประกอบระดับเดียวกัน ค่ายิ่งมากยิ่งอยู่หน้า
0blur?numberรัศมีเบลอเป็นพอยต์ 0 คือปิด
4innerShadow?DrawingEffectสี ความทึบ รัศมีเบลอ และระยะ x/y ของเอฟเฟกต์ ระยะเป็นพอยต์
{color: HDR("black"), opacity: 0.5, radius: 4, x: 0, y: 2}glow?DrawingEffectสี ความทึบ รัศมีเบลอ และระยะ x/y ของเอฟเฟกต์ ระยะเป็นพอยต์
{color: HDR("cyan"), radius: 8, opacity: 0.8}shadowColor?Colorสีเงาภายนอก
HDR("black")shadowOpacity?numberความทึบเงา 0–1; 0 ซ่อนเงา
0shadowRadius?numberรัศมีเบลอเงาภายนอกเป็นพอยต์
4shadowX?numberเลื่อนเงาเป็นพอยต์: x ไปขวา y ลงล่าง
0shadowY?numberเลื่อนเงาเป็นพอยต์: x ไปขวา y ลงล่าง
2animations?BarChartAnimation[]แอนิเมชันเมื่อคุณสมบัติเปลี่ยน duration/delay เป็นวินาที from/to เป็นปลายทาง repeat/autoreverse ควบคุมการซ้ำ wrap เป็นคาบ
[{property: "opacity", duration: 0.25, curve: "easeInOut"}]key?string | numberตัวระบุที่คงที่ระหว่างองค์ประกอบระดับเดียวกัน
ตัวอย่างใช้งาน
function main() {
return (
<BarChart
width={260}
height={160}
axis="horizontal"
rangeY={[-50, 100]}
data={[
{ value: 80, label: 'A' },
{ value: -25, label: 'B' },
{ value: 45, label: 'C' },
]}
showLabels={true}
showValueLabels={true}
background={$env.accent}
cornerRadius={4}
xAxis={{ stroke: $env.foreground, dash: [4, 3] }}
yAxis={{ stroke: 'clear' }}
/>
);
}
ภาพเคลื่อนไหว
widthheightxyopacitybackgroundcornerRadiusblurshadowColorshadowOpacityshadowRadiusshadowXshadowYbarThicknessstrokelineWidthdashPhasetransform.translateXtransform.translateYtransform.scaleXtransform.scaleYtransform.rotationtransform.skewXtransform.skewYtransform.anchorXtransform.anchorYrangeY.0rangeY.1xAxis.lineWidthxAxis.dashPhaseyAxis.lineWidthyAxis.dashPhasexAxis.strokeyAxis.strokeเมื่อไม่ระบุ
ตารางคือพฤติกรรมเมื่อไม่ระบุที่ตรวจจากโค้ด ตัวอย่างไม่ใช่ค่าเริ่มต้น หากต้องการผลแน่นอนให้ระบุค่า ขนาดและสีตามบริบทไม่ใช่ค่าคงที่
| คุณสมบัติ | เมื่อไม่ระบุ |
|---|---|
data | [] |
axis | "vertical" |
showLabels | true |
showValueLabels | true |
cornerRadius | 0 |
strokePosition | "inside" |
background | HDR($env.dark ? 'white' : 'black') |
xAxis | { stroke: HDR($env.foreground), lineWidth: 1 } |
yAxis | { stroke: HDR($env.foreground), lineWidth: 1 } |