You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matplotlib散点图导出PDF报错:ValueError空数组求最大值

解决Matplotlib散点图导出PDF报错问题

问题原因

这是Matplotlib 3.8.0版本的已知bug:当给plt.scatter()设置ls=""(空字符串)时,导出PDF会触发内部数组运算错误。而plt.plot()因实现逻辑不同不受影响,PNG导出的渲染路径与PDF存在差异,所以不会出现异常。

解决方法

  • 替换合法的无连线参数:将ls=""改为Matplotlib官方认可的ls="none",这是设置无连线的标准写法,修改后可正常导出PDF,同时保留散点标记和数据着色功能:
    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.random.rand(50)
    y = np.random.rand(50)
    colors = np.random.rand(50)
    
    plt.scatter(x, y, c=colors, ls="none")
    plt.savefig("scatter_plot.pdf")
    plt.close()
    
  • 升级Matplotlib版本:如果允许更新依赖,升级到3.8.1及以上版本,该bug已在后续版本中修复,升级后使用ls=""也不会报错:
    pip install --upgrade matplotlib>=3.8.1
    
  • 用plt.plot()模拟散点图(备选):若暂时无法修改参数或升级版本,可通过plt.plot()配合标记样式实现相同效果,同时保留数据着色:
    plt.plot(x, y, 'o', c=colors, ls="none")
    plt.savefig("scatter_plot.pdf")
    plt.close()
    

内容的提问来源于stack exchange,提问作者Erik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 15:49:53