2013-07-20 8 views
17

Ich habe einen sehr großen Datenrahmen (2 Spalten) in Bezug auf Datensätze. Ich habe das Diagramm in ggplot2 gezeichnet. Die X-Achse ist die Zeit und die Y-Achse ist der Wert. In einem bestimmten Intervall von 50 bis 60 möchte ich die Tick-Inkremente kleiner machen (50,51,51,53, ... 59,60). Für den Rest der Achse, es ist in Ordnung, die Zecken von 10. So erhöht haben, würde ich erwarten, dass X-Achsen-Werte haben wie:Customize X-Achsen-Ticks

10,20,30,40,50,51,52,53,54,55,56,57,58,58,60,70,80,90,..190,200. 

Ich weiß, ich die Zecken durch scale_x_continuous durch Verwendung ändern breaks und minor_breaks. Ich bekomme jedoch nicht die erwartete Ausgabe. Hier ist mein Versuch: (Hinweis: habe Daten nur zum Beispiel erstellt, da meine Daten sehr groß sind).

data: 
----- 
x<-seq(1:200) 
y<-seq(51,250,by=1) 
df<-data.frame(x=x,y=y) 

code:(Update based on @Didzis Elferts suggestion) 
----- 
ggplot(data=df, aes(x,y))+geom_line(size=1.6)+ 
    scale_x_continuous(breaks=c(10,20,30,40,seq(50,60,by=2),seq(70,200,10)) 
         ,minor_breaks=seq(50,60,by=2))+ 
    +theme(axis.text.x=element_text(size=16),axis.text.y=element_text(size=16))+ 
    +theme(axis.title.x=element_text(size=16),axis.title.y=element_text(size=16))+ 
    +theme(axis.ticks.x = element_line(size = 1))+xlab("Time")+ylab("value") 
    +theme(axis.ticks.length=unit(0.8,"cm")) 

Basierend auf dem Vorschlag, unten, ist das einzige Problem besteht nun die Werte der X-Achse während des Intervalls zwischen 50-60 ist nicht klar erscheint. sample of O/P Irgendwelche Vorschläge, um es klar zu machen !!

Antwort

21

Mit dem Argument minor_breaks= legen Sie die untergeordneten Gitternetzlinien fest. Um Zahlen unter der X-Achse zu setzen, sollte die Nummer mit dem Argument breaks= angegeben werden.

ggplot(data=df, aes(x,y))+geom_line(size=1.6)+ 
    scale_x_continuous(breaks=c(10,20,30,40,seq(50,60,by=1),seq(70,200,10)), 
      minor_breaks=seq(50,60,by=1)) 

Für das zweite Problem - stellen Sie axis.ticks.x=element_line(size=5) innerhalb theme() - das macht Ihre Achse breiter Zecken so als kleine Rechtecke erscheinen sie. Wenn Sie Achsen-Ticks länger verwenden möchten, verwenden Sie axis.ticks.length=.

+theme(axis.ticks.length=unit(0.5,"cm")) 
+0

Sie haben Recht. Nachdem ich jedoch Ihren Vorschlag angewendet hatte, überlappten sich die Werte der kleineren Unterbrechungen. Ich kann die Werte nicht sehen. Können wir den Abstand zwischen den einzelnen Teilstrichen vergrößern, damit die Werte gelesen werden können? Vielleicht, wenn wir die Schriftart oder den Winkel ändern? – SimpleNEasy

+0

Sie können den Abstand zwischen den Minenpausen nicht direkt vergrößern. Auch die Schriftgröße und der Winkel können für alle x-Achsenbeschriftungen gemeinsam geändert werden. –

+0

Überprüfen Sie mein Update. Wie man dieses Problem löst! – SimpleNEasy

Verwandte Themen