vicanso / go-charts

A charts library for Golang

Home Page:https://charts.npmtrend.com/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

backnono opened this issue · comments

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

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

@backnono

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

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

`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)
}

}
`

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

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

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

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