首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从两列数据框中绘制两条线,并使用ggplot包缩放y轴

如何从两列数据框中绘制两条线,并使用ggplot包缩放y轴
EN

Stack Overflow用户
提问于 2019-04-10 11:46:01
回答 2查看 617关注 0票数 2

我正在尝试比较数据框中两列的值。我想使用ggplot和plot两行来表示第一列中的所有值都大于第二列中的值。

下面是我的df:

代码语言:javascript
运行
复制
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)下面是我用来绘制值的命令:

代码语言:javascript
运行
复制
 matplot(x<- 1:10, cbind(tt[2,],tt[3,]),type="l",col=c("red","green"),lty=c(1,1))

由于数值非常接近,所以我在绘图中看不到很清楚的区别。

我想使用ggplot函数并缩放y轴,这样我就可以更好地看到这两条线的区别。

你知道我该怎么做吗?谢谢

EN

回答 2

Stack Overflow用户

发布于 2019-04-10 12:09:04

您可以将scale_y_continuous()与ggplot中的limits参数一起使用。如果只是出于绘图目的,则不需要转置。考虑到两条线之间的差异,以及y轴上数据点的总跨度,您永远无法真正在不丢失一些数据点的情况下更容易地看到它们之间的差异。您可以尝试在不同颜色的背景上使用不同颜色的线条或线条类型,以使差异更明显?

代码语言:javascript
运行
复制
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")
票数 2
EN

Stack Overflow用户

发布于 2019-04-10 12:49:21

我同意@divibisan的观点,如果差异很重要,那么您应该考虑只绘制差异,这将使您更清楚地看到确切的差异。

代码语言:javascript
运行
复制
library(dplyr)
library(ggplot2)

df %>%
  mutate(diff = C1 - C2) %>%
  ggplot() + aes(factor(C3), diff, group = 1) + geom_line()

您也可以使用geom_point(),但我认为geom_line()更好地传达了这一点。

或者使用基础绘图。

代码语言:javascript
运行
复制
df$diff <- df$C1 - df$C2
plot(df$C3, df$diff, type = "l")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55604476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档