2012-12-01 4 views
7

Я выглядел немного неплохо, но я был в тупике. Кажется, я не могу найти способ построить линию, которая не связана с диаграммой рассеяния. Вот некоторые мои данные и код, чтобы прояснить проблему. У меня есть данные от следующей формыСмесительная линия и рассеянная диаграмма в 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

Aes() в ggplot() наследуются последующими геомами. Вы назначили 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 иногда делает неправильные догадки.

Смежные вопросы