我环顾四周,但我对这个感到难过.我找不到绘制与散点图无关的线的方法.以下是我的一些数据和代码,以澄清问题.我有以下表格的数据
> 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
Run Code Online (Sandbox Code Playgroud)
我想创建一个MarketProbabilities与the 的散点图AnnounceDate,并确定DealStatus是Completed或是Terminated使用颜色.
(ggplot(data=allData, aes(x=AnnounceDate, y=MarketProbability, colour=DealStatus))
+ geom_point() + scale_colour_hue(h = c(180,0)))
Run Code Online (Sandbox Code Playgroud)

我也想覆盖滚动的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)))
Run Code Online (Sandbox Code Playgroud)

我很困惑为什么要绘制两条彩色线条?如何将该线与先前绘制的数据分离?
正如@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)
Run Code Online (Sandbox Code Playgroud)

ggplot()中的aes()由后续的geom继承.你指定了color = 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))
Run Code Online (Sandbox Code Playgroud)
我正在添加一个常量作为组参数来告诉它连接所有点.否则,ggplot有时会做出错误的猜测.