2016-04-27 118 views
1

這裏我的代碼:ggplot2圖例不在圖中發生?

modele <- ggplot(data = liste_ref, aes(x = BV, y = liste_ref[,p]))+ 
    geom_point(aes(text = paste("Code opération: ",OPE_ID), colour = "FRANCE"),size = 1)+ 
    geom_point(data = liste_ref_HER,aes(y = liste_ref_HER[,p],text = paste("Code operation: ",OPE_ID),colour = "HER"),size=1)+ 
    geom_point(data = select,aes(y = select[,p],text = paste("Code operation: ",OPE_ID), colour = "Selection"),size=1)+ 
    scale_y_log10() + scale_x_log10()+ 
    stat_smooth(aes(x = BV, y = liste_ref[,p]), method = "lm",formula = y ~ x, se = FALSE,size = 0.25,fullrange = TRUE,color = "#BABBBF")+ 
    stat_smooth(data = liste_ref_HER, aes(x = BV, y = liste_ref_HER[,p]), method = "lm",formula = y ~ x, se = FALSE,size = 0.25,fullrange = TRUE, color = "#2F61F5")+ 
    scale_color_manual(name = "Legend", values = c("FRANCE"="#BABBBF","HER"="#2F61F5","Selection"="red"))+ 
    ggtitle(paste("Relation entre la surface du bassin versant et ",pl," de l'HER",HER[,1]))+ 
    xlab("Surface du bassin versant (en km²)") + ylab(yl) 

ggplotly(modele) 

而且它的結果是: enter image description here

的傳說並沒有足夠多的空間出現......請大家幫幫我!

+1

有你ggplot代碼幾件事情需要改進,但首先,你似乎是創建具有'ggplotly'情節;那是什麼包,你確定問題不在那裏?我們如何能夠幫助不能重現問題? – joran

+0

您能否提供樣本數據,以便我們可以運行您的代碼?這會讓你更容易幫助你。例如,粘貼'dput(liste_ref [1:10,])'的輸出以提供十行數據。它不需要是一個大樣本,但它需要是與代碼一起使用時再現問題的數據。 – eipi10

+0

要回顯@joran,只需在命令行運行'modele'即可。 –

回答

1

這是一個替代方案。這對你有用嗎?

#create a new dataset with a new column with 3 factor levels: 
liste_ref$Test <- "liste_ref" 
liste_ref_HER$Test <- "liste_ref_HER" 
select$Test <- "select" 
FinalData <- rbind(liste_ref, liste_ref_HER, select) 


ggplot(data = FinalData, aes(x = BV, y = Moy_Lm_Qb, color=Test))+ 
geom_point(size = 1) + scale_y_log10() + scale_x_log10() + 
stat_smooth(data = FinalData, aes(x = BV, y = Moy_Lm_Qb, color=Test), method = "lm",formula = y ~ x, se = FALSE,size = 0.25,fullrange = TRUE) + 
scale_color_manual(name = "Legend", values = c("liste_ref"="#BABBBF","liste_ref_HER"="#2F61F5","select"="red")) + 
ggtitle("Relation entre la surface du bassin versant et l'HER") 

#adjust margin 
m = list(l = 100, r = 100, b = 50, t = 50, pad = 0) 
ggplotly() %>% layout(autosize = F, width = 1200, height = 600, margin = m) 

enter image description here

+0

完美!謝謝MLavoie! –

+0

很好的回答。有一點需要注意,'autosize'也可以是'TRUE',並且你的保證金技巧仍然有效。 – timelyportfolio

0

謝謝您的回答,對不起,你可以運行此代碼:

liste_ref <- as.data.frame(cbind(c(3,4,13,16,17),c(19.62,391.21,9.57,3.16,57.53,142.50),c(6.62,13,4,3,9.2,12.27))) 
colnames(liste_ref)=c("OPE_ID","BV","Moy_Lm_Qb") 
liste_ref_HER <- as.data.frame(cbind(c(56,58,87,94,97,98),c(51.13,155.9,8.2,36.9,9.49,770.54),c(4.8,3.2,17,5.6,3.4,6))) 
colnames(liste_ref_HER)=c("OPE_ID","BV","Moy_Lm_Qb")     
select <- as.data.frame(cbind(54,51.13,8))            
colnames(select)=c("OPE_ID","BV","Moy_Lm_Qb")      
ggplot(data = liste_ref, aes(x = BV, y = Moy_Lm_Qb))+ 
geom_point(aes(text = paste("Code opération: ",OPE_ID), colour = "FRANCE"),size = 1)+ 
geom_point(data = liste_ref_HER,aes(y = Moy_Lm_Qb,text = paste("Code operation: ",OPE_ID),colour = "HER"),size=1)+ 
geom_point(data = select,aes(y = Moy_Lm_Qb,text = paste("Code operation: ",OPE_ID), colour = "Selection"),size=1)+ 
scale_y_log10() + scale_x_log10()+ 
stat_smooth(aes(x = BV, y = Moy_Lm_Qb), method = "lm",formula = y ~ x, se = FALSE,size = 0.25,fullrange = TRUE,color = "#BABBBF")+ 
stat_smooth(data = liste_ref_HER, aes(x = BV, y = Moy_Lm_Qb), method = "lm",formula = y ~ x, se = FALSE,size = 0.25,fullrange = TRUE, color = "#2F61F5")+ 
scale_color_manual(name = "Legend", values = c("FRANCE"="#BABBBF","HER"="#2F61F5","Selection"="red"))+ 
ggtitle("Relation entre la surface du bassin versant et l'HER") 
ggplotly() 

你是對的問題的根源plotly包會!如果你只是運行ggplot它的作品完美,但與ggplotly()圖例被刪除...