Bei überlappenden Streuung- oder Liniendiagrammen unterschiedlicher Farben mit hoher Dichte kann es hilfreich sein, additive Mischschemata zu implementieren, bei denen die RGB-Farben jedes Markers addiert werden, um die endgültige Farbe in der Zeichenfläche zu erzeugen. Dies ist eine gängige Operation in 2D- und 3D-Render-Engines.Ist eine additive Mischung mit Matplotlib möglich?
jedoch in Matplotlib habe ich fand nur Unterstützung für Alpha/Opazität Blending. Gibt es einen Umweg, oder bleibe ich beim Rendern auf Bitmap und mische sie dann in ein Malprogramm?
Edit: Hier ist ein Beispiel-Code und eine manuelle Lösung.
Diese zwei teilweise überlappende Zufallsverteilungen erzeugen wird:
x1 = randn(1000)
y1 = randn(1000)
x2 = randn(1000) * 5
y2 = randn(1000)
scatter(x1,y1,c='b',edgecolors='none')
scatter(x2,y2,c='r',edgecolors='none')
Dies produzieren matplotlib folgendes:
Wie Sie sehen können, gibt es einige überlappende blaue Punkte, die durch verdeckt sind rote Punkte und wir würden sie gerne sehen. alpha/Opazität Durch die Verwendung in matplotlib Mischen, können Sie tun:
scatter(x1,y1,c='b',edgecolors='none',alpha=0.5)
scatter(x2,y2,c='r',edgecolors='none',alpha=0.5)
Welche produzieren die folgende:
Aber was ich wirklich will, ist folgendes:
I kann durch Rendering jeder Parzelle unabhängig in eine Bitmap manuell tun:
xlim = plt.xlim()
ylim = plt.ylim()
scatter(x1,y1,c='b',edgecolors='none')
plt.xlim(xlim)
plt.ylim(ylim)
scatter(x2,y2,c='r',edgecolors='none')
plt.xlim(xlim)
plt.ylim(ylim)
plt.savefig(r'scatter_blue.png',transparent=True)
plt.savefig(r'scatter_red.png',transparent=True)
Welche mir folgende Bilder gibt:
Was tun Sie können dann ist sie als unabhängige Schichten in Paint.NET/PhotoShop/gimp laden und Additiv nur um sie mischen.
Jetzt wäre es ideal, dies programmatisch in Matplotlib zu tun, da ich Hunderte von diesen verarbeiten werde!
Am einfachsten ist es, ein 2D-Histogramm zu erstellen. Bitte zeigen Sie uns einen Beispielcode und Daten, um uns zu starten. –
Danke, nur ein paar Beispielcode und die Schritte für eine manuelle Lösung hinzugefügt. – glopes
Danke, viel bessere Frage jetzt, werde sehen, was ich tun kann. –