Matplotlib:如何在 Windows 上使背景透明
Matplotlib: how to make the background transparent on Windows
我需要整个图 window 是 t运行sparent 以便 chrome window,例如,在我的桌面上可以通过图看到,这样我就可以在看到它背后的东西的同时给它加分。
我上面列出的答案正是我想要做的,除了我的交互系统不能与 TK 一起工作。我想使用 Qt5Agg。当我 运行 上面的代码时,系统不会接受它——它说 QT5 当前是 运行ning。如果我 运行 它没有加载 QT,它会创建一个空白 t运行sparent window (耶!)但是如果我移动它或单击图标它会变成不透明的黑色没有任何情节.如果我将 tk 更改为 Qt5,它会在电梯上抱怨。如果我删除“win”代码,它就没有 t运行sparency(显然)。我已经尝试添加所有我能想到的东西来使 canvas t运行sparent 并且我可以更改颜色但不能使其成为 t运行sparent.
import matplotlib
# make sure Tk backend is used
matplotlib.use("TkAgg")
import matplotlib.pyplot as plt
# create a figure and some subplots
fig, ax = plt.subplots(figsize=(4,2))
ax.plot([2,3,5,1])
fig.tight_layout()
win = plt.gcf().canvas.manager.window
win.lift()
win.attributes("-topmost", True)
win.attributes("-transparentcolor", "white")
plt.show()
当我进行以下建议的更改时:eyllanesc
我在 vanilla Spyder 4.1.3 内找到了 | Python 3.7.7 64 位 | Qt 5.9.6 | PyQt5 5.9.2 | Windows10
为了导入QtCore
我必须先
conda install pyqt
不够,那就conda install pyqt5
还有conda update --all
当我这样做时,代码 运行 没有错误。 这是一个更好的第一个结果!,但我仍然只得到冻结的 mpl.fig window。然而,这一次,它是白色的。 . .控制台 returns,但 mpl window 挂起。 运行 又是一个新的冻结 window。重新启动并再次 运行:相同的结果。
我希望这是一个简单的错误;请新手指教
@eyllanesc
已修订:Python 屏幕跟踪应用程序 – 主要需要 t运行sparent plot window。
我需要整个情节 window 是 t运行sparent 以便 chrome window,例如,在我的桌面上可以通过情节看到,这样我就可以添加 plot (x, y) 指向它,同时查看它背后的内容。
添加命令 win.setWindowFlags(QtCore.Qt.FramelessWindowHint)
确实使 window 变为 运行sparent,但它使工具栏变为 t运行sparent,去掉了标题栏,并删除了移动或调整 window 大小的功能。它还使图形区域对鼠标不敏感,除非我越界。我将 facecolor 属性添加到 subplots 命令,这样我就可以看到发生了什么。只要我为 fig-alpha 或 ax-alpha 设置一个 non-zero 值,图形就会对整个区域的鼠标敏感。
我需要能够移动和调整 window 的大小,并且希望工具栏不透明或至少对整个工具栏上的鼠标敏感。你能帮忙吗?感谢过去的帮助!
## Python Code Fragment by Helen for Windows 10
## to test sequence creating plot with transparent
## background (to be used to trace and record xy pairs)
from PyQt5 import QtCore
import matplotlib
matplotlib.use("Qt5Agg") #define backend, must be before pyplot is imported
import matplotlib.pyplot as plt
# create a figure and a subplot
fig,ax = plt.subplots(figsize=(4, 2),facecolor=(1.,1.,0.,0.1)) #facecolor of figure
fig.patch.set_alpha(0.1)
ax.patch.set_alpha(0.1)
# plot some fixed points
ax.plot([2, 3, 5, 1])
fig.tight_layout()
#make window transparent to the desktop
win = plt.gcf().canvas.manager.window
win.setAttribute(QtCore.Qt.WA_NoSystemBackground, True)
win.setAttribute(QtCore.Qt.WA_TranslucentBackground, True)
win.setStyleSheet("background:transparent")
win.setWindowFlags(QtCore.Qt.FramelessWindowHint)
win.setWindowTitle("My App")
plt.show()
您必须使用 Qt 标志,已在 Linux:
上测试
from PyQt5 import QtCore
import matplotlib
# make sure Tk backend is used
matplotlib.use("Qt5Agg")
import matplotlib.pyplot as plt
# create a figure and some subplots
fig, ax = plt.subplots(figsize=(4, 2))
fig.patch.set_alpha(0.0)
ax.patch.set_alpha(0.0)
ax.plot([2, 3, 5, 1])
fig.tight_layout()
win = plt.gcf().canvas.manager.window
win.setAttribute(QtCore.Qt.WA_NoSystemBackground, True)
win.setAttribute(QtCore.Qt.WA_TranslucentBackground, True)
win.setStyleSheet("background:transparent")
plt.show()
我需要整个图 window 是 t运行sparent 以便 chrome window,例如,在我的桌面上可以通过图看到,这样我就可以在看到它背后的东西的同时给它加分。
我上面列出的答案正是我想要做的,除了我的交互系统不能与 TK 一起工作。我想使用 Qt5Agg。当我 运行 上面的代码时,系统不会接受它——它说 QT5 当前是 运行ning。如果我 运行 它没有加载 QT,它会创建一个空白 t运行sparent window (耶!)但是如果我移动它或单击图标它会变成不透明的黑色没有任何情节.如果我将 tk 更改为 Qt5,它会在电梯上抱怨。如果我删除“win”代码,它就没有 t运行sparency(显然)。我已经尝试添加所有我能想到的东西来使 canvas t运行sparent 并且我可以更改颜色但不能使其成为 t运行sparent.
import matplotlib
# make sure Tk backend is used
matplotlib.use("TkAgg")
import matplotlib.pyplot as plt
# create a figure and some subplots
fig, ax = plt.subplots(figsize=(4,2))
ax.plot([2,3,5,1])
fig.tight_layout()
win = plt.gcf().canvas.manager.window
win.lift()
win.attributes("-topmost", True)
win.attributes("-transparentcolor", "white")
plt.show()
当我进行以下建议的更改时:eyllanesc
我在 vanilla Spyder 4.1.3 内找到了 | Python 3.7.7 64 位 | Qt 5.9.6 | PyQt5 5.9.2 | Windows10
为了导入QtCore
我必须先
conda install pyqt
不够,那就
conda install pyqt5
还有
conda update --all
当我这样做时,代码 运行 没有错误。 这是一个更好的第一个结果!,但我仍然只得到冻结的 mpl.fig window。然而,这一次,它是白色的。 . .控制台 returns,但 mpl window 挂起。 运行 又是一个新的冻结 window。重新启动并再次 运行:相同的结果。
我希望这是一个简单的错误;请新手指教
@eyllanesc
已修订:Python 屏幕跟踪应用程序 – 主要需要 t运行sparent plot window。
我需要整个情节 window 是 t运行sparent 以便 chrome window,例如,在我的桌面上可以通过情节看到,这样我就可以添加 plot (x, y) 指向它,同时查看它背后的内容。
添加命令 win.setWindowFlags(QtCore.Qt.FramelessWindowHint)
确实使 window 变为 运行sparent,但它使工具栏变为 t运行sparent,去掉了标题栏,并删除了移动或调整 window 大小的功能。它还使图形区域对鼠标不敏感,除非我越界。我将 facecolor 属性添加到 subplots 命令,这样我就可以看到发生了什么。只要我为 fig-alpha 或 ax-alpha 设置一个 non-zero 值,图形就会对整个区域的鼠标敏感。
我需要能够移动和调整 window 的大小,并且希望工具栏不透明或至少对整个工具栏上的鼠标敏感。你能帮忙吗?感谢过去的帮助!
## Python Code Fragment by Helen for Windows 10
## to test sequence creating plot with transparent
## background (to be used to trace and record xy pairs)
from PyQt5 import QtCore
import matplotlib
matplotlib.use("Qt5Agg") #define backend, must be before pyplot is imported
import matplotlib.pyplot as plt
# create a figure and a subplot
fig,ax = plt.subplots(figsize=(4, 2),facecolor=(1.,1.,0.,0.1)) #facecolor of figure
fig.patch.set_alpha(0.1)
ax.patch.set_alpha(0.1)
# plot some fixed points
ax.plot([2, 3, 5, 1])
fig.tight_layout()
#make window transparent to the desktop
win = plt.gcf().canvas.manager.window
win.setAttribute(QtCore.Qt.WA_NoSystemBackground, True)
win.setAttribute(QtCore.Qt.WA_TranslucentBackground, True)
win.setStyleSheet("background:transparent")
win.setWindowFlags(QtCore.Qt.FramelessWindowHint)
win.setWindowTitle("My App")
plt.show()
您必须使用 Qt 标志,已在 Linux:
上测试from PyQt5 import QtCore
import matplotlib
# make sure Tk backend is used
matplotlib.use("Qt5Agg")
import matplotlib.pyplot as plt
# create a figure and some subplots
fig, ax = plt.subplots(figsize=(4, 2))
fig.patch.set_alpha(0.0)
ax.patch.set_alpha(0.0)
ax.plot([2, 3, 5, 1])
fig.tight_layout()
win = plt.gcf().canvas.manager.window
win.setAttribute(QtCore.Qt.WA_NoSystemBackground, True)
win.setAttribute(QtCore.Qt.WA_TranslucentBackground, True)
win.setStyleSheet("background:transparent")
plt.show()