matplotlib散射色条会产生奇怪的视觉伪影

时间:2015-05-18 15:33:18

标签: matplotlib scatter colorbar

我正在尝试将颜色条添加到三维散点图中。它实际上是有效的,除了在后续调用函数时,colorbar在屏幕上留下旧的刻度标签并在其上面写上新标签,将标签变成可视意大利面。调用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()

1 个答案:

答案 0 :(得分:0)

我明白了。在使用figure.add_subplot()之前调用figure.clear()是为了确保所有可视化工件都被删除。