1. 程式人生 > 程式設計 >Python matplotlib生成圖片背景透明的示例程式碼

Python matplotlib生成圖片背景透明的示例程式碼

使用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' 圖片邊界空白緊緻,背景透明
效

效果可能在網頁上看不出來,但還是把圖片貼上來吧。


以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。