我试图绘制一个数据框,其中包含"日期"作为x轴,股票价格作为y轴,我有四种不同的股票要绘制。我对ggplot文档非常困惑,并且没有找到一个简单的解决方案。这是数据框:
appleData <- read.csv("AAPL.csv", header = TRUE)
microsoftData <- read.csv("MSFT.csv", header = TRUE)
googleData <- read.csv("GOOG.csv", header = TRUE)
amazonData <- read.csv("AMZN.csv", header = TRUE)
names(appleData) <- c("Date", "AAPL")
names(microsoftData) <- c("Date", "MSFT")
names(googleData) <- c("Date", "GOOG")
names(amazonData) <- c("Date", "AMZN")
mergedData1 <- merge(appleData, microsoftData, by = "Date")
mergedData2 <- merge(googleData, amazonData, by = "Date")
totalData <- merge(mergedData1, mergedData2, by = "Date")
totalData
数据框被称为&#34; totalData&#34;,当我使用ggplot(totalData)时,我得到一个空白图。我需要帮助的具体是将所有四只股票绘制在同一块地块上,并重新调整价格,使它们都以100美元开始(因此它们的价格相同)。先感谢您。
答案 0 :(得分:0)
我发现您的问题有点难以帮助,因为您没有提供您正在使用的数据。看看这个惊人的参考,如何提出快速回答的真正好的问题! How to make a great R reproducible example?
我希望以下代码可以帮助您开始回答您的问题。
我做的主要事情之一就是我将数据从一个不整洁的&#34;宽的&#34;数据帧到&#34; tidy&#34;使用gather
中的tidyr
函数的长数据帧。我强烈建议您查看这个有关整理基础知识的优秀教程http://garrettgman.github.io/tidying/。一旦您的数据“整洁”,就会#34;你会发现许多工具将更容易工作!
祝你好运!
library(dplyr)
library(tidyr)
library(ggplot2)
# create sample data frame with random numbers
set.seed(123)
total_data <- data.frame(date = seq.Date(from = as.Date("2018-01-01"),
to = as.Date("2018-01-31"), by = "day"),
AAPL = sample(100:1000, 31),
MSFT = sample(100:1000, 31),
GOOG = sample(100:1000, 31),
AMZN = sample(100:1000, 31))
head(total_data)
#> date AAPL MSFT GOOG AMZN
#> 1 2018-01-01 359 912 445 691
#> 2 2018-01-02 809 721 346 388
#> 3 2018-01-03 467 815 832 268
#> 4 2018-01-04 892 122 502 802
#> 5 2018-01-05 943 528 826 183
#> 6 2018-01-06 140 779 827 518
# convert your wide data frame to a tidy long data frame
total_data <- gather(total_data, company, value, -date)
# plot using ggplot2
total_data %>%
ggplot(aes(x = date, y = value, color = company)) +
geom_line()