我想在我正在編寫的Python Gtk3應用程序中包含一個matplotlib圖。我想將圖形的背景顏色設置爲透明,以便該圖形只顯示與應用程序的自然灰色背景相對應的內容,但目前爲止我嘗試過的任何內容似乎都無法正常工作。強制matplotlib圖背景爲透明
下面是一個MWE:
from gi.repository import Gtk
import matplotlib.pyplot as plt
import matplotlib.lines as mlines
import numpy as np
from matplotlib.backends.backend_gtk3agg import FigureCanvasGTK3Agg as FigureCanvas
class MyWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self)
fig, ax = plt.subplots()
#fig.patch.set_alpha(0.0)
x,y = np.array([[0, 1], [0, 0]])
line = mlines.Line2D(x, y, c='#729fcf')
ax.add_line(line)
plt.axis('equal')
plt.axis('off')
fig.tight_layout()
sw = Gtk.ScrolledWindow()
sw.set_border_width(50)
canvas = FigureCanvas(fig)
sw.add_with_viewport(canvas)
layout = Gtk.Grid()
layout.add(sw)
self.add(layout)
win = MyWindow()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()
如果fig.patch.set_alpha(0.0)
行註釋掉,背景的顏色只是改變爲白色,而不是灰色的。所有建議非常感謝!
您確定在您的平臺上默認情況下,空的'Gtk.Window'背景不是白色嗎?這似乎是我的情況(Unity桌面)。 –
不,我查了一下,它似乎是灰色的。我設法解決了這個問題,使用父窗口的get_style方法來獲取背景顏色,然後將其設置爲軸的面部顏色。這不是一個很好的解決方案,但它的工作原理。 – Donagh