2016-08-29 6 views
5

Ich habe ein umfangreiches Thema erstellt, um in ggplot ähnlich Five Thirty Eight zu plotten. Ohne ggthemes, wie kann ich linesGrob verwenden, um eine Linie über meiner Fußzeile zu zeichnen, die zentriert ist und 85% des Weges über die Handlung geht, ohne die Ränder der Handlung zu berühren? Ich strebe nach der Fußzeile, die dieser Handlung ähnlich ist. enter image description hereZeichnung ggplot Foooter Mit linesGrob innerhalb von grobTree

Ich kann den Schriftarttext, die Farbe und die Größe redigieren also mach dir keine Sorgen darüber.

Bisher, was ich habe, ist dies:

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

Was gibt mir diese.

enter image description here

Ich glaube, ich soll linesGrob() in meiner Fußzeile verwenden grobTree(), aber wenn ich versuche, es zu tun, kann ich es nicht in meinen Plots erscheinen zu lassen. Ich bin mir nicht sicher, ob meine rectGrob() Plotting ist oder was passiert.

Vielen Dank für jede Hilfe und bitte, lassen Sie mich wissen, wenn Sie eine Klarstellung benötigen. Außerdem, wenn einer meiner Code schlecht geschrieben ist, suche ich immer nach konstruktiver Kritik, um es besser zu machen!

Antwort

5

habe ich auch 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

Perfect! Danke für die schnelle Arbeit und Hilfe. Es ist sehr geschätzt! – medavis6

Verwandte Themen