Skip to content

Commit b38f188

Browse files
committed
Horizontal Bar Chart: only accept a single Y Axis
Because of the horizontal layout two Y axis's do not make sense for this chart. Prior to this API change it would result in a confusing / bugged chart if a second Y-Axis is specified.
1 parent 36b9d8a commit b38f188

File tree

6 files changed

+32
-38
lines changed

6 files changed

+32
-38
lines changed

charts.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -434,13 +434,21 @@ func Render(opt ChartOption, opts ...OptionFunc) (*Painter, error) {
434434

435435
// horizontal bar chart
436436
if len(horizontalBarSeriesList) != 0 {
437+
var yAxis YAxisOption
438+
if len(opt.YAxis) > 0 {
439+
if len(opt.YAxis) > 1 {
440+
return nil, errors.New("horizontal bar chart only accepts a single Y-Axis")
441+
}
442+
yAxis = opt.YAxis[0]
443+
}
444+
437445
handler.Add(func() error {
438446
_, err := newHorizontalBarChart(p, HorizontalBarChartOption{
439447
Theme: opt.Theme,
440448
Font: opt.Font,
441449
BarHeight: opt.BarHeight,
442450
BarMargin: opt.BarMargin,
443-
YAxis: opt.YAxis,
451+
YAxis: yAxis,
444452
StackSeries: opt.StackSeries,
445453
}).render(renderResult, horizontalBarSeriesList)
446454
return err

examples/horizontal_bar_chart-2/main.go

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,9 @@ func main() {
3838
opt.Legend.Data = []string{
3939
"2011", "2012",
4040
}
41-
opt.YAxis = []charts.YAxisOption{
42-
{
43-
Data: []string{
44-
"UN", "Brazil", "Indonesia", "USA", "India", "China", "World",
45-
},
41+
opt.YAxis = charts.YAxisOption{
42+
Data: []string{
43+
"UN", "Brazil", "Indonesia", "USA", "India", "China", "World",
4644
},
4745
}
4846

examples/horizontal_bar_chart-3/main.go

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,9 @@ func main() {
4444
"2011", "2012",
4545
}
4646
opt.XAxis.Show = charts.False()
47-
opt.YAxis = []charts.YAxisOption{
48-
{
49-
Data: []string{
50-
"UN", "Brazil", "Indonesia", "USA", "India", "China", "World",
51-
},
47+
opt.YAxis = charts.YAxisOption{
48+
Data: []string{
49+
"UN", "Brazil", "Indonesia", "USA", "India", "China", "World",
5250
},
5351
}
5452

examples/multiple_charts-2/main.go

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -70,11 +70,9 @@ func main() {
7070
"2011", "2012",
7171
},
7272
},
73-
YAxis: []charts.YAxisOption{
74-
{
75-
Data: []string{
76-
"USA", "India", "China", "World",
77-
},
73+
YAxis: charts.YAxisOption{
74+
Data: []string{
75+
"USA", "India", "China", "World",
7876
},
7977
},
8078
SeriesList: charts.NewSeriesListHorizontalBar([][]float64{

horizontal_bar_chart.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ func NewHorizontalBarChartOptionWithData(data [][]float64) HorizontalBarChartOpt
1919
Padding: defaultPadding,
2020
Theme: GetDefaultTheme(),
2121
Font: GetDefaultFont(),
22-
YAxis: make([]YAxisOption, sl.getYAxisCount()),
2322
ValueFormatter: defaultValueFormatter,
2423
}
2524
}
@@ -43,8 +42,8 @@ type HorizontalBarChartOption struct {
4342
SeriesLabelPosition string
4443
// XAxis are options for the x-axis.
4544
XAxis XAxisOption
46-
// YAxis are options for the y-axis (at most two).
47-
YAxis []YAxisOption
45+
// YAxis are options for the y-axis.
46+
YAxis YAxisOption
4847
// Title are options for rendering the title.
4948
Title TitleOption
5049
// Legend are options for the data legend.
@@ -193,7 +192,7 @@ func (h *horizontalBarChart) Render() (Box, error) {
193192
seriesList: opt.SeriesList,
194193
stackSeries: flagIs(true, opt.StackSeries),
195194
xAxis: &h.opt.XAxis,
196-
yAxis: opt.YAxis,
195+
yAxis: []YAxisOption{opt.YAxis},
197196
title: opt.Title,
198197
legend: &h.opt.Legend,
199198
valueFormatter: opt.ValueFormatter,

horizontal_bar_chart_test.go

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,9 @@ func makeBasicHorizontalBarChartOption() HorizontalBarChartOption {
2828
"2011", "2012",
2929
},
3030
},
31-
YAxis: []YAxisOption{
32-
{
33-
Data: []string{
34-
"Brazil", "Indonesia", "USA", "India", "China", "World",
35-
},
31+
YAxis: YAxisOption{
32+
Data: []string{
33+
"Brazil", "Indonesia", "USA", "India", "China", "World",
3634
},
3735
},
3836
}
@@ -43,12 +41,10 @@ func makeMinimalHorizontalBarChartOption() HorizontalBarChartOption {
4341
{12, 24},
4442
{24, 48},
4543
})
46-
opt.YAxis = []YAxisOption{
47-
{
48-
Show: False(),
49-
Data: []string{
50-
"A", "B",
51-
},
44+
opt.YAxis = YAxisOption{
45+
Show: False(),
46+
Data: []string{
47+
"A", "B",
5248
},
5349
}
5450
opt.XAxis.Show = False()
@@ -81,11 +77,9 @@ func makeFullHorizontalBarChartStackedOption() HorizontalBarChartOption {
8177
Legend: LegendOption{
8278
Data: dataLabels,
8379
},
84-
YAxis: []YAxisOption{
85-
{
86-
Data: []string{
87-
"1", "2", "3", "4", "5", "6", "7", "8",
88-
},
80+
YAxis: YAxisOption{
81+
Data: []string{
82+
"1", "2", "3", "4", "5", "6", "7", "8",
8983
},
9084
},
9185
}
@@ -101,7 +95,6 @@ func TestNewHorizontalBarChartOptionWithData(t *testing.T) {
10195

10296
assert.Len(t, opt.SeriesList, 2)
10397
assert.Equal(t, ChartTypeHorizontalBar, opt.SeriesList[0].Type)
104-
assert.Len(t, opt.YAxis, 1)
10598
assert.Equal(t, defaultPadding, opt.Padding)
10699

107100
p := NewPainter(PainterOptions{})
@@ -181,7 +174,7 @@ func TestHorizontalBarChart(t *testing.T) {
181174
opt := makeBasicHorizontalBarChartOption()
182175
opt.Title.Show = False()
183176
opt.XAxis.Show = False()
184-
opt.YAxis[0].Show = False()
177+
opt.YAxis.Show = False()
185178
opt.Legend.Show = False()
186179
opt.BarHeight = 1000
187180
return opt

0 commit comments

Comments
 (0)