2016-09-02 10 views
-1

Ich habe versucht, einige Linien in der gleichen Handlung zu zeichnen. Der x-Faktor wird durch ein Datum und der y-Faktor durch eine Zahl bestimmt. Ich zunächst die Daten laden, speichern sie in einer Liste und speichern Sie die minimalen und maximalen Werte für das Datum:Datum als xlim in R

stocks <- list() 
stocks.min <- 0 
stocks.max <- 0 
stocks.min.date <- NULL 
stocks.max.date <- NULL 
for (name in names(files)) 
{ 
    stocks[[name]] <- read.csv(files[[name]], sep=";") 

    # Convert to date in R 
    stocks[[name]]$Date <- as.Date(stocks[[name]]$Date, "%d/%m/%Y") 

    # Sets max value for ylim in the plotting 
    if (stocks.max < max(stocks[[name]]$Close)) 
    { 
    stocks.max <- max(stocks[[name]]$Close) 
    } 

    # Sets the date value for the xlim in the plot 
    if (is.null(stocks.min.date) || min(stocks[[name]]$Date) < stocks.min.date) 
    { 
    stocks.min.date <- min(stocks[[name]]$Date) 
    } 
    if (is.null(stocks.max.date) || max(stocks[[name]]$Date) > stocks.max.date) 
    { 
    stocks.max.date <- max(stocks[[name]]$Date) 
    } 
} 

Danach habe ich ein leeres Grundstück die Werte von oben mit:

plot(0, xlab="Time", ylab="Closing Prices", main="Stock Values", 
xlim=c(stocks.min.date, stocks.max.date), ylim=c(stocks.min, stocks.max)) 

Und dann füge ich die Zeilen mit den Daten:

for (name in names(stocks)) 
{ 
    lines(x=stocks[[name]]$Date, y=stocks[[name]]$Close, col=colors[[name]], type="l", 
    lwd=2) 
} 

Wenn der graph gezeichnet wird, wird die Daten korrekt angezeigt, aber es zeigt das Datum als Zahlen anstelle von Datumsangaben in der x-Achse, wie unten im Bild zu sehen:

enter image description here

Wie kann ich dieses Problem beheben?

+0

Stocks [[Name]] $ Date <- as.Date (Stocks [[Name]] $ Date) 'vor dem Plotten Befehl, und dann sollte Ihre Plotbeschriftung wie erwartet funktionieren. – jdobres

+0

Ich mache das schon, wenn ich die Daten in die erste for-Schleife lade – Daniel

Antwort

1

Ich würde dringend empfehlen, eine normalisierte Serie zu verwenden, um die Aktien Daten zu plotten, die Sie haben. quantmod hilft hier sehr. Es löst zwei Zwecke -

  1. Erhalten Sie die X-Achsenbeschriftungen als Daten. ohne sich Gedanken über die Befehle ihrer absoluten Werte (~ 67 für INR, ~ 1120 für KRW, usw. ...)
  2. Normalisieren Serie, so dass Sie eine beliebige Anzahl von Serie

Dies ist was sehen kann ich im Allgemeinen für meine Zwecke verwenden.

library(quantmod) 

tickers <- c('GOOG', 'MSFT', 'AAPL', 'AMZN') 
getSymbols(tickers, src = 'yahoo', from = '2015-01-01') 

normalise <- function(x) x/as.numeric(x)[1] - 1 

chart_theme <- chart_theme() 
chart_theme$col$line.col <- "red" 

chart_Series(normalise(Cl(GOOG)), theme = chart_theme) 
add_TA(normalise(Cl(MSFT)), on = 1, col = "black", lty = 1) 
add_TA(normalise(Cl(AMZN)), on = 1, col = "blue", lty =1) 
add_TA(normalise(Cl(AAPL)), on = 1, col = "darkgreen", lty =2) 

enter image description here

Hoffnung, das hilft.

+0

Ich konnte das nicht machen, noch so wiederverwenden, dass die Uhrzeit richtig angezeigt wurde =/ – Daniel

+0

Konnten Sie den Code replizieren? Welche Fehler zeigt es, wenn Sie versuchen, das oben genannte zu replizieren oder wenn Sie den Code für Ihre Bedürfnisse ändern? – prateek1592

+0

Ich habe meinen Code überprüft und den Fehler gefunden, danke =) – Daniel