Gggplot: como criar curvas perfeitas ( `geom_curve) ` ? Quais argumentos devemos usar?

Pessoal bom dia

Estou vivendo um certo drama com o ggplot, mais especificamente na busca de ter uma curva geom_curve perfeita.

Abaixo segue meu codigo:

 ggplot(mtcars) + geom_point(aes(cyl, mpg)) + geom_curve(aes(x = 3, xend = 5 , y = 30, yend = 50),curvature = .35, colour = 'black', ncp = 800,size = 1,  arrow = arrow(length = unit(.05,'npc'),angle = -90, type = 'closed'))+ geom_curve(aes(x = 3, xend = 4.5 , y = 20, yend = 40),curvature = .35, colour = 'black', ncp = 800,size = 1,  arrow = arrow(length = unit(.05,'npc'),angle = 20, type = 'closed'))+ geom_curve(aes(x = 3, xend = 4 , y = 10, yend = 30),curvature = .35, colour = 'black', ncp = 800,size = 1,  arrow = arrow(length = unit(.05,'npc'),angle = 20, type = 'closed'))+  geom_curve(aes(x = 6, xend = 6.8 , y = 10, yend = 11),curvature = -.35, colour = 'black', ncp = 800,size = 1,  arrow = arrow(length = unit(.05,'npc'),angle = 20, type = 'closed'))

Eu estou tentando deixar essas curvas mais “smooth”(ou lisas, nao sei a palavra correta.) Ha algumas falhas nessas curvas. Quais os argumentos que posso usar para aprimorar esses resultados?

Ou no ggplot há um certo limite nessa questão por causa da definição dos “points” do segmento?

Basicamente eu alteor o size e ncp. E nunca chego ao resultado desejado. Vocês ja enfrentaram isso? Alguma dicas?

Muito obrigado e otimo final de semanas a todos.

Acho que tem a ver com a resolução do gráfico e não com o ggplot2 em si.
No código abaixo eu salvei duas versoes do mesmo plot, mas uma tem dpi = 100 e a outra tem dpi = 500. Olha a diferença:

library(ggplot2)

p <- ggplot(mtcars) + 
    geom_curve(aes(x = 6, xend = 6.8 , y = 10, yend = 11),
               curvature = -.35, colour = 'black', ncp = 800,size = 1,  
               arrow = arrow(length = unit(.05,'npc'),angle = 20, type = 'closed'))

ggsave(p, filename = "p1.png", dpi = 500, width = 4, height = 4)
ggsave(p, filename = "p2.png", dpi = 100, width = 4, height = 4)


p2

vc pode controlar isso tanto na hora de salvar quanto nos chunks de rmarkdown:

'''{r, dpi = 500}
ggplot(...)
'''

Muito obrigado Athos.

Quando eu gero o plot e salvo via Rstudio o arquivo em png eu obtenho esse grafico.( ainda com o problema das curvas terem quebras)

No entanto quando eu uso ggsave ele me entrega esse plot em .png.

Ele parece corrigir a questao da suavidade da curva mas o titulo e subtitulos ficam espalhados e as fontes distorcidas.

Quando eu uso: ggsave(p, filename = "p02.png",dpi = 500, units = 'px', width = 861, height = 562)

Ele me entrega um grafico bem estranho:

So estou usando ggplot.

Oi Diogo! Eu recomendo você testar valores diferentes para width e height na função ggsave(). Isso também acontece comigo, e vou testando valores diferentes até que fique o tamanho adequado e não atrapalhe a resolução do gráfico…

1 Curtida