我有一些R代碼繪製一個圖。它看起來像下面的圖片:R,改變顏色/線條樣式時的ggplot:Grid.Call.graphics中的錯誤
現在我希望能夠設置線條顏色和樣式(需要它的灰度值),添加兩條直線傳說和刪除的標題傳奇。
此代碼的工作(我把假數據):
library(ggplot2)
load ("vns.data")
load ("rw.data")
load("gibbs.data")
,如果你不加載數據,這樣做:
vtm1<- c(1,3,4)
vmean<-c(3.9,3.8,3)
vmax<-c(4.1,4.2,4)
vmin<-c(3,2.5,2)
rtm1<- c(1,2,4,5)
rmean<-c(3.9,3.85,3.7,3.1)
rmax<-c(4.1,4.2,4,3.9)
rmin<-c(3,2.5,2,1.9)
gtm1<- c(2,4,5)
gmean<-c(4.1,3.9,3)
gmax<-c(4.1,4,3.9)
gmin<-c(3,2.5,1.5)
vns <- data.frame(vtm1, vmean, vmax, vmin)
gibbs <- data.frame(gtm1, gmean, gmax, gmin)
rw <- data.frame(rtm1, rmean, rmax, rmin)
然後繼續
names(vns) <- c("tm1", "mean", "max", "min")
names(gibbs) <- c("tm1", "mean", "max", "min")
names(rw) <- c("tm1", "mean", "max", "min")
vns$what <- "VNS"
gibbs$what <- "GS"
rw$what <- "RW"
DF <- do.call(rbind, list(vns, gibbs, rw))
plt <- ggplot(DF, aes(x= tm1, ymin= min, ymax= max, y=mean)) +
xlab("Number of TM lookups") +
ylab("Cross-entropy")+
geom_hline(yintercept=3.2240952381, linetype = "dotted", color="#A8A8A8")+
geom_hline(yintercept=3.44366666666667, linetype = "dotted") +
geom_ribbon(aes(fill=what), alpha=0.3) +
geom_line(aes(linetype = what))+
theme_bw()+
scale_colour_manual(name="what", values=c("vns"="#A8A8A8", "gibbs"="#E8E8E8", "rw"="#C8C8C8")) +
scale_fill_manual(name="what", values=c("vns"="#A8A8A8", "gibbs"="#E8E8E8", "rw"="#C8C8C8"))+
scale_linetype_manual(name="what", values=c("vns"="solid", "gibbs"="dotdash", "rw"="dashed"))
print(plt)
此代碼作品,當這些行被刪除時:
scale_colour_manual(name="what", values=c("vns"="#A8A8A8", "gibbs"="#E8E8E8", "rw"="#C8C8C8")) +
scale_fill_manual(name="what", values=c("vns"="#A8A8A8", "gibbs"="#E8E8E8", "rw"="#C8C8C8"))+
scale_linetype_manual(name="what", values=c("vns"="solid", "gibbs"="dotdash", "rw"="dashed"))
我得到以下錯誤與我的真實數據。用玩具數據,它工作正常。
Error in grid.Call.graphics(L_lines, x$x, x$y, index, x$arrow) :
invalid line type
隨着玩具數據,它工作正常。然而,需要將水平線添加到圖例中,並刪除了圖例名稱。因此,我在這裏做了我提供真實的數據:https://dl.dropboxusercontent.com/u/13564139/vns.saved和https://dl.dropboxusercontent.com/u/13564139/rw.saved和https://dl.dropboxusercontent.com/u/13564139/gibbs.saved
任何想法,只能用真實的數據,而不是玩具數據導致此錯誤,爲什麼?我已經按照其他一些帖子中的建議重新啓動了。
你能否包含完整的'ggplot'代碼? – Jaap
這是完整的代碼。我可能會重新排列它,以便三條線與其他線保持一致。我希望你現在很清楚。 – dorien
我還沒有看到完整的'ggplot'代碼。這通常開始於'ggplot(data = vns,aes(x = x,y = y))+ geom_line()+ scale_fill_manual()'。在這一刻,我只是一些「規模」代碼。 – Jaap