WIP components (as built)
This commit is contained in:
98 files changed
+2746
-1204
No files matched your search
@@ -0,0 +1,38 @@
|
||||
# 121 ChartLegend 图例
|
||||
|
||||
## 用途
|
||||
|
||||
展示序列名称与形状;点击或键盘切换序列显隐,支持横纵布局和折叠。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
hidden := map[string]bool{}
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
k := mujica.Tokens(c)
|
||||
items := []mujica.ChartLegendItem{{Name: "Pews", Color: k.Info}, {Name: "Candles", Color: k.Success, Shape: 1}}
|
||||
mujica.ChartLegend(c, &hidden, items, mujica.ChartLegendOptions{MaxItems: 1})
|
||||
}
|
||||
ui.Render(view, 400, 200, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
`hidden *map[string]bool`:名称映射到隐藏状态,nil 为静态图例。`items []ChartLegendItem`:唯一非空 `Name`、`Color`、`Shape`(0–4)。`Vertical` 默认 false;`MaxItems` 默认 0,显示全部,负值 panic。
|
||||
|
||||
## 状态
|
||||
|
||||
可见项显示形状,隐藏项显示空框与删除线;支持祖先禁用。折叠后显示展开按钮。
|
||||
|
||||
## 事件
|
||||
|
||||
`Toggled()` 返回本帧切换的序列名称和是否发生事件。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Tab 进入图例;方向键在项之间移动;Space 切换显隐;展开按钮支持 Enter 和 Space。
|
||||
|
||||
## 限制
|
||||
|
||||
调用方依据 hidden 控制数据序列。图例颜色来自调用方,应使用主题色;形状提供颜色之外的识别。
|
||||
@@ -0,0 +1,36 @@
|
||||
# 122 ChartTooltip 读数浮层
|
||||
|
||||
## 用途
|
||||
|
||||
在指针或键盘数据点旁显示多序列读数,自动避让窗口边缘。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
k := mujica.Tokens(c)
|
||||
mujica.ChartTooltip(c, 40, 40, []mujica.ChartTooltipLine{{Text: "Lauds"}, {Text: "Pews 5", Color: k.Info}, {Text: "Candles 2", Color: k.Success, Shape: 1}})
|
||||
}
|
||||
ui.Render(view, 400, 200, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
`x, y float32`:窗口 DIP 坐标。`lines []ChartTooltipLine` 必须非空;`Text` 为读数,`Color` 为标记色,透明色隐藏标记;`Shape` 为标记形状。
|
||||
|
||||
## 状态
|
||||
|
||||
160 ms 进入过渡;减少动画直接出现。宽度和高度受窗口限制,长文字换行,内容可滚动。
|
||||
|
||||
## 事件
|
||||
|
||||
返回浮层 `*ui.Element`;读数事件由所属 Chart 提供。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
通过 `Chart` 使用时,方向键改变锚点,Escape 清除浮层;浮层内容沿用滚动容器操作。
|
||||
|
||||
## 限制
|
||||
|
||||
调用方传入当前读数和锚点,负责显示时机;所属图表应同时显示并朗读读数。
|
||||
@@ -0,0 +1,43 @@
|
||||
# 123 ChartCrosshair 十字光标
|
||||
|
||||
## 用途
|
||||
|
||||
绘制横纵十字线和轴侧读数标签,提供最近数据点吸附。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
x := mujica.ChartAxis(c, mujica.ChartAxisOptions{Max: 10})
|
||||
y := mujica.ChartAxis(c, mujica.ChartAxisOptions{Side: mujica.SideLeft, Max: 100})
|
||||
hair := mujica.ChartCrosshair(c, mujica.ChartCrosshairOptions{X: &x, Y: &y})
|
||||
ui.Box(c).Fill().Draw(func(p *ui.Painter, r ui.Rect) {
|
||||
plot := ui.Rect{X: r.X + 60, Y: r.Y + 20, W: r.W - 80, H: r.H - 60}
|
||||
x.Draw(p, plot)
|
||||
y.Draw(p, plot)
|
||||
hair.Draw(p, plot, x.Map(plot, 5), y.Map(plot, 70))
|
||||
})
|
||||
}
|
||||
ui.Render(view, 400, 300, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
`X, Y *ChartAxisPart`:至少提供一条轴。`Reach` 默认 24 DIP,负值 panic。返回 `ChartCrosshairPart`;`Snap(n, at, x, y)` 返回范围内最近索引,范围外为 -1。
|
||||
|
||||
## 状态
|
||||
|
||||
静态部件;随调用方传入的坐标变化。移动路径使用像素网格对齐。
|
||||
|
||||
## 事件
|
||||
|
||||
吸附返回索引;读数变化使用所属 `ChartResult.Changed()`。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
与 Chart 的 `Pick`、`Anchor`、`Readout` 组合,方向键逐点显示并朗读数值。
|
||||
|
||||
## 限制
|
||||
|
||||
`Draw` 使用窗口坐标,`Snap` 和 at 必须采用相同坐标系;轴部件在每帧创建。
|
||||
@@ -0,0 +1,38 @@
|
||||
# 124 ChartAxis 坐标轴
|
||||
|
||||
## 用途
|
||||
|
||||
提供数值、时间、类别和对数刻度,以及值和像素之间的映射。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
axis := mujica.ChartAxis(c, mujica.ChartAxisOptions{Side: mujica.SideLeft, Kind: mujica.AxisLog, Min: 1, Max: 1000})
|
||||
ui.Box(c).Fill().Draw(func(p *ui.Painter, r ui.Rect) {
|
||||
axis.Draw(p, ui.Rect{X: r.X + 60, Y: r.Y + 20, W: r.W - 80, H: r.H - 60})
|
||||
})
|
||||
}
|
||||
ui.Render(view, 400, 300, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
`Kind` 默认 `AxisLinear`;`Side` 默认 `SideBottom`。数值与对数轴需要有限 `Min < Max`,对数轴 `Min > 0`。时间轴需要 `From < To`。类别轴需要非空 `Categories`。`Ticks` 为递增且位于范围内的指定刻度,nil 自动生成。`Format func(float64) string` 自定义标签。
|
||||
|
||||
## 状态
|
||||
|
||||
展示部件,继承当前主题、文本缩放和字体。
|
||||
|
||||
## 事件
|
||||
|
||||
`Map`、`Invert`、`Ticks`、`Label` 返回映射与标签;组件自身没有业务事件。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
所属 Chart 负责聚焦、方向键和读数。坐标轴作为绘图部件随图表展示。
|
||||
|
||||
## 限制
|
||||
|
||||
为标签预留边距。时间值采用 Unix 秒,默认格式使用 UTC;需要本地时区时通过 Format 格式化。数据和刻度切片在使用期间保持稳定。
|
||||
@@ -0,0 +1,43 @@
|
||||
# 125 ChartGrid 图表网格
|
||||
|
||||
## 用途
|
||||
|
||||
按坐标轴主刻度和次刻度绘制对齐设备像素的网格线。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
x := mujica.ChartAxis(c, mujica.ChartAxisOptions{Max: 10})
|
||||
y := mujica.ChartAxis(c, mujica.ChartAxisOptions{Side: mujica.SideLeft, Max: 100})
|
||||
grid := mujica.ChartGrid(c, mujica.ChartGridOptions{X: &x, Y: &y, Minor: 2})
|
||||
ui.Box(c).Fill().Draw(func(p *ui.Painter, r ui.Rect) {
|
||||
plot := ui.Rect{X: r.X + 60, Y: r.Y + 20, W: r.W - 80, H: r.H - 60}
|
||||
grid.Draw(p, plot)
|
||||
x.Draw(p, plot)
|
||||
y.Draw(p, plot)
|
||||
})
|
||||
}
|
||||
ui.Render(view, 400, 300, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
`X, Y *ChartAxisPart` 至少一条轴;`Minor` 默认 0,正整数表示每个主刻度间隔的等分数。类别轴的 Minor 必须为 0。负值 panic。
|
||||
|
||||
## 状态
|
||||
|
||||
展示部件;主网格使用 Border,次网格使用较淡的 Border。
|
||||
|
||||
## 事件
|
||||
|
||||
返回 `ChartGridPart`,由 `Draw(p, plot)` 绘制。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
所属图表的键盘操作保持生效;网格随图表展示。
|
||||
|
||||
## 限制
|
||||
|
||||
对数轴次刻度按对数距离等分。大范围刻度按绘图像素密度抽样绘制。
|
||||
@@ -0,0 +1,36 @@
|
||||
# 126 ChartBrush 区间刷选
|
||||
|
||||
## 用途
|
||||
|
||||
选择图表可见区间,支持移动窗口、调整两端和拖动新建范围。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
value := [2]float64{20, 60}
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
mujica.ChartBrush(c, &value, mujica.ChartBrushOptions{Label: "Months", Max: 100, Step: 1, Values: []float64{2, 4, 3, 8, 5}})
|
||||
}
|
||||
ui.Render(view, 400, 160, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
`value *[2]float64` 为域内严格递增区间;`Label` 必填;有限 `Min < Max`。`Step` 默认跨度的 1/100,负值 panic。`Values` 为预览折线。`Height` 默认 48 DIP,显式高度至少 28 DIP。`Format` 自定义值文本。`Disabled` 默认 false。
|
||||
|
||||
## 状态
|
||||
|
||||
显示选区边框与两端手柄;自身或祖先禁用时保持区间。拖动窗口到边缘保持跨度。
|
||||
|
||||
## 事件
|
||||
|
||||
返回 `ChoiceResult`;`Changed()` 表示区间变化;新范围会被朗读,调用方据此调整图表范围。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Tab 按起点、窗口、终点顺序聚焦;方向键移动一个步长;手柄 PageUp/PageDown 移动十个步长;Home/End 到域边界。
|
||||
|
||||
## 限制
|
||||
|
||||
范围至少保留一个 Step。预览切片按身份缓存,更新数据时替换切片。调用方负责图表缩放和查询。
|
||||
@@ -0,0 +1,47 @@
|
||||
# 127 ChartAnnotation 图表标注
|
||||
|
||||
## 用途
|
||||
|
||||
在图表上显示水平线、垂直线、区间带和文字标注,可选择开启移动。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
notes := []mujica.ChartNote{{Kind: mujica.NoteHLine, Value: 50, Text: "Goal", Draggable: true}, {Kind: mujica.NoteBand, Value: 6, End: 8, Text: "Lent"}}
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
x := mujica.ChartAxis(c, mujica.ChartAxisOptions{Max: 10})
|
||||
y := mujica.ChartAxis(c, mujica.ChartAxisOptions{Side: mujica.SideLeft, Max: 100})
|
||||
annotation := mujica.ChartAnnotation(c, notes, mujica.ChartAnnotationOptions{X: &x, Y: &y})
|
||||
box := ui.Box(c).Fill().Focusable().Label("Annotations")
|
||||
b := box.Bounds()
|
||||
annotation.Drag(box, ui.Rect{X: 60, Y: 20, W: b.W - 80, H: b.H - 60})
|
||||
box.Draw(func(p *ui.Painter, r ui.Rect) {
|
||||
plot := ui.Rect{X: r.X + 60, Y: r.Y + 20, W: r.W - 80, H: r.H - 60}
|
||||
x.Draw(p, plot)
|
||||
y.Draw(p, plot)
|
||||
annotation.Draw(p, plot)
|
||||
})
|
||||
}
|
||||
ui.Render(view, 400, 300, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
`notes []ChartNote`:`Kind` 默认为 `NoteHLine`;`Value` 是水平线 Y 或其他标注 X;`End` 是带末端 X 或文字 Y;`Text` 是文案;`Draggable` 默认 false。`X, Y` 均必填;坐标必须有限,带需要 End > Value,文字需要非空 Text。
|
||||
|
||||
## 状态
|
||||
|
||||
先绘制区间带,再绘制线和文字;可移动线带有菱形手柄。祖先禁用阻止移动。
|
||||
|
||||
## 事件
|
||||
|
||||
`Drag(element, plot)` 处理指针和键盘,修改原切片并返回是否发生变化。`Draw` 绘制当前标注。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Tab 聚焦宿主图表;Alt+PageUp/PageDown 选择可移动标注;Alt+方向键每次移动轴跨度的 1/100。选中说明和变化会被朗读。
|
||||
|
||||
## 限制
|
||||
|
||||
Drag 的 plot 是元素局部坐标;Draw 的 plot 是窗口坐标。标注切片由调用方持有;移动后调用方负责业务保存。
|
||||
@@ -0,0 +1,45 @@
|
||||
# 128 ChartExport 图表导出
|
||||
|
||||
## 用途
|
||||
|
||||
以当前窗口主题离屏绘制图表,返回 PNG 字节,供调用方保存或传输。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
data, err := mujica.ChartExport(c, func(c *ui.Context) {
|
||||
mujica.SparkBar(c, []float64{3, -2, 5}, mujica.SparkBarOptions{Frame: mujica.ChartFrame{Label: "Alms"}})
|
||||
}, mujica.ChartExportOptions{Width: 300, Height: 100, Scale: 2})
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
bitmap, err := ui.DecodeBitmap(data)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
ui.Image(c, bitmap).Size(300, 100)
|
||||
}
|
||||
ui.Render(view, 400, 160, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
`chart func(*ui.Context)` 必填;`Width, Height int` 为正 DIP 尺寸;有限 `Scale float32` 默认 2,负值 panic。
|
||||
|
||||
## 状态
|
||||
|
||||
沿用当前主题、密度、本地化、自定义 token 和桌面偏好。导出过程为同步渲染。
|
||||
|
||||
## 事件
|
||||
|
||||
返回 `([]byte, error)`;PNG 编码错误直接返回调用方。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
导出触发按钮由调用方提供,支持 Enter 和 Space。
|
||||
|
||||
## 限制
|
||||
|
||||
图表回调应独立渲染,复用调用方数据;调用方在用户触发导出时调用以控制开销。组件只返回字节。
|
||||
@@ -0,0 +1,36 @@
|
||||
# 129 ViolinPlot 小提琴图
|
||||
|
||||
## 用途
|
||||
|
||||
比较多组样本的核密度轮廓,中位数以菱形标记,四分位以粗条表示。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
groups := []mujica.BoxGroup{{Name: "Choir", Values: []float64{1, 2, 3, 4, 7, 9}}, {Name: "Nave", Values: []float64{2, 4, 5, 6, 8}}}
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
mujica.ViolinPlot(c, groups, mujica.ViolinPlotOptions{Frame: mujica.ChartFrame{Label: "Hymns"}, Bandwidth: 1})
|
||||
}
|
||||
ui.Render(view, 400, 300, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
`groups []BoxGroup`:唯一非空 Name 与样本 Values;NaN 为缺值,无穷值 panic。`Frame` 指定名称、高度、状态和占位文案。有限 `Bandwidth` 默认 0,按组自动估计;负值 panic。`Format` 自定义数值读数。
|
||||
|
||||
## 状态
|
||||
|
||||
默认、悬停、键盘读数、加载、错误、空数据、祖先禁用。单值或相同值样本保留密度轮廓。
|
||||
|
||||
## 事件
|
||||
|
||||
`ChartResult.Point` 为组索引;`Changed()` 表示读数组变化;`Retried()` 表示重试。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Tab 聚焦;方向键逐组读取中位数和四分位;Home/End 首尾;Escape 清除读数。
|
||||
|
||||
## 限制
|
||||
|
||||
每组轮廓使用 64 个采样点;大量组按像素位置抽样绘制,当前读数组保留。排序和核密度在样本切片身份或带宽变化时计算;更新数据需替换切片。
|
||||
@@ -0,0 +1,38 @@
|
||||
# 130 ParallelCoordinates 平行坐标
|
||||
|
||||
## 用途
|
||||
|
||||
在多条平行轴间展示每行数值;轴上刷选筛除行,当前读数行用粗线高亮。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
filters := map[string][2]float64{}
|
||||
axes := []string{"Age", "Hymns", "Vigils"}
|
||||
rows := [][]float64{{20, 3, 9}, {35, 8, 2}, {50, 5, 5}}
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
mujica.ParallelCoordinates(c, &filters, axes, rows, mujica.ParallelCoordinatesOptions{Frame: mujica.ChartFrame{Label: "Monks"}, Names: []string{"Agnes", "Clare", "Hild"}})
|
||||
}
|
||||
ui.Render(view, 400, 300, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
`filters *map[string][2]float64` 必填,键为轴名,值为有限递增范围。`axes []string` 至少两个唯一非空名称;每行长度与轴数一致。NaN 为缺值。`Names` 为逐行名称,nil 显示序号。`Frame` 与 `Format` 同其他图表。
|
||||
|
||||
## 状态
|
||||
|
||||
默认、高亮、筛除、加载、错误、空数据、祖先禁用;筛除行的读数附带本地化文字。
|
||||
|
||||
## 事件
|
||||
|
||||
`Changed()` 表示读数行变化;`ValueChanged()` 表示刷选范围变化;`Retried()` 表示重试。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Tab 聚焦;方向键逐行读数;Home/End 首尾。Alt+PageUp/PageDown 选择轴;Alt+上下调整下端;Alt+Shift+上下调整上端;Alt+Delete 清除该轴刷选。
|
||||
|
||||
## 限制
|
||||
|
||||
指针拖动轴设置范围,轴上点击清除范围。100,000 行绘制数量受图表高度约束,键盘可读取全部行。范围与过滤仅在数据或筛选变化时计算;更新数据需替换外层 rows 切片。
|
||||
@@ -0,0 +1,37 @@
|
||||
# 131 ChordDiagram 弦图
|
||||
|
||||
## 用途
|
||||
|
||||
以组弧和弦带展示关系矩阵,悬停或键盘读数组时高亮相关连线。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
names := []string{"Nave", "Choir", "Crypt"}
|
||||
matrix := [][]float64{{0, 5, 2}, {4, 0, 1}, {1, 2, 0}}
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
mujica.ChordDiagram(c, names, matrix, mujica.ChordDiagramOptions{Frame: mujica.ChartFrame{Label: "Paths"}})
|
||||
}
|
||||
ui.Render(view, 400, 300, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
`names []string` 为唯一非空组名;`matrix [][]float64` 为同阶方阵,数值须有限且非负。`Frame` 控制名称、尺寸和加载状态。`Format` 自定义关系数值。
|
||||
|
||||
## 状态
|
||||
|
||||
默认、组高亮、弦高亮、加载、错误、空矩阵、祖先禁用;对角线值形成自身关系。
|
||||
|
||||
## 事件
|
||||
|
||||
`Point` 先枚举组,再枚举关系;`Changed()` 表示读数变化;`Retried()` 表示重试。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Tab 聚焦;方向键依次读取组的流入流出与关系值;Home/End 首尾;Escape 清除。
|
||||
|
||||
## 限制
|
||||
|
||||
高密度矩阵按绘图区半径抽样绘制弦带,当前键盘关系保留;布局仅在外层 matrix 切片身份变化时计算。更新数据需替换外层切片。组弧标签在有足够空间时展示,完整名称始终包含在键盘读数中。
|
||||
@@ -0,0 +1,36 @@
|
||||
# 132 SparkBar 迷你柱
|
||||
|
||||
## 用途
|
||||
|
||||
行内展示正负数值柱,零线区分方向,末项以强调颜色和菱形标记。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
values := []float64{3, -2, 4, 1, -3}
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
mujica.SparkBar(c, values, mujica.SparkBarOptions{Frame: mujica.ChartFrame{Label: "Alms"}, BarWidth: 10})
|
||||
}
|
||||
ui.Render(view, 400, 100, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
`values []float64`:有限数值,NaN 表示缺值。`Frame.Label` 必填;`Frame.Height` 默认 28 DIP。`Frame.Status`、`Error`、`Empty` 控制占位。`BarWidth` 默认 6 DIP,负值 panic;整体宽度受窗口限制。`Format` 自定义读数。
|
||||
|
||||
## 状态
|
||||
|
||||
默认显示末值;悬停或聚焦显示当前点。加载、错误与空数据保持绘图区尺寸;祖先禁用阻止操作。
|
||||
|
||||
## 事件
|
||||
|
||||
返回 `ChartResult`,`Point` 为当前索引,`Changed()` 表示读数变化,`Retried()` 表示重试。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Tab 聚焦;左右箭头逐点读数并朗读;Home/End 到首尾;Escape 恢复末值。
|
||||
|
||||
## 限制
|
||||
|
||||
大数据按像素列保留首、极值和末项,绘制数量受宽度约束。数据范围与抽样缓存按切片身份更新;更换数据时替换切片。
|
||||
@@ -0,0 +1,35 @@
|
||||
# 133 TrendIndicator 趋势指示
|
||||
|
||||
## 用途
|
||||
|
||||
以方向箭头、带符号数值和无障碍方向文字展示指标变化。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
mujica.TrendIndicator(c, 12.5, mujica.TrendIndicatorOptions{Precision: 1, Unit: "%", Note: "vs Lent"})
|
||||
}
|
||||
ui.Render(view, 400, 100, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
`change float64` 必须有限;`Precision` 默认 0,负值 panic;`Unit` 和 `Note` 默认空;`Invert` 默认 false,开启后下降采用成功语义;`Format` 替换数值格式。
|
||||
|
||||
## 状态
|
||||
|
||||
上升、下降、持平;正负号与箭头提供颜色之外的区分;方向词支持中英文和消息覆盖。
|
||||
|
||||
## 事件
|
||||
|
||||
返回 `*ui.Element`,展示调用方提供的变化值。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
展示部件;辅助技术读取方向和完整变化值。
|
||||
|
||||
## 限制
|
||||
|
||||
变化值由调用方计算;组件提供显示和语义颜色。
|
||||
@@ -0,0 +1,36 @@
|
||||
# 138 DensityPlot 密度图
|
||||
|
||||
## 用途
|
||||
|
||||
将多组样本的高斯核密度曲线叠加在同一坐标域,以形状和颜色区分序列。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
groups := []mujica.BoxGroup{{Name: "Matins", Values: []float64{1, 2, 2, 3, 7}}, {Name: "Vespers", Values: []float64{3, 4, 5, 6, 6}}}
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
mujica.DensityPlot(c, groups, mujica.DensityPlotOptions{Frame: mujica.ChartFrame{Label: "Ages"}, Bandwidth: 1, Points: 128})
|
||||
}
|
||||
ui.Render(view, 400, 300, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
`groups []BoxGroup` 为唯一非空组名和样本;NaN 为缺值。有限 `Bandwidth` 默认 0,按组自动估计;负值 panic。`Points` 默认 128,显式值须至少 2。`Frame` 和 `Format` 控制图表与密度读数。
|
||||
|
||||
## 状态
|
||||
|
||||
默认、序列显隐、悬停、键盘读数、加载、错误、空数据、祖先禁用。
|
||||
|
||||
## 事件
|
||||
|
||||
`Changed()` 表示采样位置变化;`Toggled()` 表示序列显隐;`Retried()` 表示重试。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Tab 先到图例,再到图表;图例 Space 切换显隐;图表方向键读取共享 X 位置的各组密度;Home/End 首尾;Escape 清除。
|
||||
|
||||
## 限制
|
||||
|
||||
核密度计算在数据、带宽或 Points 变化时执行;绘制曲线按像素列抽样。100,000 个样本默认生成每组 128 个密度点。更新数据需替换样本切片。
|
||||
@@ -0,0 +1,35 @@
|
||||
# 140 ChartEmptyState 图表占位
|
||||
|
||||
## 用途
|
||||
|
||||
在图表无数据、加载或失败时保持图表尺寸,并在失败时提供重试。
|
||||
|
||||
## 最小示例
|
||||
|
||||
```go
|
||||
view := func(c *ui.Context) {
|
||||
mujica.Use(c, mujica.Settings{})
|
||||
mujica.ChartEmptyState(c, mujica.DataFailed, mujica.ChartEmptyStateOptions{Height: 180, Error: "The archive did not answer"})
|
||||
}
|
||||
ui.Render(view, 400, 240, 1)
|
||||
```
|
||||
|
||||
## 参数
|
||||
|
||||
`status DataStatus`:DataReady 显示空数据,DataLoading 显示加载,DataFailed 显示错误和重试;其他有效加载状态同样显示加载。`Height` 默认 240 DIP,负值 panic;`Error`、`Empty` 默认内置本地化文案。
|
||||
|
||||
## 状态
|
||||
|
||||
空数据、加载、错误;祖先禁用保持展示并阻止重试;减少动画显示静态加载说明。
|
||||
|
||||
## 事件
|
||||
|
||||
返回 `ChoiceResult`,`Changed()` 表示点击重试,数据请求由调用方执行。
|
||||
|
||||
## 键盘操作
|
||||
|
||||
Tab 聚焦重试;Enter 或 Space 触发一次重试。
|
||||
|
||||
## 限制
|
||||
|
||||
只管理占位展示和事件;数据和异步状态由调用方维护。
|
||||
Reference in new issue
Block a user