Plots.jl icon indicating copy to clipboard operation
Plots.jl copied to clipboard

[BUG] Plotting images inserts unwanted padding

Open orswan opened this issue 8 months ago • 0 comments

Details

When plotting multiple images, there appears white space in between the images. Simple example:

using Plots, Images
imgs = [zeros(Gray{Float64},64,128) for i=1:4]
plotParams = Dict(
    :size => (800,400),
    :layout => grid(1,4),
    :grid => false)
p = plot([plot(i',aspect_ratio=1,axis=false,size=(800,400)) for i in imgs]...; plotParams...)

Output: annotation_test_2024-6-19

This is fine as default behavior, but there doesn't seem to be a way to eliminate it. If I try e.g. adding negative margins, the images end up on top of each other. Example:

using Plots, Images
imgs = [zeros(Gray{Float64},64,128) for i=1:4]
plotParams = Dict(
    :size => (800,400),
    :layout => grid(1,4),
    :left_margin => (-15.0,:mm),
    :grid => false)
p = plot([plot(i',aspect_ratio=1,axis=false,size=(800,400)) for i in imgs]...; plotParams...)

Output: image

Backends

This bug occurs on ( insert x below )

Backend yes no untested
gr (default) x
pythonplot x
plotlyjs x
pgfplotsx x
unicodeplots x
inspectdr x
gaston x

Versions

Plots.jl version: v1.40.4 Backend version (]st -m <backend(s)>): v0.72.8

Output of versioninfo():

Julia Version 1.10.3
Commit 0b4590a550 (2024-04-30 10:59 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: Windows (x86_64-w64-mingw32)
  CPU: 12 × 12th Gen Intel(R) Core(TM) i5-12450H
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, alderlake)
Threads: 1 default, 0 interactive, 1 GC (on 12 virtual cores)

orswan avatar Jun 19 '24 23:06 orswan