将Matplotlib从1.4.3升级到1.5.0会导致散点图失效

时间:2015-12-01 06:21:48

标签: python matplotlib

我有一个使用Matplotlib的实时散点图。我最初创建的散点图是空的,如下所示:

pv.sc = axis.scatter([],[],c=[],s=10, lw=0,cmap=cm)

随着要绘制的数据的更新,我使用set_offsets和set_facecolor更新我正在绘制的值,如下所示:

scalar_value = array(pv.Data[0][1])
scalar_time = array(pv.Data[0][0])
lat,lon,alt = self.InterpGPS(scalar_time)
c_mean = mean(scalar_value)
stdev = std(scalar_value)
pv.sc.set_offsets(zip(lon,lat))
norm = mpl.colors.Normalize(vmin = c_mean, vmax = c_mean+2*stdev, clip = False)
m = mpl.cm.ScalarMappable(norm=norm, cmap=cm)
pv.sc.set_facecolor(m.to_rgba(scalar_value))
pv.sc.set_clim(vmin = c_mean, vmax = c_mean+2*stdev)            

在Matplotlib 1.4.3下,这可以很好地工作,但升级到1.5.0后,颜色图消失了。不会产生错误,只会产生颜色。我查看了Matplotlib的版本说明,看不到任何明显的变化,但是想知道是否有其他人遇到过类似的行为?

谢谢,

史蒂夫

1 个答案:

答案 0 :(得分:0)

以下使用matplotlib 1.5.0完美适合我:

import numpy as np
from matplotlib import pyplot as plt

print(plt.matplotlib.__version__)
# 1.5.0

fig, ax = plt.subplots(1, 1)
ax.set_xlim(0, 1)
ax.set_ylim(0, 1)

sc = ax.scatter([], [], c=[], cmap='coolwarm', vmin=0, vmax=1, s=60)

sc.set_offsets(np.random.rand(2, 100))
sc.set_array(np.random.rand(100))

plt.show()

enter image description here

问题可能是您的轴限制不包含数据点?手动设置散点图偏移不会自动重新缩放轴。

如果没有访问其余代码和输入数据,很难猜出问题可能是什么。