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. 在芸芸众生里,做一个普通的人,享受生命一刹那间的喜悦。那么我们即使不死,也在天堂了。 ——《三毛》

相关推荐

  1. qt 关于设置背景颜色,和背景透明的方法

    2024-04-20 15:10:04       18 阅读
  2. pyqt5制作悬浮且透明控件组】

    2024-04-20 15:10:04       56 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-20 15:10:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-20 15:10:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-20 15:10:04       82 阅读
  4. Python语言-面向对象

    2024-04-20 15:10:04       91 阅读

热门阅读

  1. rpc简介

    2024-04-20 15:10:04       38 阅读
  2. Nginx基础(04)

    2024-04-20 15:10:04       30 阅读
  3. 数据仓库元数据管理

    2024-04-20 15:10:04       28 阅读
  4. MySQL常见故障现象分析及解决办法

    2024-04-20 15:10:04       32 阅读
  5. 红黑树(Red-Black Tree)

    2024-04-20 15:10:04       49 阅读
  6. 由于bug发现的现象

    2024-04-20 15:10:04       38 阅读
  7. void * 指针的作用_C

    2024-04-20 15:10:04       109 阅读