📌  相关文章
📜  绘图上的 matplotlib 徽标图像 - Go 编程语言 - Go 编程语言(1)

📅  最后修改于: 2023-12-03 15:41:15.978000             🧑  作者: Mango

绘图上的 matplotlib 徽标图像 - Go 编程语言

如果你是一个使用 Python 编程语言的数据科学家或者机器学习工程师,那么你一定不会对 Matplotlib 这个绘图库感到陌生。Matplotlib 被认为是 Python 中最基础、最强大的绘图库之一,它能够让你在 Python 代码中实现各种复杂的可视化图形。

也许你已经注意到了,在 Matplotlib 的文档和源代码中,有一个非常有趣的小图标:一个类似于山顶的小鳍。这是 Matplotlib 这个库的徽标图像,它在各种场合和文档中都被使用着。

Matplotlib 徽标图像

然而,在使用 Python 以外的编程语言时,例如 Go 编程语言,很难找到这个小图标的高质量版本。因此,在本文中,我们将为你带来使用 Go 语言中生成 Matplotlib 徽标图像的代码,让你可以在自己的项目中使用。

前置依赖

在编写代码之前,我们需要先安装 Go 语言的两个必要的库:

你可以使用以下命令进行安装:

go get golang.org/x/tools/cmd/godoc
go get github.com/disintegration/imaging
实现代码

在前置依赖安装完成后,我们就可以开始编写代码了。以下是使用 Go 语言生成 Matplotlib 徽标图像的完整代码:

package main

import (
	"fmt"
	"image"
	"image/color"
	"image/jpeg"
	"log"
	"os"

	"github.com/disintegration/imaging"
)

func main() {
	// 创建一个白色底部的图片
	img := imaging.New(200, 200, color.RGBA{255, 255, 255, 255})

	// 定义 logo 图层
	logoLayer := imaging.New(140, 140, color.RGBA{211, 211, 211, 255})

	// 定义山顶图形
	peak := image.Pt(21, 7)
	peakLeft := image.Pt(0, 70)
	peakRight := image.Pt(140, 70)
	mountain := image.Pt(70, 140)

	// 在 logo 图层上绘制山顶图形
	imaging.DrawLine(logoLayer, peakLeft, peak, color.RGBA{169, 50, 38, 255})
	imaging.DrawLine(logoLayer, peakRight, peak, color.RGBA{169, 50, 38, 255})
	imaging.DrawLine(logoLayer, peakLeft, peak, color.RGBA{231, 76, 60, 255})
	imaging.DrawLine(logoLayer, peakRight, peak, color.RGBA{231, 76, 60, 255})
	imaging.DrawLine(logoLayer, peakLeft, mountain, color.RGBA{169, 50, 38, 255})
	imaging.DrawLine(logoLayer, peakRight, mountain, color.RGBA{169, 50, 38, 255})
	imaging.DrawLine(logoLayer, mountain, peak, color.RGBA{231, 76, 60, 255})

	// 在 logo 图层上绘制 "matplotlib" 文字
	imaging.DrawString(logoLayer, "matplotlib", image.Pt(0, 120), color.RGBA{0, 0, 0, 0}, imaging.NewFontFace(imaging.FontCollection()[9], 30))

	// 将 logo 图层贴上白色底部图片
	result := imaging.Paste(img, logoLayer, image.Pt(30, 30))

	// 在命令行中输出图片的 Base64 编码
	jpeg.Encode(os.Stdout, result, nil)
}

代码中,我们使用了 go 中已有的图像库和在生成图片中的处理库。我们通过建立白色,大小为 $200 \times 200$ 的图片,用较浅灰色建立了 140 $\times$ 140 的小 logo 图层。我们用红和橙色绘制了山峰,又用黑色在 logo 图层上画了“matplotlib”字母。

最后,我们将 logo 图层放在白色图片的左上角 $(x,y)=(30, 30)$,返回一个 JPEG 格式的 base64 编码以供使用。

代码执行后,将会返回以下格式的 Base64 编码,你可以通过在线编译器 GoPlay 来运行它:

/9j/4AAQSkZJRgABAQEASABIAAD/4RXERXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAEAAAAAAAD/
*****以下省略*****
YS4xLjEuNzQ3LjMueG1s/wAARCAAfADIDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAQC
CP/EABUBAQEAAAAAAAAAAAAAAAAAAAAC/9oADAMBAAIRAxEAPwDmoAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAD/2gAMAwEAAhEDEQA/APGmwHet0HfdPjOt0W3qals+jeq89/j0HVqIo6IiIoiIgIiIOIBJ6k8+ia
91vOysrZC4jCN5v8Ai4x2fKz/K/2vs9P0fTQAAAAD//yZiYAAAAA///9bIdTQAAAAAAAAAAAAAAOJv5/
amF2YS5oaWdobGlnaHQuY29tAAAAAAAAAAAAAAC9AAAAABhjc3NpAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAAAB
AAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
VVVVVVVVVf/Z%%
结语

在本文中,我们展示了使用 Go 语言实现生成 Matplotlib 徽标图像的代码,并通过返回 Base64 编码的方式,方便你在自己的项目中使用。希望这篇文章能够对你有所帮助。