explain why par(mar = rep(0, 4)) is necessary before plot.new(), per @wch's suggestion