Dear friends,
For those of you that are still having some problems making chart in R, here’s an example for QQ plot
. I made it steps.
1. Read data
Use your own data.
QQTest <- read.table(file="QQTest.dat",sep=",",head=TRUE)
2. Make a QQplot
qqnorm(QQTest$vals)
3. Annotate the plot
qqnorm(QQTest$vals,
main="Normal Q-Q Plot of ...",
xlab="Observed",
ylab="Modeled")
4. Make the same x and y limit
qqnorm(QQTest$vals,
main = "Normal Q-Q Plot of ...",
xlab = "Observed",
ylab = "Modeled",
xlim = c(-3, 3),
ylim = c(-3, 3))
5. Change to +
symbol
qqnorm(QQTest$vals,
main = "Normal Q-Q Plot of ...",
xlab = "Observed",
ylab = "Modeled",
xlim = c(-3, 3),
ylim = c(-3, 3),
pch = "+")
Add the QQ line
qqline(QQTest$vals, col = "blue", lwd = 2, lty = 2)
Or make it red
qqline(QQTest$vals, col = "red", lwd = 2, lty = 2)
Or make it not dotted
qqline(QQTest$vals, col = "blue", lwd = 2, lty = 1)
Or make it thinner
qqline(QQTest$vals, col = "blue", lwd = 1, lty = 1)
6. Add the grid
qqnorm(QQTest$vals,
main = "Normal Q-Q Plot of ...",
xlab = "Observed",
ylab = "Modeled",
xlim = c(-3, 3),
ylim = c(-3, 3),
pch = "+",
panel.first = grid(7, lty = 1, lwd = 2))
Not good right?
Try this one
qqnorm(QQTest$vals,
main = "Normal Q-Q Plot of ...",
xlab = "Observed",
ylab = "Modeled",
xlim = c(-3, 3),
ylim = c(-3, 3),
pch = "+")
abline(v=(seq(-3, 3, by=1)), col="lightgray", lty="dotted")
abline(h=(seq(-3, 3, by=1)), col="lightgray", lty="dotted")
7. Make two columns plot: side by side
First delete your old plot using plot.new()
then change the layout
plot.new()
par(mfrow=c(2, 1))
Make the left plot
qqnorm(QQTest$vals,
main = "Upper Plot -> Normal Q-Q Plot of ...",
xlab = "Observed",
ylab = "Modeled",
xlim = c(-3, 3),
ylim = c(-3, 3),
pch = "+")
abline(v=(seq(-3, 3, by=1)), col="lightgray", lty="dotted")
abline(h=(seq(-3, 3, by=1)), col="lightgray", lty="dotted")
Then make the right plot
qqnorm(QQTest$vals,
main = "Right Plot -> Normal Q-Q Plot of ...",
xlab = "Observed",
ylab = "Modeled",
xlim = c(-3, 3),
ylim = c(-3, 3),
pch = "+")
abline(v=(seq(-3, 3, by=1)), col="lightgray", lty="dotted")
abline(h=(seq(-3, 3, by=1)), col="lightgray", lty="dotted")
Or make it two rows: upper and lower
plot.new()
par(mfrow=c(1, 2))
Make the upper plot
qqnorm(QQTest$vals,
main = "Upper Plot -> Normal Q-Q Plot of ...",
xlab = "Observed",
ylab = "Modeled",
xlim = c(-3, 3),
ylim = c(-3, 3),
pch = "+")
abline(v=(seq(-3, 3, by=1)), col="lightgray", lty="dotted")
abline(h=(seq(-3, 3, by=1)), col="lightgray", lty="dotted")
Then make the lower plot
qqnorm(QQTest$vals,
main = "Lower Plot -> Normal Q-Q Plot of ...",
xlab = "Observed",
ylab = "Modeled",
xlim = c(-3, 3),
ylim = c(-3, 3),
pch = "+")
abline(v=(seq(-3, 3, by=1)), col="lightgray", lty="dotted")
abline(h=(seq(-3, 3, by=1)), col="lightgray", lty="dotted")
There you go. You make more tweaks it based on your needs. You can also use a specific package with specific style like: lattice
or ggplot2
. Make sure you read the documentation first, as each package may have different commands, but the basic principle is the same.
Good luck.
@dasaptaerwin
No comments:
Post a Comment