R 绘制几何点和几何线

R 绘制几何点和几何线,r,ggplot2,R,Ggplot2,我正在尝试使用ggplot绘制多行图。我还想在线条上画出一些点(这意味着意义)。问题是,当我使用geom_point时,这些点与我想要的线不重合。以下是数据: dat1: 1-4 2-5 3-6 4-7 5-8 6-9 7-10 id mod1 -0.035930 0.121970 0.34689 0.034345 0.35312 0.52048 0.58536 mod1 mo

我正在尝试使用
ggplot
绘制多行图。我还想在线条上画出一些点(这意味着意义)。问题是,当我使用
geom_point
时,这些点与我想要的线不重合。以下是数据:

dat1: 
                1-4      2-5     3-6      4-7     5-8     6-9    7-10        id
 mod1      -0.035930 0.121970 0.34689 0.034345 0.35312 0.52048 0.58536     mod1
 mod2      -0.094121 0.297150 0.37262 0.512140 0.63918 0.42127 0.73890     mod2
 mod3       0.810550 0.876070 0.57120 0.472640 0.67341 0.79332 0.80882     mod3
 mod4      -0.121970 0.010009 0.49783 0.920100 0.76192 0.45662 0.45526     mod4

dat2:
             1-4     2-5 3-6    4-7     5-8     6-9    7-10        id
 mod1         NaN     NaN NaN    NaN     NaN     NaN     NaN     mod1
 mod2         NaN     NaN NaN    NaN 0.63918     NaN     NaN     mod2
 mod3      0.81055 0.87607 NaN    NaN 0.67341 0.79332 0.80882    mod3
 mod5          NaN     NaN NaN 0.9201 0.76192     NaN     NaN    mod4
