2017-04-11 45 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