2016-04-05 5 views
0

Wenn ich plot() verwende, um eine zeitkritische Variable darzustellen, werden nur Punkte angezeigt. Ich benutze den zweiten Code, lines(), um alle Punkte zu verbinden. Ist das wirklich notwendig? Oder ich habe etwas falsch gemacht ...Brauche ich immer Linien() mit plot()?

Die Daten sind wie folgt. Ich verwende die plot() und lines(), um das Diagramm zu zeichnen, um den Trend zu sehen.

YYYYMM<-c("200907","200908","200909","200910","200911","200912","201001","201002","201003","201004","201005","201006","201007","201008","201009","201010","201011","201012","201101","201102","201103","201104","201105","201106") 
a<-c(1158,1455,1134,1371,1352,1277,1408,1270,1000,1462,1419,0,0,0,0,0,0,0,0,0,0,0,0,0) 
a_number_trend<-data.frame(YYYYMM,a) 
a_number_trend 

plot(a_number_trend$YYYYMM,a_number_trend$a,las=2,type="l",col="blue") 
lines(a_number_trend$YYYYMM,a_number_trend$a,las=2,type="l",col="blue") 

Die Handlung ist so am Anfang. enter image description here

Dann werden diese. enter image description here

Aber ich möchte die Linie nur ohne die kurze Leiste. Oder um die kurzen Balken in Punkte zu ändern.

+1

Es ist, weil YYYYMM Variable ein Faktor ist. Ändern Sie es in Zeichen und sehen Sie. – Gopala

+0

Das können Sie mit 'data.frame (YYYYMM, a, stringsAsFactors = FALSE) 'tun. – Gopala

+0

Sie können nicht gegen eine Zeichenvariable plotten – thelatemail

Antwort

4

Konvertieren Sie Ihre YYYYMM Spalte zu einem tatsächlichen R ?Date Objekt. Dann können Sie alles Schlange richtig erhalten:

a_number_trend$date <- as.Date(
    paste0(a_number_trend$YYYYMM,"01"), 
    format="%Y%m%d" 
) 

plot(a ~ date, data=a_number_trend, type="l", xaxt="n", ann=FALSE) 

Die unten Achse nicht stricly erforderlich ist (entfernen xaxt="n" oben, wenn Sie die Standarddatum Achse Berechnungen statt wollen).

axis.Date(
    1, 
    at=seq(min(a_number_trend$date), max(a_number_trend$date), by="1 month"), 
    format="%Y%m", 
    las=2 
) 
+0

Danke @thelatemail !! Ich lerne viel aus deiner Lösung. Es funktioniert völlig. Danke nochmal. –