加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python利用matplotlib生成图片背景及图例透明的效果

发布时间:2020-12-17 08:28:03 所属栏目:Python 来源:网络整理
导读:前言 最近工作中遇到一个需求,在使用matplotlib生成图片,想要背景透明,而且图例部分也显示透明效果,通过查找相关资料找到了大概的设置方法,特此记录,方便自己或者有需要的朋友们参考学习。 示例代码 # coding=utf-8 # matplotlib背景透明示例图 # pyth

前言

最近工作中遇到一个需求,在使用matplotlib生成图片,想要背景透明,而且图例部分也显示透明效果,通过查找相关资料找到了大概的设置方法,特此记录,方便自己或者有需要的朋友们参考学习。

示例代码

# coding=utf-8 
# matplotlib背景透明示例图 
# python 3.5 
 
import numpy as np 
import matplotlib.pyplot as plt 
from pylab import mpl 
import scipy.stats as stats 
 
# 设置中文字体 
mpl.rcParams['font.sans-serif'] = ['SimHei'] 
 
 
def autolabel(rects): 
 # attach some text labels 
 for rect in rects: 
  height = rect.get_height() 
  # 设置标注文字及位置 
  ax.text(rect.get_x() + rect.get_width() / 2,0.03 + height,'%.4f' % height,ha='center',va='bottom') 
 
# 数据 
testData = [[0.87,0.40,0.56],[0.97,0.50,0.33],[0.88,0.30,0.44],[0.25,0.23,0.17],[0.73,0.33,0.45]] 
 
N = 3 
width = 0.5 
ind = np.arange(width,width*6*N,width*6) 
 
fig,ax = plt.subplots() 
rectsTest1 = ax.bar(ind,(testData[0][0],testData[0][1],testData[0][2]),width,color=(0,1,1),edgecolor=(0,1)) 
 
rectsTest2 = ax.bar(ind + width,(testData[1][0],testData[1][1],testData[1][2]),color=(1,edgecolor=(1,1)) 
 
rectsTest3 = ax.bar(ind + 2*width,(testData[2][0],testData[2][1],testData[2][2]),1)) 
 
rectsTest4 = ax.bar(ind + 3*width,(testData[3][0],testData[3][1],testData[3][2]),0.6471,1)) 
 
rectsTest5 = ax.bar(ind + 4*width,(testData[4][0],testData[4][1],testData[4][2]),color=(0.5804,0.8275,edgecolor=(0.5804,1)) 
 
ax.set_xlim(0,9.5) 
ax.set_ylim(0,1.4) 
ax.set_ylabel('数值') 
ax.yaxis.grid(True) 
ax.set_xticks(ind + width * 2.5) 
ax.set_xticklabels(('P','R','F')) 
 
# 设置图例 
legend = ax.legend((rectsTest1,rectsTest2,rectsTest3,rectsTest4,rectsTest5),('test1','test2','test3','test4','test5')) 
frame = legend.get_frame() 
frame.set_alpha(1) 
frame.set_facecolor('none') # 设置图例legend背景透明 
 
# 给每个数据矩形标注数值 
autolabel(rectsTest1) 
autolabel(rectsTest2) 
autolabel(rectsTest3) 
autolabel(rectsTest4) 
autolabel(rectsTest5) 
 
plt.savefig('C:/Users/XX/Desktop/test.png',format='png',bbox_inches='tight',transparent=True,dpi=600) # bbox_inches='tight'

图片边界空白紧致,背景透明 

效果可能在网页上看不出来,但还是把图片贴上来吧。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者使用python能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对编程小技巧的支持。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读