用 Matplotlib 绘制一个漂亮的LOGO

作者:阳哥

来源:Python数据之道

大家好,我是阳哥。

大家知道,在利用Python进行数据可视化过程中,基本上是很难绕开 Matplotlib 的,因为 不少其他的可视化库多多少少是建立在 Matplotlib 的基础上的。

edbb2e11c368ce39092355a86536bf33.png
Python绘图库生态

01写在前面

Matplotlib 作为一个基础必备且功能强大的绘图库,很多其他功能库的开发也有不少是建立在 Matplotlib 的基础上的。

因此确实有必要对 Matplotlib 有所了解。

前不久,我跟大家分享了一本不错的书 Scientific Visualization: Python + Matplotlib

这本书的内容还是挺不错的。

今天咱们来学习其中的一个案例,用 Matplotlib 绘制一个 LOGO,效果如下:

8e32a1b04d53c5131689e517bda593ef.png

严格来说,这并不完全是一个 LOGO,可以称之为 “文字轮廓图”,这个效果我觉得还是蛮不错的。

下面咱们来看下这个是怎么做出来的。

02绘图过程

这个图的绘制,只需要用到基础的 numpymatplotlib 库,首先引入这些 Python 库:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patheffects import Stroke, Normal

# # Jupyter Notebook 中需要添加下面的内容
# %matplotlib inline

由于需要显示中文,这里还需要设置下字体的显示,如下:

# 解决 matplotlib 显示中文问题 
plt.rcParams['font.sans-serif'] = ['Alibaba PuHuiTi']  # 指定默认字体
# 解决保存图像是负号 '-' 显示为方块的问题 
plt.rcParams['axes.unicode_minus'] = False

需要注意的是,我这里设置的字体是 Alibaba PuHuiTi,你的电脑上不一定有这个字体,需要替换成自己电脑上已有的中文字体。

完整的代码如下:

fig = plt.figure(figsize=(10, 3))
ax = fig.add_axes([0, 0, 1, 1], frameon=False)
ax.set_xticks([])
ax.set_yticks([])
family = "Alibaba PuHuiTi"
size = 80
cmap = plt.cm.Blues_r
text = "Python数据之道"

for x in np.linspace(0, 1, 20):
    lw, color = x * 225, cmap(1 - x)
    t = ax.text(
        0.5,
        0.45,
        text,
        size=size,
        color="none",
        weight="bold",
        va="center",
        ha="center",
        family=family,
        zorder=-lw,
    )
    t.set_path_effects([Stroke(linewidth=lw + 1, foreground="black")])
    t = ax.text(
        0.5,
        0.45,
        text,
        size=size,
        color='black',  # 中心文字颜色
        weight="bold",
        va="center",
        ha="center",
        family=family,
        zorder=-lw + 1,
    )
    t.set_path_effects([Stroke(linewidth=lw, foreground=color)])
t = ax.text(
    1.0,
    0.01,
    "http://liyangbit.com ",
    va="bottom",
    ha="right",
    size=10,
    color="white",
    family="Alibaba PuHuiTi",
    alpha=0.50,
)

# plt.savefig("./01Practice/Matplotlib/text-outline.pdf")
# plt.savefig("text-outline.pdf")
plt.savefig("text-outline.png")
plt.show()

当然,也可以自行调整字体大小,修改显示颜色等,比如下面的效果:

6c21ac88cc005aab385d6499fbe8bda9.png

怎么样,效果还不错吧,自己动手来试试吧。

相关阅读

大家读完顺手点下右下角的  “在看” ,就是最大的鼓励和支持了。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值