I think I started to notice this issue with plots when I updated to version 12.3 a couple weeks ago but didn't pay too much attention. Now it's really bugging me because I have a presentation of this data coming up. (Please note I changed the code a bit for privacy but it still shows the behaviour.)

Looking at other PlotLabel
posts on SE and the docs, I'm a bit confused as to why the plot label isn't sitting neatly above the plot as expected. I tried a couple of tweaks with ImagePadding
etc. and tried removing all the graphics options except PlotLabel
to no avail. I don't really want to use Labelled
either since it should be working more predictably in my opinion.
Any ideas? Is there an explanation for this? Is anyone else seeing this behaviour in 12.3 with PlotLabel
?
MakeTimeSeriesGraphic[ds_] :=
Module[{tally, g, prod, dates},
prod = ds[1] // Values // First;
dates = FromDateString[#, DateFormat -> "ISODate"] & /@ (ds[All, "date"] // Normal);
tally = Tally[dates];
g = TimeSeries[tally, {dateStart, dateEnd}, MissingDataMethod -> {"Constant", 0 }];
DateListPlot[
g,
PlotTheme -> "Scientific",
GridLines -> Automatic,
PlotLabel -> Style[prod, "Subitem"],
PlotStyle -> SelectColor,
PlotRange -> All,
ImagePadding -> {{Automatic, Automatic}, {Automatic, 1}}
]
]
Block[{var},
var = Table[MakeTimeSeriesGraphic[data[i]], {i, Length@data}];
GraphicsGrid[
Partition[var, 4],
ImageSize -> 960,
Spacings -> Scaled[0.01],
Frame -> All
]
]
GraphicsGrid::list: {} is not a list of lists.
when running your code on 12.3 $\endgroup$dates
code was missing. Should work now with some synthetic data in intoTally
. $\endgroup$data
. MWE should be self contained to be to run it. $\endgroup$GraphicsGrid
. Essentially, the issue is thatPlotLabel
is placed outside of theImagePadding
, but is included inImagePadding
when measuring it. This means thatGraphicsGrid
leaves enough space forPlotLabel
with theImagePadding
setting, but it then gets placed outside anyway. Until they fix it, I you can use either the topFrameLabel
instead ofPlotLabel
, or you can tryResourceFunction["PlotGrid"]
(which can add the grid however) $\endgroup$PlotGrid
cannot add the gridlines) $\endgroup$