Ich versuche, eine Matplotlib-Figur in eine Python Gtk3-Anwendung, die ich schreibe, zu integrieren. Ich möchte die Hintergrundfarbe der Figur transparent machen, so dass die Figur nur gegen den natürlichen grauen Hintergrund der Anwendung erscheint, aber nichts, was ich bisher versucht habe, scheint zu funktionieren.Force Hintergrund der Matplotlib Figur transparent zu sein
Hier ist ein 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()
Wenn die fig.patch.set_alpha(0.0)
Linie unkommentiert ist, die Farbe des Hintergrunds ändert sich nur weiß, sondern grau. Alle Vorschläge sehr geschätzt!
Sind Sie sicher, dass der Hintergrund eines leeren 'Gtk.Window' standardmäßig nicht weiß auf Ihrer Plattform ist? das scheint für mich der Fall zu sein (Unity Desktop). –
Nein, ich habe überprüft und es scheint grau zu sein. Es gelang mir, das Problem mit der Methode 'get_style' des Elternfensters zu umgehen, um die Hintergrundfarbe zu erhalten und sie dann als Facelicolor der Achsen zu setzen. Es ist keine großartige Lösung, aber es funktioniert. – Donagh