dat1 <- read.table(header=TRUE, check.names=FALSE, text="1-4      2-5     3-6      4-7     5-8     6-9    7-10        id
-0.035930 0.121970 0.34689 0.034345 0.35312 0.52048 0.58536     mod1
-0.094121 0.297150 0.37262 0.512140 0.63918 0.42127 0.73890     mod2
 0.810550 0.876070 0.57120 0.472640 0.67341 0.79332 0.80882     mod3
-0.121970 0.010009 0.49783 0.920100 0.76192 0.45662 0.45526     mod4")

dat2 <- read.table(header=TRUE, check.names=FALSE, text="1-4     2-5 3-6    4-7     5-8     6-9    7-10        id
 NaN     NaN NaN    NaN     NaN     NaN     NaN     mod1
 NaN     NaN NaN    NaN 0.63918     NaN     NaN     mod2
 0.81055 0.87607 NaN    NaN 0.67341 0.79332 0.80882    mod3
 NaN     NaN NaN 0.9201 0.76192     NaN     NaN    mod4")
绘图将包含4条线,在带有一些值的模型中,我想用一个点来绘制它们

这是我的尝试:

#Start Plotting
library(ggplot2)
library(reshape2)
dat_r$id <- nam_model  #names of models
dat_r1$id <- nam_model
df <- melt(dat_r,id='id')
df2 <-melt(dat_r1,id='id')

p <-ggplot(df, aes(x=variable,y=value, group=id)) +
     geom_line(aes(color=id), lwd=1) + geom_point(aes(x=df2$variable,y=df2$value,      group=df$id),size = 4)
#开始绘图
图书馆(GG2)
图书馆(E2)
首先读取数据:

dat1: 
                1-4      2-5     3-6      4-7     5-8     6-9    7-10        id
 mod1      -0.035930 0.121970 0.34689 0.034345 0.35312 0.52048 0.58536     mod1
 mod2      -0.094121 0.297150 0.37262 0.512140 0.63918 0.42127 0.73890     mod2
 mod3       0.810550 0.876070 0.57120 0.472640 0.67341 0.79332 0.80882     mod3
 mod4      -0.121970 0.010009 0.49783 0.920100 0.76192 0.45662 0.45526     mod4

dat2:
             1-4     2-5 3-6    4-7     5-8     6-9    7-10        id
 mod1         NaN     NaN NaN    NaN     NaN     NaN     NaN     mod1
 mod2         NaN     NaN NaN    NaN 0.63918     NaN     NaN     mod2
 mod3      0.81055 0.87607 NaN    NaN 0.67341 0.79332 0.80882    mod3
 mod5          NaN     NaN NaN 0.9201 0.76192     NaN     NaN    mod4
dat1 <- read.table(header=TRUE, check.names=FALSE, text="1-4      2-5     3-6      4-7     5-8     6-9    7-10        id
-0.035930 0.121970 0.34689 0.034345 0.35312 0.52048 0.58536     mod1
-0.094121 0.297150 0.37262 0.512140 0.63918 0.42127 0.73890     mod2
 0.810550 0.876070 0.57120 0.472640 0.67341 0.79332 0.80882     mod3
-0.121970 0.010009 0.49783 0.920100 0.76192 0.45662 0.45526     mod4")

dat2 <- read.table(header=TRUE, check.names=FALSE, text="1-4     2-5 3-6    4-7     5-8     6-9    7-10        id
 NaN     NaN NaN    NaN     NaN     NaN     NaN     mod1
 NaN     NaN NaN    NaN 0.63918     NaN     NaN     mod2
 0.81055 0.87607 NaN    NaN 0.67341 0.79332 0.80882    mod3
 NaN     NaN NaN 0.9201 0.76192     NaN     NaN    mod4")
您还可以结合使用
dplyr
tidyr
软件包:

library(dplyr)
library(tidyr)

df1 <- dat1 %>% gather(var, value, 1:7)
df2 <- dat2 %>% gather(var, value, 1:7)
其中:

如果不希望将数据绑定到一个数据帧中,可以使用:

ggplot(data=df1, aes(x=var, y=value, color=id, group=id)) +
  geom_line(lwd=1) + 
  geom_point(data=df2, size=4) +
  scale_x_discrete("\nModels") +
  scale_y_continuous("Value", breaks=c(0,0.2,0.4,0.6,0.8)) +
  theme_bw()

这里有一种可能性:

使用
check.names=FALSE
读取数据,因为变量名在语法上无效

dat1 <- read.table(text = "                1-4      2-5     3-6      4-7     5-8     6-9    7-10        id
 mod1      -0.035930 0.121970 0.34689 0.034345 0.35312 0.52048 0.58536     mod1
 mod2      -0.094121 0.297150 0.37262 0.512140 0.63918 0.42127 0.73890     mod2
 mod3       0.810550 0.876070 0.57120 0.472640 0.67341 0.79332 0.80882     mod3
 mod4      -0.121970 0.010009 0.49783 0.920100 0.76192 0.45662 0.45526     mod4",
                   header = TRUE, check.names = FALSE)

dat2 <- read.table(text = "             1-4     2-5 3-6    4-7     5-8     6-9    7-10        id
 mod1         NaN     NaN NaN    NaN     NaN     NaN     NaN     mod1
 mod2         NaN     NaN NaN    NaN 0.63918     NaN     NaN     mod2
 mod3      0.81055 0.87607 NaN    NaN 0.67341 0.79332 0.80882    mod3
 mod5          NaN     NaN NaN 0.9201 0.76192     NaN     NaN    mod4",
                   header = TRUE, check.names = FALSE)
使用线的数据集和点的数据集进行打印:

library(ggplot2)
ggplot(data = df1m, aes(x = variable, y = value, colour = id, group = id)) +
  geom_line() +
  geom_point(data = df2m, size = 4)


一个小提示:在
aes
调用中,避免使用类似
dataset$variable
的代码(例如
df2$value
)。它可能会导致不必要的行为

您使用的是不同的数据框,用于
geom_line
geom_point
编辑问题并添加一些细节。什么是nam_车型
dat\u r
dat\u r1
来自哪里?酷!非常感谢你的帮助,成功了!情节不错!
library(reshape2)
dat1m <- melt(dat1, id.var = "id")
dat2m <- melt(dat2, id.var = "id")
library(ggplot2)
ggplot(data = df1m, aes(x = variable, y = value, colour = id, group = id)) +
  geom_line() +
  geom_point(data = df2m, size = 4)