9

我环顾四周,但我被这个难住了。我找不到绘制与散点图无关的线的方法。这是我的一些数据和代码来澄清问题。我有以下形式的数据

> head(allData)
  AnnounceDate MarketProbability DealStatus binary BrierScore
1   2000-04-10         0.3333333   Complete      1  0.2340565
2   2000-06-14         0.2142857   Complete      1  0.3618200
3   2000-06-26         0.6846154   Complete      1  0.3690167
4   2000-06-16         0.1875000   Complete      1  0.4364041
5   2000-10-05         0.9555556   Complete      1  0.3078432
6   2000-10-19         0.8500000   Complete      1  0.2670799

我想创建一个MarketProbabilities与的散点图AnnounceDate,并确定 aDealStatusCompleted还是Terminated使用颜色。

(ggplot(data=allData, aes(x=AnnounceDate, y=MarketProbability, colour=DealStatus))
 + geom_point() + scale_colour_hue(h = c(180,0)))

在此处输入图像描述

我也想叠加一个滚动的 Brier 分数,我试过了

(ggplot(data=allData, aes(x=AnnounceDate, y=MarketProbability, colour=DealStatus))
 + geom_point() + scale_colour_hue(h=c(180,0))
 + geom_line(aes(x=AnnounceDate, y=BrierScore)))

在此处输入图像描述

我很困惑为什么要绘制两条彩色线?如何将线与先前绘制的数据分离?

4

2 回答 2

7

正如@MattBagg 所指出的,通过将aes()for 颜色从主ggplot()调用移出并移入geom_point()调用来解决此问题。

library(ggplot2)

allData = read.table(header=TRUE,
colClasses=c("Date", "numeric", "character", "numeric", "numeric"),
text="AnnounceDate MarketProbability DealStatus binary BrierScore
2000-04-10         0.3333333   Complete      1  0.2340565
2000-06-14         0.2142857   Complete      1  0.3618200
2000-06-26         0.6846154   Complete      1  0.3690167
2000-06-16         0.1875000   Complete      1  0.4364041
2000-10-05         0.9555556   Complete      1  0.3078432
2000-10-19         0.8500000   Complete      1  0.2670799")

p1 = ggplot(data=allData, aes(x=AnnounceDate)) +
     geom_point(aes(y=MarketProbability, colour=DealStatus)) + 
     scale_colour_hue(h = c(180,0)) + 
     geom_line(aes(y=BrierScore))

ggsave(filename="plot_1.png", plot=p1, height=2.5, width=5)

在此处输入图像描述

于 2012-12-01T04:10:03.820 回答
5

ggplot() 中的 aes() 被后续的 geom 继承。您分配了 colour=DealStatus,它由 geom_line() 继承,它需要制作两条线来制作两种颜色。我无法对此进行测试,因为我在手机上,但尝试将颜色分配移出主 ggplot 并进入 geom_point():

ggplot(data = allData, aes(x=AnnounceDate)) +
     geom_point(aes(colour=DealStatus, y=MarketProbability)) + 
     scale_colour_hue(h = c(180,0)) +
     geom_line(aes(y=BrierScore, group=1))

我正在添加一个常量作为组参数来告诉它连接所有点。否则,ggplot 有时会做出错误的猜测。

于 2012-12-01T03:49:55.930 回答