Pyqt5中设置matplotlib绘图区背景透明

Pyqt5中设置matplotlib绘图区背景透明

一、前言

最近组里接了学校的某项目,作者是团队里面负责做前端展示的,但是说实话,感觉QT做前端展示真不是很方便,开发过程中遇到不少棘手的问题。

其中一个卡了我一段时间的是界面画图表时设置图表的透明度,我尝试了不少网络上的方法,有不少都是错的,实现不了功能,导致界面很丑,我给个样图:

在这里插入图片描述
我画了个雷达图,我窗口背景是绿色的,但是matplotlib的Figure画布是白色底色的,这跟背景格格不入,于是我想更改其背景颜色或透明度。

二、失败的尝试

  • 尝试一

    我按照别人教程所说,利用下面的代码,设置FigureCanvasQTAgg对象的属性实现透明

    self.canvas.setStyleSheet("background-color: rgba(0, 0, 0, 0);")  # 设置透明背景
    
  • 尝试二

    第二次尝试,依然失败,因为坐标区域ax的方法fill其设置的ahpha值是针对绘图时候封闭区域透明度设置的

    ax.fill(angles, values, alpha=0.2)
    

    比如上面雷达图,设置上面的参数后,是如下效果:

在这里插入图片描述

  • 尝试三

    这一次,网友们说要在开始创建时通过设置facecolor以及alpha值来调整透明度

    self.figure = plt.figure(facecolor='skyblue', alpha=0)
    

    可是实测这就是瞎扯,看效果

在这里插入图片描述

尝试了这么多方法都成功不了,肺都要气炸了😡😡😡😡😡😡😡😡😡😡😡😡😡😡

三、苦后甘甜

经过多次尝试逐渐把他们摸索明白了,具体的设置项如下

  • 设置绘制的图像本身透明

    ax.plot(angles, values, 'o-', linewidth=2, alpha=0)
    

在这里插入图片描述

  • 设置画布透明

    self.figure.patch.set_alpha(0)
    

在这里插入图片描述

  • 设置绘图区域透明

    ax.patch.set_alpha(0)
    

在这里插入图片描述

  • 设置边框透明

    • 极坐标:这里的polar表示极坐标

      ax.spines['polar'].set_alpha(0)
      

    在这里插入图片描述

    • 直角坐标:下面的代码循环分别设置直角坐标上下左右的边框透明度

      for spine in ax.spines.values():
          spine.set_alpha(0)
      

    在这里插入图片描述

  • 设置绘图内容封闭区域或波形区域透明度

    ax.fill(angles, values, alpha=0.5)
    
    • 封闭区域区域 在这里插入图片描述
    • 折线区域
      在这里插入图片描述
  • 设置网格线透明度

    ax.xaxis.grid(True, color='gray', linestyle='--', alpha=0)  # 设置网格线透明度
    ax.yaxis.grid(True, color='gray', linestyle='--', alpha=1)
    

在这里插入图片描述

四、心灵的救赎

  1. 什么都无法舍弃的人,什么都无法实现。 ——《进击的巨人》
  2. 人人都知道没有圆满,但是期待圆满,就是关于遗憾最浪漫的答案。 ——《奇葩说7》
  3. 只有你的快乐和幸福不附属于任何人或物的时候,你才真正自由。否则,无论你被关在监狱里还是走在大街上,你依然是自己的囚犯。 《心灵午夜密谈》
  4. 在芸芸众生里,做一个普通的人,享受生命一刹那间的喜悦。那么我们即使不死,也在天堂了。 ——《三毛》
  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值