agenis - 1 year ago 124
R Question

# Set axis limits for plot.PCA - strange behaviour (FactoMineR)

I want to plot the result of a PCA with the package factominer. When one plots a PCA it is good practice to resize the graph so that its H/L ratio is in proportion to the %variance explained by each axis.

So I tried first to resize the graph simply by stretching the window: it obviously fails and keep the points in the middle instead of stretching them too.

``````library(FactoMineR)
out <- PCA(mtcars)
``````

Then I try to force the
`xlim`
and
`ylim`
arguments to be fixed (
`?plot.PCA`
)

``````plot.PCA(out, choix="ind", xlim=c(-6,6), ylim=c(-4, 4))
``````

Same problem, the xlim limits are not respected...

Can someone explain this behaviour and knows how to fix it?

What you're seeing is the result of the call to `plot` inside `plot.PCA`:

``````plot(0, 0, main = titre, xlab = lab.x, ylab = lab.y,
xlim = xlim, ylim = ylim, col = "white", asp = 1, ...)
``````

`plot` is called with parameter `asp` set to `1`, which guarantees that the y/x ratio stays the same, so when you try to resize the window, the `xlim` are recomputed.

In `plot.window` you can find the "meaning" of `asp`:

If asp is a finite positive value then the window is set up so that one data unit in the x direction is equal in length to asp * one data unit in the y direction.

You can try

``````plot(0, 0, main = "", xlab = "", ylab = "", xlim = c(-6, 6), ylim = c(-4, 4), col = "white", asp = 1)
``````

and resizing the window, and then the same with

``````plot(0, 0, main = "", xlab = "", ylab = "", xlim = c(-6, 6), ylim = c(-4, 4), col = "white")
``````

to see the difference.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download