палитра разброса matplotlib создает странные визуальные артефакты

Я пытаюсь добавить цветовую шкалу к трехмерной диаграмме рассеяния. Это действительно работает, за исключением того, что при последующих вызовах функции цветовая шкала оставляет старые метки галочки на экране и записывает новые метки поверх них, превращая метки в визуальные спагетти. Вызов cbar.ax.clear () не помогает. Кроме того, на графике не отображаются метки X, Y и Z, и есть едва заметный кусок текста, выглядывающий из-под края холста. Я уверен, что делаю что-то в неправильном порядке, но не могу понять, что именно.

def mplPlotColorCloud(figure, canvas, vals, xlabel, ylabel, zlabel):
xvect = [val[0] for val in vals]
yvect = [val[1] for val in vals]
zvect = [val[2] for val in vals]
valvect = [val[3] for val in vals]
ax = figure.add_subplot(111, projection='3d')
# discards the old graph
ax.hold(False)
ax.set_xlabel(xlabel)
ax.set_ylabel(ylabel)
ax.set_zlabel(zlabel)
cax = ax.scatter(xvect, yvect, zvect, c=valvect, cmap=None)
# Make a colorbar
minval = np.min(valvect)
maxval = np.max(valvect)
if minval != maxval:
    ticks = list(np.linspace(minval, maxval, num=3))
    tickLabels = [str(np.round(x,2)) for x in ticks]    
    cbar = figure.colorbar(cax, ticks=ticks, orientation='vertical')
    cbar.ax.set_xticklabels(tickLabels)
else:
    figure.colorbar(cax, orientation='vertical')        
canvas.draw()

person user2623722    schedule 18.05.2015    source источник


Ответы (1)


Я понял. вызов figure.clear () перед figure.add_subplot () необходим, чтобы убедиться, что все визуальные артефакты удалены.

person user2623722    schedule 19.05.2015