我正在尝试比较数据框中两列的值。我想使用ggplot和plot两行来表示第一列中的所有值都大于第二列中的值。
下面是我的df:
C1 <- c(-1.363953,4.265514,5.609484,7.524796,2.562210,7.214769, 4.667354,4.950837,4.134733,7.540626)
C2 <- c(-1.541836,4.248582,5.557042,7.475255,2.424585,7.125046,4.524404 4.890195,3.945435,7.488123)
C3 <- seq(1:10)
Name <- paste(letters[1:10])
df <- data.frame(Name = paste(letters[1:10]), C1, C2,C3)
Name C1 C2. C3
a -1.363953 -1.541836 1
b 4.265514 4.248582 2
c 5.609484 5.557042 3
d 7.524796 7.475255 4
e 2.562210 2.424585 5
f 7.214769 7.125046 6
g 4.667354 4.524404 7
h 4.950837 4.890195 8
i 4.134733 3.945435 9
j 7.540626 7.488123 10首先,我对数据进行了转置。tt <- t(df)下面是我用来绘制值的命令:
matplot(x<- 1:10, cbind(tt[2,],tt[3,]),type="l",col=c("red","green"),lty=c(1,1))由于数值非常接近,所以我在绘图中看不到很清楚的区别。

我想使用ggplot函数并缩放y轴,这样我就可以更好地看到这两条线的区别。
你知道我该怎么做吗?谢谢
发布于 2019-04-10 12:09:04
您可以将scale_y_continuous()与ggplot中的limits参数一起使用。如果只是出于绘图目的,则不需要转置。考虑到两条线之间的差异,以及y轴上数据点的总跨度,您永远无法真正在不丢失一些数据点的情况下更容易地看到它们之间的差异。您可以尝试在不同颜色的背景上使用不同颜色的线条或线条类型,以使差异更明显?
ggplot(data = df, aes(x = C3, y = C1))+
scale_y_continuous(limits = c(2.4,7.7))+
geom_line(aes(x = C3, y = C1),colour = "red")+
geom_line(aes(x = C3, y = C2),colour = "green")发布于 2019-04-10 12:49:21
我同意@divibisan的观点,如果差异很重要,那么您应该考虑只绘制差异,这将使您更清楚地看到确切的差异。
library(dplyr)
library(ggplot2)
df %>%
mutate(diff = C1 - C2) %>%
ggplot() + aes(factor(C3), diff, group = 1) + geom_line()

您也可以使用geom_point(),但我认为geom_line()更好地传达了这一点。
或者使用基础绘图。
df$diff <- df$C1 - df$C2
plot(df$C3, df$diff, type = "l")https://stackoverflow.com/questions/55604476
复制相似问题