2016-08-29 13 views
5

Five Thirty Eight'a benzer şekilde ggplot numaralı çizim için kapsamlı bir tema hazırladım. ggthemes kullanmadan, linesGrob'u kullanarak, ortalamamın üzerinde bir çizgi çizmek ve çizimin% 85'ini arsanın kenarlarına dokunmaksızın çizmeye nasıl kullanabilirim? Bu arsaya benzer altbilgi için uğraşıyorum. enter image description hereÇizim ggplot Foooter grobTree içinde linesGrob Kullanma

Yazı tipi metnini, rengini ve boyutunu düzenleyebilirim, bu yüzden endişelenmeyin. Beni bu verir Hangi

data(iris) 

library(ggplot2) 
library(grid) 
library(gridExtra) 

plot20 <- ggplot(iris,aes(x=Petal.Length,y=Sepal.Length,color=Species)) + 
    geom_point(alpha=0.5,size=5) + 
    ylab("") + 
    xlab("") + 
    theme(panel.grid.minor.y=element_blank(), 
     panel.grid.major.x=element_line(color="#D2D2D2",size=0.7), 
     panel.grid.major.y=element_line(color="#D2D2D2",size=0.7), 
     panel.grid.minor.x=element_blank(), 
     panel.background = element_rect(fill = '#F0F0F0',colour=NA), 
     plot.background = element_rect(fill = '#F0F0F0', colour=NA, size = 4), 
     legend.background=element_rect(fill="#F0F0F0"), 
     legend.key=element_blank(), 
     legend.title=element_text(face="bold"), 
     axis.text=element_text(face="bold"), 
     legend.position="none", 
     axis.ticks=element_blank()) 

#Plot Header 
my_g2 <- grobTree(rectGrob(gp=gpar(fill='#F0F0F0',col=NA)), 
        textGrob("Iris Dataset",x=0.115, vjust = -0.5,gp=gpar(fontsize=18,fontface="bold")), 
        textGrob("This is a subheader for the iris dataset",x=0.235,vjust=1.5,gp=gpar(fontsize=14))) 

#Plot Footer 
my_g1 <- grobTree(rectGrob(gp=gpar(fill="#F0F0F0",col=NA)), 
        textGrob(" medavis6",x=0,hjust=0,gp=gpar(col="darkorange",fontsize=8,fontface="bold")), 
        textGrob("Source: R",x=.85,hjust=-1.06,gp=gpar(col="black",fontsize=8))) 

#Plot All Together 
allplot <- grid.arrange(my_g2,plot20,my_g1,heights=c(1.17,11,0.5)) 

:

Şimdiye kadar, ne var budur.

enter image description here

benim altbilgi grobTree() içinde linesGrob() kullanarak gerektiğini düşünüyorum, ama bunu yapmaya çalışacağım zaman bu benim parsellerde görünmesini sağlamak mümkün değil. Benim rectGrob() benim üstünde ya da ne olup bittiğini belirten emin değilim.

Her türlü yardım için teşekkürler ve lütfen herhangi bir açıklama yapmanız gerekiyorsa bildirin. Ayrıca, kodumdan herhangi biri kötü yazılmışsa, her zaman daha iyi yapmak için yapıcı eleştiriler arıyorum!

cevap

5

Ben de linesGrob

#Plot Footer 
my_g1 <- grobTree(rectGrob(gp=gpar(fill="#F0F0F0",col=NA)), 
        linesGrob(unit(c(.05, .95), "npc"), unit(1, "npc"), 
          gp = gpar(col = 'lightgrey', lwd = 4)), 
        textGrob(" medavis6",x=0,hjust=0,gp=gpar(col="darkorange",fontsize=8,fontface="bold")), 
        textGrob("Source: R",x=.85,hjust=-1.06,gp=gpar(col="black",fontsize=8))) 

#Plot All Together 
allplot <- grid.arrange(my_g2,plot20,my_g1,heights=c(1.17,11,0.5)) 
grid.draw(allplot) 

enter image description here

+0

Mükemmel kullanılan! Hızlı çalışma ve yardım için teşekkürler. Bu çok takdir edilmektedir! – medavis6