Why you shouldn’t use JPGs for quantitative charts: a case study

March 27, 2009
81 Views

I’m not going to comment on the substance on the Republican “Road To Recovery” shadow budget document: plenty of more suitable forums have done so already. But I do want to use it as an illustration of why you should never use the JPG graphics format (and the jpeg graphics driver in R) for quantitative graphics. Let me pull up one chart, from page 5: I screen-captured that from the PDF file (and saved it as a PNG file for inclusion here: PNG is a lossless format, so you see it exactly as I saw it on my screen). Content…

I'm not going to comment on the substance on the Republican "Road To Recovery" shadow budget document: plenty of more suitable forums have done so already. But I do want to use it as an illustration of why you should never use the JPG graphics format (and the jpeg graphics driver in R) for quantitative graphics. Let me pull up one chart, from page 5:

Jpgchart

I screen-captured that from the PDF file (and saved it as a PNG file for inclusion here: PNG is a lossless format, so you see it exactly as I saw it on my screen). Content aside, that's a pretty awful-looking chart, and it's clearly a graphic that was saved in the JPG file format. See the blurriness around the text, especially between the title and the subtitle? Those are compression artifacts caused by saving the graphic as a JPG. The tick labels, legend, and source reference are basically impossible to read.

Zooming in on the graph doesn't help either — here's another screencapture after using the "Zoom" feature in my PDF viewer (Preview, on a Mac):

Jpggraphlarge
Because this is a JPG, zooming in doesn't make the chart any clearer: actually, it just makes it easier to see the compression artifacts around the lines on the chart itself. (JPG is especially poor at capturing straight lines and blocks of a single color.) Zooming doesn't make the tick marks any easier to read either, mostly because this chart was generated at low resolution and the compression artifacts swamp the small text.

If this chart had been saved as a high-resolution PNG or GIF file, the text and lines would have been much clearer, although with enough zooming you'd still eventually see the individual pixels that make up the chart. If it had been saved in a vector format like PostScript, PDF, or Windows MetaFile and then embedded in the PDF, the chart would remain crystal-clear at all levels of zoom, and would always be clear when printed.