PyQtGraph GLScatterPlotItem: как сделать цвета непрозрачными

В PyQtGraph, GLScatterPlotItem, я хотел бы, чтобы точки не смешивали цвета вместе, когда точки перекрываются. Я хочу видеть ближайшую точку, а не те, что сзади.

Я попросил, чтобы цвета были непрозрачными (альфа = 1,0), но когда точки на графике перекрываются, цвет просто становится пурпурным, даже если все точки в этой области имеют очень похожий цвет.

Вот пример:

plt = gl.GLScatterPlotItem(pos=coords, color = colors, size=5, pxMode=True), где цвета представляют собой своего рода «тепловую карту» в диапазоне от красного до синего.

Сюжет, который я получаю, таков:

Ужасная цветопередача. Почему Пурпурный Повсюду?

Вы можете видеть немного красного, но везде точки действительно перекрываются, цвет становится странным.

С другой стороны, если я сделаю простую модификацию size=1, то цвета будут хорошими, но точки будут крошечными, и их будет трудно увидеть:

Намного лучше цвет, но крошечные точки

Оба раза это одни и те же данные. Вы можете начать видеть немного пурпурного цвета слева и сзади, где плотность точек высока, но в остальном цвета правильные.

Как я могу предотвратить магентификацию моих графиков?

Огромное спасибо!


person caleb c.    schedule 06.05.2016    source источник


Ответы (1)


OpenGL, вероятно, рендерит точки аддитивно и насыщает. Пытаться:

plt.setGLOptions('opaque')

Я тоже столкнулся с этим; параметры по умолчанию хороши для объемных данных, но не подходят для плотных облаков точек с поверхностей. Если вы придумаете что-то еще лучше, то есть локальные патчи с подсветкой, отпишитесь об этом!

person Andrew Wagner    schedule 13.05.2016