fixing styling issues w/ the stack bar chart.
This commit is contained in:
parent
34de44488d
commit
a0ea012903
2 changed files with 52 additions and 5 deletions
|
@ -10,6 +10,13 @@ import (
|
||||||
|
|
||||||
func drawChart(res http.ResponseWriter, req *http.Request) {
|
func drawChart(res http.ResponseWriter, req *http.Request) {
|
||||||
sbc := chart.StackedBarChart{
|
sbc := chart.StackedBarChart{
|
||||||
|
Title: "Test Stacked Bar Chart",
|
||||||
|
TitleStyle: chart.StyleShow(),
|
||||||
|
Background: chart.Style{
|
||||||
|
Padding: chart.Box{
|
||||||
|
Top: 40,
|
||||||
|
},
|
||||||
|
},
|
||||||
Height: 512,
|
Height: 512,
|
||||||
XAxis: chart.Style{
|
XAxis: chart.Style{
|
||||||
Show: true,
|
Show: true,
|
||||||
|
|
|
@ -31,6 +31,8 @@ type StackedBarChart struct {
|
||||||
Title string
|
Title string
|
||||||
TitleStyle Style
|
TitleStyle Style
|
||||||
|
|
||||||
|
ColorPalette ColorPalette
|
||||||
|
|
||||||
Width int
|
Width int
|
||||||
Height int
|
Height int
|
||||||
DPI float64
|
DPI float64
|
||||||
|
@ -114,6 +116,7 @@ func (sbc StackedBarChart) Render(rp RendererProvider, w io.Writer) error {
|
||||||
r.SetDPI(sbc.GetDPI(DefaultDPI))
|
r.SetDPI(sbc.GetDPI(DefaultDPI))
|
||||||
|
|
||||||
canvasBox := sbc.getAdjustedCanvasBox(r, sbc.getDefaultCanvasBox())
|
canvasBox := sbc.getAdjustedCanvasBox(r, sbc.getDefaultCanvasBox())
|
||||||
|
sbc.drawCanvas(r, canvasBox)
|
||||||
sbc.drawBars(r, canvasBox)
|
sbc.drawBars(r, canvasBox)
|
||||||
sbc.drawXAxis(r, canvasBox)
|
sbc.drawXAxis(r, canvasBox)
|
||||||
sbc.drawYAxis(r, canvasBox)
|
sbc.drawYAxis(r, canvasBox)
|
||||||
|
@ -126,6 +129,10 @@ func (sbc StackedBarChart) Render(rp RendererProvider, w io.Writer) error {
|
||||||
return r.Save(w)
|
return r.Save(w)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (sbc StackedBarChart) drawCanvas(r Renderer, canvasBox Box) {
|
||||||
|
Draw.Box(r, canvasBox, sbc.getCanvasStyle())
|
||||||
|
}
|
||||||
|
|
||||||
func (sbc StackedBarChart) drawBars(r Renderer, canvasBox Box) {
|
func (sbc StackedBarChart) drawBars(r Renderer, canvasBox Box) {
|
||||||
xoffset := canvasBox.Left
|
xoffset := canvasBox.Left
|
||||||
for _, bar := range sbc.Bars {
|
for _, bar := range sbc.Bars {
|
||||||
|
@ -222,10 +229,43 @@ func (sbc StackedBarChart) drawYAxis(r Renderer, canvasBox Box) {
|
||||||
|
|
||||||
func (sbc StackedBarChart) drawTitle(r Renderer) {
|
func (sbc StackedBarChart) drawTitle(r Renderer) {
|
||||||
if len(sbc.Title) > 0 && sbc.TitleStyle.Show {
|
if len(sbc.Title) > 0 && sbc.TitleStyle.Show {
|
||||||
Draw.TextWithin(r, sbc.Title, sbc.Box(), sbc.styleDefaultsTitle())
|
r.SetFont(sbc.TitleStyle.GetFont(sbc.GetFont()))
|
||||||
|
r.SetFontColor(sbc.TitleStyle.GetFontColor(sbc.GetColorPalette().TextColor()))
|
||||||
|
titleFontSize := sbc.TitleStyle.GetFontSize(DefaultTitleFontSize)
|
||||||
|
r.SetFontSize(titleFontSize)
|
||||||
|
|
||||||
|
textBox := r.MeasureText(sbc.Title)
|
||||||
|
|
||||||
|
textWidth := textBox.Width()
|
||||||
|
textHeight := textBox.Height()
|
||||||
|
|
||||||
|
titleX := (sbc.GetWidth() >> 1) - (textWidth >> 1)
|
||||||
|
titleY := sbc.TitleStyle.Padding.GetTop(DefaultTitleTop) + textHeight
|
||||||
|
|
||||||
|
r.Text(sbc.Title, titleX, titleY)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (sbc StackedBarChart) getCanvasStyle() Style {
|
||||||
|
return sbc.Canvas.InheritFrom(sbc.styleDefaultsCanvas())
|
||||||
|
}
|
||||||
|
|
||||||
|
func (sbc StackedBarChart) styleDefaultsCanvas() Style {
|
||||||
|
return Style{
|
||||||
|
FillColor: sbc.GetColorPalette().CanvasColor(),
|
||||||
|
StrokeColor: sbc.GetColorPalette().CanvasStrokeColor(),
|
||||||
|
StrokeWidth: DefaultCanvasStrokeWidth,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetColorPalette returns the color palette for the chart.
|
||||||
|
func (sbc StackedBarChart) GetColorPalette() ColorPalette {
|
||||||
|
if sbc.ColorPalette != nil {
|
||||||
|
return sbc.ColorPalette
|
||||||
|
}
|
||||||
|
return AlternateColorPalette
|
||||||
|
}
|
||||||
|
|
||||||
func (sbc StackedBarChart) getDefaultCanvasBox() Box {
|
func (sbc StackedBarChart) getDefaultCanvasBox() Box {
|
||||||
return sbc.Box()
|
return sbc.Box()
|
||||||
}
|
}
|
||||||
|
@ -279,8 +319,8 @@ func (sbc StackedBarChart) Box() Box {
|
||||||
dpb := sbc.Background.Padding.GetBottom(50)
|
dpb := sbc.Background.Padding.GetBottom(50)
|
||||||
|
|
||||||
return Box{
|
return Box{
|
||||||
Top: 20,
|
Top: sbc.Background.Padding.GetTop(20),
|
||||||
Left: 20,
|
Left: sbc.Background.Padding.GetLeft(20),
|
||||||
Right: sbc.GetWidth() - dpr,
|
Right: sbc.GetWidth() - dpr,
|
||||||
Bottom: sbc.GetHeight() - dpb,
|
Bottom: sbc.GetHeight() - dpb,
|
||||||
}
|
}
|
||||||
|
@ -288,9 +328,9 @@ func (sbc StackedBarChart) Box() Box {
|
||||||
|
|
||||||
func (sbc StackedBarChart) styleDefaultsStackedBarValue(index int) Style {
|
func (sbc StackedBarChart) styleDefaultsStackedBarValue(index int) Style {
|
||||||
return Style{
|
return Style{
|
||||||
StrokeColor: GetAlternateColor(index),
|
StrokeColor: sbc.GetColorPalette().GetSeriesColor(index),
|
||||||
StrokeWidth: 3.0,
|
StrokeWidth: 3.0,
|
||||||
FillColor: GetAlternateColor(index),
|
FillColor: sbc.GetColorPalette().GetSeriesColor(index),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue