Skip to content

Add an option to plot simple bar charts in a generated column #75

Description

@tdwright

For numeric columns, it would be cool to be able to visualize these as a simple bar chart in a new column.

For instance:

╭─────────┬────────┬────────────────────────────────────────────────────────────╮
│         │        │                                                            │
│ Name    │ Radius │ Radius chart                                               │
│         │        │                                                            │
├─────────┼────────┼────────────────────────────────────────────────────────────┤
│         │        │                                                            │
│ Mercury │ 2439   │ ##                                                         │
│         │        │                                                            │
│ Venus   │ 6052   │ #####                                                      │
│         │        │                                                            │
│ Earth   │ 6371   │ #####                                                      │
│         │        │                                                            │
│ Mars    │ 3389   │ ##                                                         │
│         │        │                                                            │
│ Jupiter │ 69911  │ ########################################################## │
│         │        │                                                            │
│ Saturn  │ 58232  │ ################################################           │
│         │        │                                                            │
│ Uranus  │ 25362  │ #####################                                      │
│         │        │                                                            │
│ Neptune │ 24622  │ ####################                                       │
│         │        │                                                            │
╰─────────┴────────┴────────────────────────────────────────────────────────────╯

This gives a nice quick visual representation of the data in the column. The above example can be achieved with existing functionality by doing something like:

table.Columns.AddGeneratedColumn<int, string>(
	d => {
		var normalized = d / 2400;
		return new string('#', normalized);
	},
	"Radius chart",
	table.Columns["Diameter"]
);

But, since the scope of the lambda here is limited to data from individual rows, we have no way of automagically scaling the chart to an appropriate scale. In the above example, I've hard coded the fact that each unit of width of the bars corresponds to 2400km, but this is not ideal.

In a proper implementation, there would be a quick way of adding a chart column that didn't need the lambda writing out, nor any prior knowledge of the correct scale.

In terms of API design, I imagine users would want the ability to:

  1. override scale
  2. set the bar character
  3. define overall width.

NB: 1 and 3 may not be compatible - what's the most intuitive way of handling this?

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions