Python将matplotlib结果转为Base64

发布时间:2021-12-03 公开文章

背景

即便解决了Echarts5地理位置可视化,但是自诩极客的本主,始终觉得这样的调用方式有点磕碜,还是想尽可能只使用bokeh库完成一些个性化的可视化方案。就比如前面使用wordcloud结果的转换,接下来则需要实现matplotlib结果的转换。

技术实现

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt

im = plt.figure(figsize=(16, 9))
m= Basemap(llcrnrlon=77, llcrnrlat=14, urcrnrlon=140, urcrnrlat=51, projection='lcc', lat_1=33, lat_2=45, lon_0=100)
# m= Basemap(llcrnrlon=73, llcrnrlat=18, urcrnrlon=135, urcrnrlat=53)
m.drawcountries(linewidth=0.5)
m.drawcoastlines()

from PIL import Image 
from io import BytesIO
import base64


figfile = BytesIO()
im.savefig(figfile, format='png')
figfile.seek(0)  # rewind to beginning of file
figdata_png = base64.b64encode(figfile.getvalue())
img_str = str(figdata_png, "utf-8")

from IPython.display import HTML

HTML('''<img src="data:image/JPEG;base64,{}">'''.format(img_str))

 

结语

事实上面也可以通过plt本地保存图片,再使用PIL转换为Base64,多了一层中间商,要慢不少。下面几期都是围绕着图片的格式转换,适用于不同的场景。接下来,道友将看到各种骚包的LBS可视化操作。