首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用测井标尺在R (ggplot2)绘制一条直线?

用测井标尺在R (ggplot2)绘制一条直线?
EN

Stack Overflow用户
提问于 2018-01-10 19:51:55
回答 1查看 923关注 0票数 0

好的,所以我试图(并且失败)复制一个显示标准普尔500指数长期市场趋势的情节。

因为我用圆柱形标尺显示y轴的图形,所以连接线是弯曲的。我想要他们的海峡。唉,可是我失败了!

代码:

代码语言:javascript
复制
SP500.1950 <- read.csv("SP1950.csv")
colnames(SP500.1950) <- "Price"
SP500.1950 <- xts(SP500.1950[,-1], order.by=as.Date(SP500.1950[,1]))
SP500 <- get.Quantmod.Yahoo(symbol = "^GSPC",startDate = "1900-12-31")
SP500 <- SP500[endpoints(SP500,on = "months"),]
colnames(SP500) <- "Price"

SP500 <- rbind(SP500.1950,SP500) 
colnames(SP500) <- "Price"



x10 <- SP500[index(SP500) == "1900-01-01",]
x10[1,1] = 8.21
x10 <- rbind(x10,SP500[index(SP500) == "1922-04-01",])
x10 <- rbind(x10,SP500[index(SP500) == "1929-09-01",])
x10 <- rbind(x10,SP500[index(SP500) == "1932-07-01",])
x10 <- rbind(x10,SP500[index(SP500) == "1937-02-01",])
x10 <- rbind(x10,SP500[index(SP500) == "1950-04-28",])
x10 <- rbind(x10,SP500[index(SP500) == "1966-02-28",])
x10 <- rbind(x10,SP500[index(SP500) == "1978-10-31",])
x10 <- rbind(x10,SP500[index(SP500) == "2000-03-31",])
x10 <- rbind(x10,SP500[index(SP500) == "2013-01-31",])
SP500.max <- subset(SP500, as.Date(index(SP500)) > as.Date("2009-03-2009"))
x20 <- period.max(SP500.max[,1],endpoints(SP500.max))
x10 <- rbind(x10,x20[nrow(x20),])



#2013-01-31
  gg.sp500sc <- ggplot(SP500,aes(x=as.Date(index(SP500)),y = SP500[,1])) + 
    theme_minimal() + 
    theme() + 
    geom_line()+
    geom_line(data = x10, aes(x = as.Date(index(x10)),y=x10[,1]), color = "blue",size = 1) + 
    ggtitle("S&P 500 Index Secular Chart") + 
    coord_trans(y = "log") +
    xlab("") + 
    xlab("")
  gg.sp500sc

对快速修复有什么想法吗?

干杯,索迪

编辑

谢谢你的帮助,结果如下:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-10 20:16:44

问题是,坐标转换发生在统计转换之后,这改变了geoms的出现方式。尝试将coord_trans(y = "log")替换为scale_y_continuous(trans = "log")。下面是一个可复制的小例子:

代码语言:javascript
复制
library(dplyr)
library(ggplot2)

set.seed(888)

d <- data_frame(
  x = 1:1000,
  y = x + 10 + rnorm(1000)
)

d2 <- filter(d, x %in% c(50, 500))

ggplot(d, aes(x = x, y = y)) +
  geom_line() +
  geom_line(data = d2, color = "blue") +
  scale_y_continuous(trans = "log")
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48195062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档