Я пытаюсь удалить наложения цветов, возникающие при рисовании трехмерных полос с помощью GLBarGraphItem. Вот мой код:
from pyqtgraph.Qt import QtCore, QtGui
import pyqtgraph.opengl as gl
import numpy as np
import pyqtgraph as pg
from itertools import groupby
#pg.setConfigOptions(antialias=False)
mainList = [['BM', 'Butterfly', 'E-shop', '1400'],
['BM', 'Butterfly', 'Fler', '2450'],
['BM', 'Butterfly', 'Holesovice', '2450'],
['Climbing presents', 'Ear-rings', 'Holesovice', '136'],
['Climbing presents', 'Other jewellery', 'E-shop', '160'],
['Climbing presents', 'Other jewellery', 'Other', '112'],
['PP', 'Skirts', 'Fler', '1380'],
['PP', 'Skirts', 'Holesovice', '1320'],
['PP', 'Skirts', 'Sashe', '450'],
['PP', 'Bags', 'E-shop', '2500'],
['PP', 'Skirts', 'E-shop', '5600'],
['PP', 'Dresses', 'Other', '6551'],
['Mar', 'Dresses', 'Holesovice', '1000'],
['Mar', 'Skirts', 'Holesovice', '3000'],
['Mar', 'Ear-rings', 'Holesovice', '2000']]
app = QtGui.QApplication([])
w = gl.GLViewWidget()
w.opts['distance'] = 50
w.showMaximized()
w.setWindowTitle('pyqtgraph example: GLViewWidget')
ax = gl.GLAxisItem()
ax.setSize(10,10,10)
w.addItem(ax)
labels = dict(zip(list(set([x[0] for x in mainList])), [2*i for i,j in enumerate(list(set([x[0] for x in mainList])))]))
shops = dict(zip(list(set([x[2] for x in mainList])), [2*i for i,j in enumerate(list(set([x[2] for x in mainList])))]))
items = dict(zip(list(set([x[1] for x in mainList])), [2*i for i,j in enumerate(list(set([x[1] for x in mainList])))]))
emptyL = []
for index, row in enumerate(mainList):
label = labels.get(row[0])
shop = shops.get(row[2])
if index != 0 and mainList[index-1][0] == mainList[index][0] and mainList[index-1][2] == mainList[index][2]:
emptyL.append([[label, shop, float(mainList[index-1][3])/1000]])
else:
emptyL.append([[label, shop, 0]])
colors = {}
for i in items.keys():
a = round(5*np.random.rand()*np.random.rand(),2)
b = round(5*np.random.rand()*np.random.rand(),2)
c = round(5*np.random.rand()*np.random.rand(),2)
d = round(5*np.random.rand()*np.random.rand(),2)
colors[i] = (a,b,c,d)
for index, row in enumerate(emptyL):
size = np.empty((1,1,3))
size[...,0:2] = 1
size[...,2] = float(mainList[index][3])/1000
bg = gl.GLBarGraphItem(np.array([row]), size)
bg.setColor(colors[mainList[index][1]])
w.addItem(bg)
if __name__ == '__main__':
import sys
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
QtGui.QApplication.instance().exec_()
Здесь ниже изображена проблема, описанная выше:
Я не уверен, как происходит это наложение цветов. Я пытался поиграть с сглаживанием без какого-либо успеха Кто-нибудь может подсказать, где может быть потенциальная проблема?