生物信息学生R入门教程–绘图基础

坐标轴,图例,标记与标题

以上基础图像的坐标轴,图例,标记与标题等,大多可以通过下列参数来控制:

参数 描述
main 主标题
sub 副标题
xlab x轴标记
ylab y轴标记
xlim x轴上下限(范围)
ylim y轴上下限

增加一个新的坐标轴使用axis()函数。

参数 描述
side 坐标轴所在的位置,1:下,2:左,3:上,4:右
at 坐标轴具体位置,通常由自动给出。
labels 坐标字符串
pos 坐标轴线所在的行,默认值为重绘所在位置上的原坐标
lty 线型
col 颜色
las 坐标标记与坐标轴方位关系,=0为平等,=2为垂直
lwd.ticks 坐标刻度线宽度
col.ticks 坐标刻度线颜色
> x <- c(1:10)
> y <- x
> z <- 10/x
> op <- par(mar = c(5, 4, 4, 8) + 0.1)  ##右侧多留点空
> plot(x, y, type = "b", pch = 21, col = "red", yaxt = "n", lty = 3, xlab = "", 
+     ylab = "")  ##设置不画纵坐标
> lines(x, z, type = "b", pch = 22, col = "blue", lty = 2)
> axis(2, at = x, labels = x, col.axis = "red", las = 2)  ##绘制左侧纵坐标
> axis(4, at = z, labels = round(z, digits = 2), col.axis = "blue", las = 2, cex.axis = 0.7, 
+     tck = -0.01)  ##绘制右侧坐标
> mtext("y=1/x", side = 4, line = 3, cex.lab = 1, las = 2, col = "blue")  ##右侧坐标加标注
> title("An Example of Creative Axes", xlab = "X values", ylab = "Y=X")  ##为图像加主标题

图10: 主副坐标

> par(op)

坐标轴的刻度只有大刻度,没小细节区分,美中不足。下例就示例如何通过合理使用现有的简单工具完善细节,关键在于巧思。

> plot(x, y, yaxt = "n")
> majorat <- seq(0, 10, by = 2)
> majorlab <- majorat
> axis(2, at = majorat, labels = majorlab)
> minorat <- seq(0, 10, by = 0.4)
> minorat <- minorat[!minorat %in% majorat]
> axis(2, at = minorat, tcl = par("tcl") * 0.5, label = FALSE, lwd = 0, lwd.ticks = 1)

图11: 有细节的坐标轴

图例使用legend()函数控制

参数 描述
x,y 图例所在位置,可以使用”bottom”,”bottomleft”,”left”,”topleft”,”top”,”topright”,”right”,”bottomleft”,”center”来指定。
inset 设置在主绘图边距
title 图例的标题
legend 图例的内容

attach(mtcars)

> boxplot(mpg ~ cyl, main = "Milage by Car Weight", yaxt = "n", xlab = "Milage", 
+     horizontal = TRUE, col = terrain.colors(3))
> legend("topright", inset = 0.05, title = "Number of Cylinders", c("4", "6", 
+     "8"), fill = terrain.colors(3), horiz = TRUE)

图12: 图例

2 thoughts on “生物信息学生R入门教程–绘图基础

  1. 您好!
    我在绘制箱式图时boxplot(Pset, col = cols, ylim = c(0.95,1.22), main = “NUSE”,las = 2),图中细胞名称如MDB-MB-231,会自动变成MDA.MB.231。这该怎么调整?
    非常感谢!

    1. boxplot(Pset, col = cols, ylim = c(0.95,1.22), main = “NUSE”, las = 2, names=c(…, “MDB-MB-231”, …))。中间的…要换成MDB-MB-231前后的相应的名称。

发表评论

电子邮件地址不会被公开。 必填项已用*标注