go-charts icon indicating copy to clipboard operation
go-charts copied to clipboard

可以设置图片的清晰度吗,我感觉图片的清晰度不是很高

Open backnono opened this issue 3 years ago • 7 comments

backnono avatar Oct 10 '22 08:10 backnono

我生成的柱状图,感觉太糊了 image

backnono avatar Oct 10 '22 08:10 backnono

image

backnono avatar Oct 10 '22 09:10 backnono

@backnono

  1. 图片不清晰有代码不?是不是字体库的问题
  2. 字体不能设置是指字体大小吗?label的字体大小现在是不支持设置

vicanso avatar Oct 10 '22 12:10 vicanso

图片的清晰度可能是字体库的问题,我还没尝试,但是整体感觉图片的清晰度不是很高,生成的图片毕竟只有10+kb, 柱状图y轴和饼图上的字体都不能设置

backnono avatar Oct 11 '22 06:10 backnono

`func BarChart() { values := [][]float64{ { 2.0, 20.9, 7656.0, }, } // 字体文件需要自行下载 // https://github.com/googlefonts/noto-cjk buf, err := ioutil.ReadFile("./NotoSansSC[wght].ttf") if err != nil { panic(err) } err = charts.InstallFont("noto", buf) if err != nil { panic(err) } p, err := charts.BarRender( values, charts.XAxisDataOptionFunc([]string{ "张三", "李四", "王五", }), charts.FontFamilyOptionFunc("noto"), charts.LegendLabelsOptionFunc([]string{ "Rainfall", "Evaporation", }, charts.PositionRight), charts.MarkLineOptionFunc(0, charts.SeriesMarkDataTypeAverage), charts.MarkPointOptionFunc(0, charts.SeriesMarkDataTypeMax, charts.SeriesMarkDataTypeMin), // custom option func func(opt *charts.ChartOption) { fmt.Println(opt) opt.SeriesList[0].MarkPoint = charts.NewMarkPoint( charts.SeriesMarkDataTypeMax, charts.SeriesMarkDataTypeMin, ) opt.SeriesList[0].MarkLine = charts.NewMarkLine( charts.SeriesMarkDataTypeAverage, ) }, func(opt *charts.ChartOption) { opt.BarWidth = 30 //opt.XAxis.FontSize = 15 opt.XAxis.FontColor = drawing.ColorBlack }, ) if err != nil { panic(err) }

buf, err = p.Bytes()
if err != nil {
	panic(err)
}
err = writeFile(buf, "bar-chart.png")
if err != nil {
	panic(err)
}

} `

backnono avatar Oct 11 '22 06:10 backnono

image 这个纵坐标多少k这样的数值,能调整吗,直接7.1k直接用7100展示

backnono avatar Oct 11 '22 06:10 backnono

字体不清楚的问题,字体库选择bold类型的即可。至于7.1k展示为7100暂时坐标轴的值未支持自定义,后续版本优化

vicanso avatar Oct 11 '22 12:10 vicanso

@backnono 已支持自定义Y轴的值展示,自定义转换函数即可:

func(opt *charts.ChartOption) {
	opt.ValueFormatter = func(f float64) string {
		// 自定义将f(float64)转换为string即可
		return ""
	}
},

vicanso avatar Nov 08 '22 12:11 vicanso