2017-10-01 1 views
1

je le code suivant:Je voudrais tracer un particulier (données x, y) ligne sur un ggplot que je l'ai déjà construire [R]

library("ggplot2") 

strike<-c(44,46,47,48,49,50,51,52,53,54,55,56, 
     57,58,60,64,46,47,48,49,50,51,52,53, 
     54,56,58,35,40,44,45,46,48,50,51,52, 
     53,54,55,56,58,60,70,80,35,40,45,46, 
     48,50,52,54,56,58,60,70,40,45,50,52, 
     54,60,70) 



optionprice <- c(7.25,7.25,5.1,5.2,4.47,3.45,1.95,2,1.3, 
      0.8,0.44,0.28,0.14,0.26,0.08,0.25,5.48, 
      4.35,5.5,4.82,3.25,2.67,2.55,1.9,1.4, 
      0.85,0.4,18.16,11.31,9.5,7.35,7.05,5.25, 
      4.2,2.44,2.9,1.6,1.9,1.4,1.15,0.65,0.4, 
      0.08,0.06,15.7,12.25,8.5,7.6,6.6,5.15,3.9, 
      2.85,1.95,1.45,1.1,0.22,12.65,8.5, 
      5.07,4.3,3.55,1.63,0.44) 

    Expiration <- c('2017-10-20','2017-10-20','2017-10-20','2017-10-20', 
        '2017-10-20','2017-10-20','2017-10-20','2017-10-20', 
        '2017-10-20','2017-10-20','2017-10-20','2017-10-20', 
        '2017-10-20','2017-10-20','2017-10-20','2017-10-20', 
        '2017-11-17','2017-11-17','2017-11-17','2017-11-17', 
        '2017-11-17','2017-11-17','2017-11-17','2017-11-17', 
        '2017-11-17','2017-11-17','2017-11-17', 
        '2017-12-15','2017-12-15','2017-12-15', 
        '2017-12-15','2017-12-15','2017-12-15', 
        '2017-12-15','2017-12-15','2017-12-15', 
        '2017-12-15','2017-12-15','2017-12-15', 
        '2017-12-15','2017-12-15','2017-12-15', 
        '2017-12-15','2017-12-15', 
        '2018-03-16', '2018-03-16', '2018-03-16', '2018-03-16', '2018-03-16', '2018-03-16', 
        '2018-03-16', '2018-03-16', '2018-03-16', '2018-03-16', '2018-03-16', '2018-03-16', 
        '2018-06-15', '2018-06-15', '2018-06-15', '2018-06-15', '2018-06-15', '2018-06-15', 
        '2018-06-15') 


Philips <- data.frame(strike, optionprice, as.factor(Expiration)) 


IrisPlot.shape <- ggplot(Philips, aes(strike, optionprice, shape = 
Expiration, colour = Expiration))+ geom_point(size = 4)+labs(x = 
"Strike/Exercise price")+labs(y = "Option Price") 



print(IrisPlot.shape + scale_shape_manual(values = c(15, 16, 
17,18,19)) + scale_colour_manual(values = c("chartreuse4", 
"chocolate", "slateblue4","black","purple"))) 

et je voudrais ajouter dans ce complot une ligne spécifique qui a valeurs x, y, respectivement:

striking=seq(10, 53.49, length.out=63) 
calling=53.49-striking 

Je voudrais que cette ligne à inclure dans la première parcelle et aussi une légende dont il dira: Payoff. Je joins une photo de ce complot pour voir ce que j'ai déjà fait. Merci d'avance.

this is the figure I have created

+1

@Axeman Je viens de fournir les données. Merci pour le commentaire. –

Répondre

0

Ajoutez juste un geom_line et tour de l'héritage de l'esthétique:

ggplot(Philips, aes(strike, optionprice, shape = Expiration, colour = Expiration)) + 
    geom_line(aes(x = striking, y = calling, lty = 'payoff'), inherit.aes = FALSE) + 
    geom_point(size = 4, alpha = 0.4) + 
    labs(x = "Strike/Exercise price", y = "Option Price") + 
    scale_shape_manual(values = c(15, 16, 17,18,19)) + 
    scale_colour_manual(values = c("chartreuse4", "chocolate", "slateblue4","black","purple")) 

enter image description here

+1

c'est génial, merci! –

1

Vous devez utiliser l'argument de ligne de thème s'il vous plaît se référer ci-dessous le code. J'espère que cela fonctionne bien. - ggplot (Philips, aes (grève, prix de l'option, forme = Expiration, couleur = Expiration)) + geom_point (taille = 4) + labs (x = "Strike/prix d'exercice") + labs (y = "Prix de l'option") + theme (axe.line.x = element_line (couleur = "noir", taille = 2), axis.line.y = element_line (couleur = "noir", taille = 2))

+0

Essayez de le formater mieux pour la lisibilité s'il vous plaît. – rmjoia