W przypadku nakładających się wykresów rozproszenia o wysokiej gęstości lub linii o różnych kolorach wygodne może być stosowanie schematów mieszania dodatków, w których kolory RGB każdego markera sumują się, tworząc ostateczny kolor w obszarze roboczym. Jest to typowa operacja w silnikach renderowania 2D i 3D.Czy możliwe jest mieszanie dodatków z matplotlib?
Jednak w Matplotlib znalazłem tylko obsługę mieszania alfa/nieprzezroczystości. Czy jest jakiś okrężny sposób robienia tego albo czy utknąłem z renderowaniem do bitmapy, a następnie mieszałem je w jakimś programie do malowania?
Edytuj: Oto przykładowy kod i rozwiązanie ręczne.
To będzie produkować dwa częściowo pokrywające się losowych rozkładów:
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')
To będzie produkować w matplotlib następujące:
Jak widać, istnieje kilka nakładających się niebieskie punkty, które są zamknięte przez czerwone punkty i chcielibyśmy je zobaczyć. Za pomocą alfa/krycie mieszania w matplotlib można zrobić:
scatter(x1,y1,c='b',edgecolors='none',alpha=0.5)
scatter(x2,y2,c='r',edgecolors='none',alpha=0.5)
która będzie produkować co następuje:
Ale to, co naprawdę chcę to:
Mogę to zrobić ręcznie, renderując każdy dział niezależnie do bitmapy:
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)
Który daje mi następujące obrazy:
Co można zrobić potem to załadować je jako niezależne warstwy w Paint.NET/PhotoShop/gimp i dodatku tylko zmieszać je.
Idealnie byłoby móc to zrobić programowo w Matplotlib, ponieważ będę przetwarzał ich setki!
Najprostszym może być wykonanie 2-D histogramu. Pokaż nam przykładowy kod i dane, abyśmy mogli zacząć. –
Dzięki, po prostu dodano przykładowy kod i kroki do ręcznego rozwiązania. – glopes
Dzięki, o wiele lepsze pytanie, zobaczę, co mogę zrobić. –