2017-09-15 2 views
0

Ich habe einen Datenrahmen wie diese bekommen:Wie bekomme ich bessere Datumsunterbrechungen auf der X-Achse eines Scatterlots?

Days  Ahm5 
01/06/1961 0.00000 
02/06/1961 0.19266 
03/06/1961 1.67610 
........ ........ 
30/09/1961 5.26514 
01/06/1962 0.05200 
......... ........ 
30/09/2007 0.866473 

Hier die Daten: https://www.dropbox.com/s/de88gqk7kvb1q9i/data.csv?dl=0 Wenn ich ein Streudiagramm versuchen, wie,

data <- read.csv("data.csv") 
data[data==-9.99e+08] = NA      
data$days <- as.Date(data$days, format="%d/%m/%Y") 
plot(Ahm5~days,data, col='blueviolet', type="p", pch=1 ,cex=.5, xlab="Year",xaxt='n', ylab="Rainfall(mm/Day)") 
axis.Date(side=1,seq(as.Date("1961/1/1"), by = "year", length.out = 47)) 

Ausgang ist so. enter image description here

Aber meine gewünschte Ausgabe wie Abbildung unten mit x-Achse Spanne von 1960 bis 2007, wie in den Daten gegeben sein sollte:

enter image description here auch, wie man hinzufügen letztes Jahr auf x-Achse? Entschuldigen Sie mich für diese triviale Frage.

+0

Bitte legen Sie eine [reproduzierbaren Beispiel] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example/5963610). Dies erleichtert es anderen, Ihnen zu helfen. – Jaap

+0

Bearbeitet mit Daten und Code ich verwendet. – ajilesh

Antwort

2

Sie müssen sicherstellen, dass das Diagramm breit genug ist, ansonsten werden einige Unterbrechungen weggelassen. Sehen Sie die folgenden Beispiele, um den Unterschied zu sehen.

Beispiel 1:

png(filename = 'scatterplot1.png', width = 800, height = 400) 
plot(Ahm5 ~ days, dat, col = 'blueviolet', type = "p", pch = 1, cex=.5, xlab = "Year", xaxt='n', ylab = "Rainfall (mm/Day)") 
axis.Date(side = 1, at = seq(as.Date("1961/1/1"), by = "year", length.out = 47)) 
dev.off() 

ergibt:

enter image description here

Beispiel 2:

png(filename = 'scatterplot2.png', width = 600, height = 300) 
plot(Ahm5 ~ days, dat, col = 'blueviolet', type = "p", pch = 1, cex=.5, xlab = "Year", xaxt='n', ylab = "Rainfall (mm/Day)") 
axis.Date(side = 1, at = seq(as.Date("1961/1/1"), by = "year", length.out = 47)) 
dev.off() 

ergibt:

enter image description here

Beispiel 3:

png(filename = 'scatterplot3.png', width = 400, height = 200) 
plot(Ahm5 ~ days, dat, col = 'blueviolet', type = "p", pch = 1, cex=.5, xlab = "Year", xaxt='n', ylab = "Rainfall (mm/Day)") 
axis.Date(side = 1, at = seq(as.Date("1961/1/1"), by = "year", length.out = 47)) 
dev.off() 

gibt:

enter image description here

Wie Sie die Pausen unterscheiden sich zwischen den Stellplätzen sehen und R wählt aus, welche zu verwenden bricht. Um schönere Pausen zu haben, können Sie verwenden:

png(filename = 'scatterplot4.png', width = 800, height = 400) 
plot(Ahm5 ~ days, dat, col = 'blueviolet', type = "p", pch = 1, cex=.5, xlab = "Year", xaxt='n', ylab = "Rainfall (mm/Day)") 
axis.Date(side = 1, at = seq(as.Date("1965/8/1"), by = "5 year", length.out = 9)) 
dev.off() 

die gibt:

enter image description here

Jetzt haben Sie:

  • Nicer Pausen
  • Die Zecken in der Mitte ausgerichtet sind, der jährlichen "Scatter-Piles".

UPDATE: Eine weitere Ausarbeitung auf dem letzten Beispiel:

png(filename = 'scatterplot5.png', width = 800, height = 400) 
plot(Ahm5 ~ days, dat, col = 'blueviolet', type = "p", pch = 1, cex=.5, 
    xlab = "Year", xaxt='n', ylab = "Rainfall (mm/Day)") 
axis.Date(side = 1, 
      at = c(seq(as.Date("1960/8/1"), by = "10 year", length.out = 5), 
       as.Date('2007-08-01'))) 
dev.off() 

die gibt:

enter image description here

+0

Danke für die Antwort, es hilft. Aber ich habe meine Frage noch einmal bearbeitet, um zu klären, wonach ich gesucht habe. – ajilesh

+0

@ajilesh Siehe das Update. Ist das wonach Sie suchen? – Jaap

+0

Bitte beachten Sie die zwei Plots, die ich in der Frage gegeben habe. Ich will keine Termine in einem Jahr. – ajilesh

Verwandte Themen