2012-12-01 111 views
7

我已經看了aronud一點點,但我難住這一個。我似乎無法找到繪製與散點圖無關的線的方法。這裏有一些我的數據和代碼來澄清問題。我有數據從下面的表格混合線和散點圖ggplot

> 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的散點圖,並確定使用顏色是否不交易的順利完成,即

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

enter image description here

,但我也想覆蓋滾動布來得分,我已經試過

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)) 

enter image description here

我很困惑,爲什麼它是繪製兩條線,並添加顏色?我如何將此線與先前繪製的信息分開?

回答

5

由於@MattBagg指出,這個問題是由移動aes()爲出彩的主要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) 

enter image description here

+1

geom_path:每個組僅由一種觀察。你需要調整團體審美嗎? – agstudy

+0

我不知道如何解釋您的評論:使用ggplot2 0.9.2.1,發佈的代碼運行時沒有錯誤,並輸出發佈的png。據我所知,沒有必要定義羣體美學。 – bdemarest

+0

我有相同的版本。真的很棒!os問題? – agstudy

2

ggplot()中的aes()被後續的geoms繼承。您分配了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)) 

我加上一個常數作爲一組參數來告訴它連接所有點。否則,ggplot有時會做出錯誤的猜測。