Plots.jl生成透明PDF出现深色竖线问题排查与解决求助
问题分析与解决
成因
这是Plots.jl默认GR后端在PDF矢量输出时的渲染异常:
- 当使用多子图布局且背景设为透明时,左侧子图的垂直网格线元素在GR的PDF渲染逻辑中出现重复绘制或图层叠加错误,导致整数x值(2、4、6、8、10)位置的线条颜色加深。
- PDF作为矢量格式,由阅读器解析图形指令并实时渲染,后端的指令错误会被阅读器识别并显示;而PNG是位图格式,渲染过程直接生成像素,不会触发这类矢量渲染bug。
解决方法
1. 切换至其他后端
Plots.jl的PyPlot、PlotlyJS等后端的PDF渲染逻辑更稳定,可避免该问题:
using Plots pyplot() # 切换到PyPlot后端 x = 1:10 plot(plot([sin, x -> sin(x + 0.25π)], x), plot([sin, x -> sin(x + 0.25π)], x), layout = (1, 2), background_color = :transparent) Plots.savefig("nobackground.pdf")
2. 调整网格线设置
如果不需要垂直网格线,可在左侧子图中关闭垂直网格或仅保留水平网格:
using Plots x = 1:10 # 仅保留水平网格,关闭垂直网格 plot(plot([sin, x -> sin(x + 0.25π)], x, grid=:y), plot([sin, x -> sin(x + 0.25π)], x), layout = (1, 2), background_color = :transparent) Plots.savefig("nobackground.pdf")
也可以直接关闭全部网格:grid=false
3. 更新GR后端
该bug可能已在GR的新版本中修复,在Julia REPL中执行以下命令更新:
] update GR
内容的提问来源于stack exchange,提问作者Cm7F7Bb
相关产品推荐
相关产品推荐

