> aggregate(dat[, 3:7], by=list(dat$TRT), FUN=mean)
Group.1 DBP1 DBP2 DBP3 DBP4 DBP5
1 A 116.55 113.5 110.70 106.25 101.35
2 B 116.75 115.2 114.05 112.45 111.95
我希望创建一个线条图,x轴是names
(DBP1
,DBP2
,...,DBP5
)。
要清楚,问题是关于将两行数据放入绘图中,而不是如何显示它们(即使用什么线/点/颜色组合)。
答案 0 :(得分:3)
使用dplyr
,tidyr
和ggplot2
数据强>
zz <- "Group.1 DBP1 DBP2 DBP3 DBP4 DBP5
A 116.55 113.5 110.70 106.25 101.35
B 116.75 115.2 114.05 112.45 111.95"
df <- read.table(text = zz, header = TRUE)
加载所需的软件包
library(dplyr)
library(tidyr)
library(ggplot2)
<强>整理强>
df_tidy <- df %>%
gather(key, value, -Group.1)
<强>剧情强>
ggplot(data = df_tidy, aes(x = key, y = value)) +
geom_line(aes(color = Group.1)) +
ylim(90, 120)
<强>输出强>
答案 1 :(得分:1)
第一步:使用melt
包中的reshape2
:
d <- aggregate(
dat[, 3:7],
by=list(dat$TRT),
FUN=mean
)
m <- melt(d
id="TRT",
measure.vars=c("DBP1","DBP2","DBP3","DBP4","DBP5")
)
然后使用
xyplot(m$value~m$variable, type="o", group=m$TRT, auto.key=list(TRUE))
答案 2 :(得分:1)
最简单的可能(??)base-R答案:
dd <- read.table(header=TRUE,text="
Group.1 DBP1 DBP2 DBP3 DBP4 DBP5
A 116.55 113.5 110.70 106.25 101.35
B 116.75 115.2 114.05 112.45 111.95")
matplot()
是绘制多个并行序列的基本函数,但(1)它要求序列在矩阵的列中; (2)它不能处理字符变量,所以你必须删除第一列; (3)如果要将组名称作为轴标签,则必须使用单独的axis()
命令添加该名称。不幸的是,我(我知道)不能仅抑制其中一个轴,所以你必须同时抑制它们(axes=FALSE
),然后手动添加它们。
par(las=1) ## horizontal y-axis labels (cosmetic)
matplot(t(dd[,-1]),type="b",axes=FALSE,
ylab="",ylim=c(90,120),
col=c("red","blue"),pch=16,lty=1)
axis(side=2) ## y-axis (default labels)
axis(side=1,at=1:5,label=names(dd)[-1]) ## x-axis
box() ## bounding box
legend("bottomleft",legend=dd$Group.1,
col=c("red","blue"),lty=1,pch=16)
如果你想省去传奇,好的刻度等,那么只需要matplot(t(dd[,-1]),...)
即可。
答案 3 :(得分:0)
简单的R代码可以是:
A <- c(116.55, 113.5, 110.70, 106.25, 101.35)
B <- c(116.75, 115.2, 114.05, 112.45, 111.95)
plot(A, type="n")
axis(1, at=1:5, labels=c("DBP1","DBP2","DBP3","DBP4","DBP5"))
lines(A, col="blue")
lines(B, col="red")
替代方式:
plot(A, type="l", col="blue")
axis(1, at=1:5, labels=c("DBP1","DBP2","DBP3","DBP4","DBP5"))
lines(B, col="red")
答案 4 :(得分:-2)
一种简单的方法是逐步自定义您的情节。
首先,绘制第一行并指定在绘制x轴时不要这样做。添加第二行。 使用所需的标签添加自定义x轴。 在您刚绘制的值上添加点。
转换为R
:
data <- matrix(c(116.55,113.5,110.7,106.25,101.35,116.75,115.2,114.05,112.45,111.95), nrow=2)
plot(data[1,], type="l", xaxt="n")
axis(1, at=1:5, labels=c("DBP1","DBP2","DBP3","DBP4","DBP5"))
lines(data[2,])
points(data[1,])
points(data[2,])
xaxt="n"
指定您不需要x轴文本。
这是一个很好的参考:http://www.statmethods.net/advgraphs/axes.html
然后,让它美丽!
如果您希望将来采用更简单的方法,这是一个可以改进的基本功能
plot.Custom <- function(yy, xLabels, ...){
plot(yy[1,], type="l", xaxt="n", ...)
axis(1, at=1:dim(yy)[2], labels=xLabels)
for(i in 1:dim(yy)[1]){
lines(yy[i,])
points(yy[i,])
}
}
plot.Custom(data, c("DBP1","DBP2","DBP3","DBP4","DBP5"))