请查看下面的代码(一些专有信息发布,但意图应该出现):
query <- "Select convert(varchar(10),PRICE_DATE,103) as Price_date, ISIN, PRICE_SRC, PRICE from ``
where ISIN in ('BE0119096775',
'US80685QAA40',
'US00139PAA66',
'US705010AB25')
and PRICE_DATE > '20140101' and PRICE_SRC in ('BRC_INDEX', 'REUTERS','BVAL')
order by ISIN, PRICE_DATE"
# Squish query to a flat string
query <- strwrap(query,width=nchar(query),simplify=TRUE)
# Open database, grab data and close connection
ch <- odbcDriverConnect("driver={SQL Server};server=;Database=;", rows_at_time = 1024)
result <- sqlQuery(ch, query, as.is=c(TRUE, TRUE, TRUE))
close(ch)
result <- (na.omit(result))
names(result)[1] <- "Price_Date"
result$Price_Date <- as.Date(result$Price_Date, format = "%d/%m/%Y")
result$PRICE_SRC <- as.character(result$PRICE_SRC)
result$PRICE <- as.numeric(result$PRICE)
result$PRICE_SRC <- as.factor(result$PRICE_SRC)
result$PRICE_SRC <- factor(result$PRICE_SRC, levels=c("BRC_INDEX","BVAL","REUTERS"),labels=c("Vendor1","Vendor2","REUTERS"))
result <- melt(result, id=c("Price_Date","PRICE_SRC","PRICE"))
ggplot(data=result, aes(x=Price_Date, y=PRICE, group = PRICE_SRC, colour = PRICE_SRC)) +
geom_line() +
geom_point( size=4, shape=21, fill="white") +
facet_wrap(~value, ncol = 2)
我已使用facet_wrap
在数据框=结果中制作每个ISIN
的图表。我希望能够做出单身&#34;图表无需编写代码&#34;一遍又一遍&#34;再次。所以问题是,如果有人能够帮助解决任何其他问题的ggplot语法,从而如上所述从一个数据帧创建多个图形。
结果将是按供应商和日期分割的每个ISIN
的一系列观察结果。
感谢并抱歉我的问题中有任何明显的错误。
于Lh
答案 0 :(得分:2)
来自filter()
包的dplyr
呢。
require(dplyr)
require(ggplot2)
data <- data.frame( var = rep(letters[1:3],each=10), value = rnorm(30) )
您可以过滤特定变量的主数据框,如下所示:
tmp_data <- filter(data,var == "a")
plot_object <- ggplot(tmp_data,aes(value)) + geom_density()
您可以使用magrittr
管道语法:
plot_object <- data %>%
filter(var == "a") %>%
ggplot(., aes(value)) + geom_density()
要遍历所有变量并一次一个地绘制它们,您可以执行以下操作:
plot_object_ls <- lapply( levels(data$var),
function(x) {
data %>%
filter(var == x) %>%
ggplot(., aes(value)) + geom_density()
})
如果这是您想要的,那么控制台上的plot_object_ls
会将它们全部绘制出来。