diff --git a/axis.go b/axis.go
index af104a8..762a6a2 100644
--- a/axis.go
+++ b/axis.go
@@ -176,6 +176,7 @@ func (a *axisPainter) Render() (Box, error) {
unit := opt.Unit
if unit <= 0 {
+
unit = ceilFloatToInt(float64(dataCount) / float64(fitTextCount))
unit = chart.MaxInt(unit, opt.SplitNumber)
// 偶数
diff --git a/axis_test.go b/axis_test.go
index a04024d..d0cff41 100644
--- a/axis_test.go
+++ b/axis_test.go
@@ -53,7 +53,7 @@ func TestAxis(t *testing.T) {
}).Render()
return p.Bytes()
},
- result: "",
+ result: "",
},
// 底部x轴文本居左
{
@@ -72,7 +72,7 @@ func TestAxis(t *testing.T) {
}).Render()
return p.Bytes()
},
- result: "",
+ result: "",
},
// 左侧y轴
{
@@ -155,7 +155,7 @@ func TestAxis(t *testing.T) {
}).Render()
return p.Bytes()
},
- result: "",
+ result: "",
},
}
diff --git a/bar_chart_test.go b/bar_chart_test.go
index aec6428..e1522d6 100644
--- a/bar_chart_test.go
+++ b/bar_chart_test.go
@@ -102,7 +102,7 @@ func TestBarChart(t *testing.T) {
}
return p.Bytes()
},
- result: "",
+ result: "",
},
}
diff --git a/chart_option_test.go b/chart_option_test.go
index b7f4e93..ff17750 100644
--- a/chart_option_test.go
+++ b/chart_option_test.go
@@ -204,7 +204,7 @@ func TestLineRender(t *testing.T) {
assert.Nil(err)
data, err := p.Bytes()
assert.Nil(err)
- assert.Equal("", string(data))
+ assert.Equal("", string(data))
}
func TestBarRender(t *testing.T) {
@@ -277,7 +277,7 @@ func TestBarRender(t *testing.T) {
assert.Nil(err)
data, err := p.Bytes()
assert.Nil(err)
- assert.Equal("", string(data))
+ assert.Equal("", string(data))
}
func TestHorizontalBarRender(t *testing.T) {
@@ -326,7 +326,7 @@ func TestHorizontalBarRender(t *testing.T) {
assert.Nil(err)
data, err := p.Bytes()
assert.Nil(err)
- assert.Equal("", string(data))
+ assert.Equal("", string(data))
}
func TestPieRender(t *testing.T) {
diff --git a/echarts_test.go b/echarts_test.go
index dd7562f..2ce1715 100644
--- a/echarts_test.go
+++ b/echarts_test.go
@@ -578,5 +578,5 @@ func TestRenderEChartsToSVG(t *testing.T) {
]
}`)
assert.Nil(err)
- assert.Equal("", string(data))
+ assert.Equal("", string(data))
}
diff --git a/horizontal_bar_chart_test.go b/horizontal_bar_chart_test.go
index 78f3e69..e078c4a 100644
--- a/horizontal_bar_chart_test.go
+++ b/horizontal_bar_chart_test.go
@@ -83,7 +83,7 @@ func TestHorizontalBarChart(t *testing.T) {
}
return p.Bytes()
},
- result: "",
+ result: "",
},
}
for _, tt := range tests {
diff --git a/line_chart_test.go b/line_chart_test.go
index e8bc1d7..e169f90 100644
--- a/line_chart_test.go
+++ b/line_chart_test.go
@@ -117,7 +117,7 @@ func TestLineChart(t *testing.T) {
}
return p.Bytes()
},
- result: "",
+ result: "",
},
{
render: func(p *Painter) ([]byte, error) {
@@ -201,7 +201,7 @@ func TestLineChart(t *testing.T) {
}
return p.Bytes()
},
- result: "",
+ result: "",
},
}
diff --git a/painter.go b/painter.go
index d74b80d..18496fd 100644
--- a/painter.go
+++ b/painter.go
@@ -615,20 +615,6 @@ func (p *Painter) TextFit(body string, x, y, width int, textAligns ...string) ch
return output
}
-func isTick(totalRange int, unit int, index int) bool {
- numTicks := (totalRange / unit) + 1
- step := float64(totalRange-1) / float64(numTicks-1)
- for i := int(float64(index) / step); i < numTicks; i++ {
- value := int((float64(i) * step) + 0.5)
- if value == index {
- return true
- } else if value > index {
- break
- }
- }
- return false
-}
-
func (p *Painter) Ticks(opt TicksOption) *Painter {
if opt.Count <= 0 || opt.Length <= 0 {
return p
@@ -652,7 +638,7 @@ func (p *Painter) Ticks(opt TicksOption) *Painter {
if index < first {
continue
}
- if ! isTick(len(values), unit, index) {
+ if (index-first)%unit != 0 {
continue
}
if isVertical {
@@ -688,13 +674,15 @@ func (p *Painter) MultiText(opt MultiTextOption) *Painter {
}
count := len(opt.TextList)
positionCenter := true
- tickLimit := true
+ showIndex := opt.Unit / 2
if containsString([]string{
PositionLeft,
PositionTop,
}, opt.Position) {
positionCenter = false
count--
+ // 非居中
+ showIndex = 0
}
width := p.Width()
height := p.Height()
@@ -702,7 +690,6 @@ func (p *Painter) MultiText(opt MultiTextOption) *Painter {
isVertical := opt.Orient == OrientVertical
if isVertical {
values = autoDivide(height, count)
- tickLimit = false
} else {
values = autoDivide(width, count)
}
@@ -712,7 +699,7 @@ func (p *Painter) MultiText(opt MultiTextOption) *Painter {
if index < opt.First {
continue
}
- if opt.Unit != 0 && tickLimit && ! isTick(len(opt.TextList)-opt.First, opt.Unit, index-opt.First) {
+ if opt.Unit != 0 && (index-opt.First)%opt.Unit != showIndex {
continue
}
if isTextRotation {
@@ -737,11 +724,7 @@ func (p *Painter) MultiText(opt MultiTextOption) *Painter {
x = 0
}
} else {
- if index == len(opt.TextList) - 1 {
- x = start - box.Width() + 10
- } else {
- x = start - box.Width()>>1
- }
+ x = start - box.Width()>>1
}
x += offset.Left
y += offset.Top
@@ -766,6 +749,7 @@ func (p *Painter) Grid(opt GridOption) *Painter {
x1 := 0
y1 := 0
if isVertical {
+
x0 = v
x1 = v
y1 = height
diff --git a/xaxis.go b/xaxis.go
index 5557015..61698d7 100644
--- a/xaxis.go
+++ b/xaxis.go
@@ -40,7 +40,7 @@ type XAxisOption struct {
FontSize float64
// The flag for show axis, set this to *false will hide axis
Show *bool
- // Number of segments that the axis is split into. Note that this number serves only as a recommendation to avoid writing overlap.
+ // Number of segments that the axis is split into. Note that this number serves only as a recommendation.
SplitNumber int
// The position of axis, it can be 'top' or 'bottom'
Position string
@@ -55,8 +55,6 @@ type XAxisOption struct {
// The offset of label
LabelOffset Box
isValueAxis bool
- // This value overrides SplitNumber, specifying directly the frequency at which the axis is split into, higher numbers result in less ticks
- Unit int
}
const defaultXAxisHeight = 30
@@ -92,7 +90,6 @@ func (opt *XAxisOption) ToAxisOption() AxisOption {
TextRotation: opt.TextRotation,
LabelOffset: opt.LabelOffset,
FirstAxis: opt.FirstAxis,
- Unit: opt.Unit,
}
if opt.isValueAxis {
axisOpt.SplitLineShow = true