Python matplotlib生成图片背景透明的示例代码

作者:hfut_jf 时间:2022-07-04 06:22:57 

使用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, 0, 1, 1), edgecolor=(0, 0, 1, 1))

rectsTest2 = ax.bar(ind + width, (testData[1][0], testData[1][1], testData[1][2]), width, color=(1, 0, 0, 1), edgecolor=(1, 0, 0, 1))

rectsTest3 = ax.bar(ind + 2*width, (testData[2][0], testData[2][1], testData[2][2]), width, color=(0, 1, 0, 1), edgecolor=(0, 1, 0, 1))

rectsTest4 = ax.bar(ind + 3*width, (testData[3][0], testData[3][1], testData[3][2]), width, color=(1, 0.6471, 0, 1), edgecolor=(1, 0.6471, 0, 1))

rectsTest5 = ax.bar(ind + 4*width, (testData[4][0], testData[4][1], testData[4][2]), width, color=(0.5804, 0, 0.8275, 1), edgecolor=(0.5804, 0, 0.8275, 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 matplotlib生成图片背景透明的示例代码

来源:https://blog.csdn.net/hfut_jf/article/details/52648033

标签:Python,matplotlib,背景透明
0
投稿

猜你喜欢

  • Javascript: 为<input>设置readOnly属性问题,希望大家以后要小心

    2009-07-23 20:24:00
  • pyramid配置session的方法教程

    2021-04-26 09:23:37
  • Python实现常见的4种坐标互相转换

    2023-11-21 06:22:38
  • 一种弹出提示信息时页面背景色调改变的方法

    2008-12-01 12:22:00
  • 关于vue中element-ui form或table lable换行的问题

    2023-07-02 17:07:31
  • SQL处理多级分类,查询结果呈树形结构

    2012-08-21 10:50:12
  • 基于Python实现西西成语接龙小助手

    2023-04-02 22:12:04
  • JavaScript自定义浏览器滚动条兼容IE、 火狐和chrome

    2024-04-16 09:37:25
  • MySQL中使用FREDATED引擎实现跨数据库服务器、跨实例访问

    2024-01-25 12:55:52
  • sql如何在线创建新表?

    2010-06-22 21:21:00
  • 基于Python编写简易文字语音转换器

    2023-12-28 19:24:54
  • Python日志处理模块logging用法解析

    2021-01-05 14:45:55
  • Django使用unittest模块进行单元测试过程解析

    2021-04-03 13:09:08
  • Python创建模块及模块导入的方法

    2023-04-21 03:42:03
  • python 装饰器功能以及函数参数使用介绍

    2022-04-03 05:12:32
  • 深入理解Python单元测试unittest的使用示例

    2022-03-18 04:51:00
  • 解决python3爬虫无法显示中文的问题

    2022-11-27 15:18:59
  • Python+uiautomator2实现手机锁屏解锁功能

    2021-05-26 23:04:12
  • django使用F方法更新一个对象多个对象字段的实现

    2021-07-20 10:38:42
  • Golang中基于HTTP协议的网络服务

    2024-05-21 10:23:55
  • asp之家 网络编程 m.aspxhome.com