joshuaulrich / xts

Extensible time series class that provides uniform handling of many R time series classes by extending zoo.
http://joshuaulrich.github.io/xts/
GNU General Public License v2.0
219 stars 71 forks source link

Possible regression in plot.xts titles when using layout #412

Closed eddelbuettel closed 9 months ago

eddelbuettel commented 9 months ago

Description

We now see the titles 'chopped off' ie clipped ie parts are outside the visible region. That is new, and a regression.

It does not seem to appear on a single plot but when combined via layout() it clearly is an issue.

image

I have a recurrent cronjob plotting (several pages of) three plot a page to pdf where I noticed it first. It is more prevalent for n=3.

Expected behavior

No clipping, ie see the full text.

Minimal, reproducible example

> x11()
> layout(matrix(1:2,2,1,byrow=TRUE), heights=c(1,1,1,1))
> dang::plotOBOS("SPY")          # simple wrapper to plot.xts with a few bells and whistles, old, unchanged
Registered S3 method overwritten by 'dang':
  method    from
  print.xts xts 
> dang::plotOBOS("QQQ")
> 

Session Info

> sessionInfo()
R version 4.3.2 (2023-10-31)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 23.10

Matrix products: default
BLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.11.0 
LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.11.0

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=en_US.UTF-8       
 [4] LC_COLLATE=en_US.UTF-8     LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                  LC_ADDRESS=C              
[10] LC_TELEPHONE=C             LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

time zone: America/Chicago
tzcode source: system (glibc)

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] RPostgreSQL_0.7-6  DBI_1.2.1          quantmod_0.4.25    TTR_0.24.4         xts_0.13.2        
[6] zoo_1.8-12         data.table_1.14.99

loaded via a namespace (and not attached):
 [1] compiler_4.3.2   tools_4.3.2      parallel_4.3.2   colorout_1.3-0.1 curl_5.2.0      
 [6] grid_4.3.2       dang_0.0.16      jsonlite_1.8.8   lattice_0.22-5   fortunes_1.5-4  
> 
joshuaulrich commented 9 months ago

Thanks for the report! I'll take a look.

Reproducible example below. Note that the header isn't clipped if you make the X11 window larger.

library(xts)
data(sample_matrix)
x <- as.xts(sample_matrix)
x11()
layout(matrix(1:2,2,1,byrow=TRUE), heights=c(1,1,1,1))
plot(x[,1], main="Chopped")
plot(x[,1], main="Clipped")

image

joshuaulrich commented 9 months ago

This should be fixed on the 412-plot-header-clipped branch. Please test and let me know if you find any issues. Thanks!

eddelbuettel commented 9 months ago

Damn straight -- you are correct on the resize. Had not noticed.

So where did behaviour change? In base R? Not so likely? So was this a side-effect from recent cleanup?

eddelbuettel commented 9 months ago

Works like a charm off the designated branch, also with a 3x1 layout:

image

joshuaulrich commented 9 months ago

So was this a side-effect from recent cleanup?

Yeah, I did a significant refactor of all the plot functionality. It was practically necessary in order to get the log y-axis working.

Works like a charm off the designated branch, also with a 3x1 layout

Awesome, thanks for testing that too!