2017-04-11 44 views
0

我想绘制R上的一些线,但它会交换线。也许这是我做错了。如果有人能帮助我。在R中绘制线时出错

的dataframes我已经是:

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) 

该图是通过这个代码是情节:

qplot(tam_tab,knn_sel2,data=df_sel2, linetype="2",geom="line") + 
    geom_line(mapping=aes(tam_tab,knn_sel4,linetype="4"),data=df_sel4) + 
    geom_line(mapping=aes(tam_tab,knn_sel8,linetype="8"),data=df_sel8) + 
    geom_line(mapping=aes(tam_tab,knn_sel32,linetype="32"),data=df_sel32) + 
    scale_linetype_manual("Valor da Seletividade", 
      values=c("solid","dotted","dashed","dotdash"), 
      labels=c("2","4", "8","32")) + 
    labs(x ="Tamanho da tabela interna", y = "tempo (s)") 

结果我得到的是这样的:

enter image description here

由于可以看出,标签“4”代替了“32”。 为什么会发生?

在此先感谢!

+1

' “4”> “32”''但4 <32' – HubertL

+0

这就是问题所在...非常奇怪的 – Siqueira

回答

1

问题出在您的labels= arguemnt。这是为了重命名级别。我想要指定顺序,您需要指定breaks=。使用

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)) 

那么你的绘图代码变得更加简单

ggplot(mydata, aes(tam_tab , knn, linetype=sel)) + geom_line() 
+0

第二部分不起作用。我不知道我是否需要适应它。但是对实际问题的答案是没问题的。 – Siqueira

+0

@Siqueira我忘记在第二部分的代码中包含dplyr依赖项。我做得更清楚了。但ggplot的秘密在于确保您的数据整洁。 – MrFlick

+0

它的工作原理!谢谢!! – Siqueira