本文主要是介绍matplotlib绘图中插入图片,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在使用matplotlib下的pyplot绘图时,有时处于各种原因,需要采用类似贴图的方式,插入外部的图片,例如添加自己的logo,或者其他的图形水印等。
一开始,查找到的资料都是使用imshow,但是这会有带来几个问题,一个是图形的原点发生了变化,另外一个问题就是图形比例也产生了变化,当然最大的问题是图形占据了整个绘图区域,完全喧宾夺主了,与我们设想的只在绘图区域中占据很小的一块不相符。
经过测试,提出了一种“画中画”方式,即在绘图区域中嵌套子绘图区域的方式,实现贴图文件的显示。废话少说,直接丢代码:
import matplotlib.pyplot as plt
import numpy as npdef stdNorm(x):return np.exp(-x**2/2)/np.sqrt(2*np.pi)N=500000
x=np.random.randn(N)
barCnt=500
fig,ax = plt.subplots()
ax.hist(x,bins=barCnt,color='g',density=True)t=np.linspace(-5,5,1000)
f=np.vectorize(stdNorm)
ax.plot(t,f(t),'r',lw=2)
ax.set_xticks(np.linspace(-5,5,11))#贴logo
plt.axes([0.8,0,0.2,0.2]) # 右下方
bgimg=plt.imread("logo1.jpg")
plt.imshow(bgimg,alpha=0.5)
plt.axis("off")
plt.show()
效果如下:
贴图位置取决于 语句:
plt.axes([0.8,0,0.2,0.2]) # 右下方
如果修改为:
plt.axes([0.0,0.8,0.2,0.2]) # 左上方
就是左上方了,其中的四个元素分别表示的是归一化之后,子绘图区域占据父绘图区域的x、y,以及width和height。
演示效果如下:
这篇关于matplotlib绘图中插入图片的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!