go-echarts / go-echarts

🎨 The adorable charts library for Golang

Home Page:https://go-echarts.github.io/go-echarts/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Render time.Duration formatted as reasonable values and not as regular numbers

mitar opened this issue · comments

On my x axis I use time.Duration (duration from the start of the experiment). Currently values are rendered as nanoseconds. Ideally, they would be automatically rounded to some reasonable unit based on max/min of the x axis range. Ideally units would be also shown somewhere.

Bonus: 0 would start completely on the left as there cannot be negative duration.

Screenshot 2024-01-08 at 09-43-31 Awesome go-echarts

Hi @mitar , I'm not quite sure what you meant the x axis with time.Duration.
The xAxis type does have a time options instead.

Type of axis.

Option:

'value' Numerical axis, suitable for continuous data.

'category' Category axis, suitable for discrete category data. Category data can be auto retrieved from series.data.

'time' Time axis, suitable for continuous time series data. As compared to value axis, it has a better formatting for time and a different tick calculation method. For example, it decides to use month, week, day or hour for tick based on the range of span.

'log' Log axis, suitable for log data.

Could you plz provide more details about it? a some showcase is better.

I would hope that the library automatically detects the type of values used:

line := charts.NewLine()
line.SetXAxis([]time.Duration{0, time.Second, 2*time.Second, 3*time.Second})

Currently this renders as above. Ideally, it would render as 0 1 2 3 and unit "seconds" somewhere shown.

Hi @mitar . I see.
Unfortunately, we can't auto detect the data format per to current data types.
IMO, it is not a chart's responsibility to auto format data (convert and change data) by the data type. Even if it could do it, it still needs configs such as format rules (when to change, how to change) either.

If you wanna render data with seconds format, you need convert it to seconds format before you put it into datasets.

The issue is that I do not know how many labels there will be. So I do not know what is the best unit when I feed data to the chart.

Also, is there a way to make the x-axis 0 really start in the corner? I tried setting Min to 0 but it didn't change anything.

The issue is that I do not know how many labels there will be. So I do not know what is the best unit when I feed data to the chart.

I don't understand what you meant here.
If you don't even know what's the best unit. how does chart auto know it ?

Also, is there a way to make the x-axis 0 really start in the corner? I tried setting Min to 0 but it didn't change anything.

and the x-axis config depends on the datasets if you use the category type. Maybe you wanna use it in value

If you don't even know what's the best unit. how does chart auto know it ?

Because it could know how many labels (resolution of labels) it has done.

I will find some way to estimate this on my side. It looks like echarts does not have that either.

and the x-axis config depends on the datasets if you use the category type. Maybe you wanna use it in value ?

That was it. It was taking numbers as categorical. Thank you.