【问题标题】:Upgrading Matplotlib from 1.4.3 to 1.5.0 kills scatter plot将 Matplotlib 从 1.4.3 升级到 1.5.0 会杀死散点图
【发布时间】:2015-12-01 06:21:47
【问题描述】:

我有一个使用 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 的版本说明,看不到任何明显的变化,但想知道是否有其他人遇到过类似的行为?

谢谢,

史蒂夫

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    以下内容非常适合我使用 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()
    

    也许问题是您的轴限制不包含数据点?手动设置散点偏移不会自动重新调整坐标轴。

    如果无法访问其余代码和输入数据,很难猜测问题可能出在哪里。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-15
      • 1970-01-01
      • 2020-07-22
      相关资源
      最近更新 更多