在R中绘制线时出错

在R中绘制线时出错,r,graphics,lines,graphic,R,Graphics,Lines,Graphic,我试图在R上画一些线,但它交换了线。也许是我做错了什么。如果有人能帮我 我拥有的数据帧是: df_sel2 <- read.table(text="knn_sel2 tam_tab V11 3.500000 8 V12 3.740000 64 V13 7.111667 512 V14 25.361667 4096 V15 195.018333 32768", header=TRUE) df_sel4 <- read.table(t

我试图在R上画一些线,但它交换了线。也许是我做错了什么。如果有人能帮我

我拥有的数据帧是:

df_sel2 <- read.table(text="knn_sel2 tam_tab
V11   3.500000       8
V12   3.740000      64
V13   7.111667     512
V14  25.361667    4096
V15 195.018333   32768", header=TRUE)
df_sel4 <- read.table(text="knn_sel4 tam_tab
V11   3.535000       8
V12   3.811667      64
V13   7.193333     512
V14  26.151667    4096
V15 203.636667   32768", header=TRUE)
df_sel8 <- read.table(text="knn_sel8 tam_tab
V11   3.961667       8
V12   4.055000      64
V13   7.538333     512
V14  27.288333    4096
V15 209.646667   32768", header=TRUE)
df_sel32 <- read.table(text="knn_sel32 tam_tab
V11   3.750000       8
V12   5.040000      64
V13   8.581667     512
V14  30.103333    4096
V15 225.441667   32768", header=TRUE)
我得到的结果是:

可以看出,标签“4”位于“32”的位置。 为什么会这样


提前谢谢

问题在于您的
标签=
arguemnt。这是用于重命名级别的。如果要指定顺序,则需要指定
中断=
。使用

scale_linetype_manual("Valor da Seletividade", 
         values=c("solid","dotted","dashed","dotdash"),
         breaks=c("2","4", "8","32"))
当然,使用ggplot更友好的方法是将所有数据合并到一个数据帧中。这里有一种方法

library(dplyr)
sels <- c(2,4,8,32)
mydata <- mget(paste0("df_sel", sels)) %>% 
    Map(data.frame, ., sel=sels) %>% 
    Map(function(x) setNames(x, c("knn","tam_tab", "sel")), .) %>% 
    bind_rows() %>%
    mutate(sel=factor(sel, sels))

“4”>“32”
但是
4这就是问题所在。。。很奇怪,第二部分不起作用。我不知道我是否必须适应它。但实际问题的答案是正确的。@Siqueira我忘了在第二部分的代码中包含dplyr依赖项。我说得更清楚了。但ggplot的秘密在于确保数据整洁。
library(dplyr)
sels <- c(2,4,8,32)
mydata <- mget(paste0("df_sel", sels)) %>% 
    Map(data.frame, ., sel=sels) %>% 
    Map(function(x) setNames(x, c("knn","tam_tab", "sel")), .) %>% 
    bind_rows() %>%
    mutate(sel=factor(sel, sels))
ggplot(mydata, aes(tam_tab , knn, linetype=sel)) + geom_line()