Sarah Goslee

2017-Dec-04 17:30 UTC

### [R] problem with the behaviour of dashed lines in R plots

Hi, It's because you are plotting a line between each of the points in your data frame, and they are very close together:> cbind(df1$B,predict(regressor,df1))[,1] [,2] 1 1.410832 -13.96466 2 1.589383 -15.21169 3 1.446662 -14.21491 4 1.488665 -14.50826 5 1.487035 -14.49687 6 1.497347 -14.56890 7 1.458070 -14.29458 8 1.568134 -15.06328 9 1.543364 -14.89029 10 1.513473 -14.68152 11 1.465462 -14.34621 12 1.506752 -14.63458 13 1.434703 -14.13139 14 1.584011 -15.17417 15 1.585621 -15.18542 16 1.542410 -14.88362 17 1.430091 -14.09917 18 1.474529 -14.40953 19 1.431341 -14.10790 20 1.425015 -14.06372 If instead you use abline(regressor, lty=2) you will get a nice-looking dashed line. Or, if you want only the data extent, you could use just the points for the minimum and maximum values of x. Sarah On Mon, Dec 4, 2017 at 12:13 PM, jean-philippe <jeanphilippe.fontaine at gssi.infn.it> wrote:> dear R users, > > I am performing a linear regression with lm, and I would like to plot the > regressor in dashed lines. I know that the lty=2 option is the way out, but > it has a very strange behaviour: the line starts dashed but then the spaces > between each dash becomes very tiny and so the line become somehow > continuous for the human eye. Do you know how to fix that problem, in order > to have a dashed line with big enough spaces between the dashes? > Here is a MWE (don't mind if clearly a linear model will not fit these "fake > randomly generated" data). > > Also, changing the plot(...,type="l") to abline(regressor,lty=2,...) helps > and draw a pure dashed line but it is impossible to force it to stay in the > bounds of the data. > Changing to line instead shows the same problem as mentioned here in the > MWE. > > > pdf("reproducableex.pdf") > df1<-data.frame(B=runif(20,1.4,1.6),A=runif(20,-19.5,-9.8)) > regressor<-lm(A~B,data = df1) > plot(df1$B,predict(regressor,df1),type="l", col="black", > mgp=c(2,0.5,0),cex.lab=1.6, lwd=2, > lty=2,xlim=range(c(1.2,1.7)),ylim=rev(range(c(-19,-8)))) > par(new = TRUE) > plot(df1$B,as.numeric(df1$A),type="p", col="black", > mgp=c(2,0.5,0),cex.lab=1.6,cex=2, xlab = "", ylab > "",xlim=range(c(1.2,1.7)),ylim=rev(range(c(-19,-8))),pch=17) > box(lwd=3) > dev.off() > > > Thanks in advance, best regards > > > Jean-Philippe Fontaine >-- Sarah Goslee http://www.functionaldiversity.org

jean-philippe

2017-Dec-04 18:30 UTC

### [R] problem with the behaviour of dashed lines in R plots

hi Sarah, Thanks a lot for having taken time to answer me and for your reply. I wonder how I missed this solution. Indeed plotting the line with the 2 extreme data points works perfectly. Best, Jean-Philippe Fontaine On 04/12/2017 18:30, Sarah Goslee wrote:> It's because you are plotting a line between each of the points in > your data frame, and they are very close togethe-- Jean-Philippe Fontaine PhD Student in Astroparticle Physics, Gran Sasso Science Institute (GSSI), Viale Francesco Crispi 7, 67100 L'Aquila, Italy Mobile: +393487128593, +33615653774