Area di bawah kurva ggplotly R tidak dirender sesuai harapan

Aug 16 2020

Saya telah membuat plot dengan dataset dan ggplot2 berikut

Saya mengunduh dataset dalam CSV dari tautan di bawah ini

https://www.kaggle.com/dataset/e392d3cfbb5749653d5c82f4bec1daa03628fb06d374fad84eac319f1b3f982422

Kode yang saya gunakan adalah sebagai berikut

 library(readr)
 library(ggplot2)
 library(plotly)

Selanjutnya saya membuat dataframe dari file CSV

DF <- read_csv("C:/Users/mysystem/Desktop/Random3.csv")####Please set your working directory here

Sekarang saya membuat plot menggunakan ggplot

p2<-ggplot(DF, aes(x=Col1, y=Col2, group=ID)) +
 geom_line(size=.5) +  geom_ribbon(data=subset(DF, Col1>1  ),aes(x=Col1,ymax=Col2, 
fill=ID),ymin=0,alpha=0.3 ) +
scale_fill_manual(name='Legend', values=c("green4",  "red"), labels=c("A", "B" ))+labs(x="Col1", 
y="Col2")+ xlim(0, 10000)+ theme_bw()# +theme(legend.position='none') 

Plot di atas menunjukkan area di bawah kurva dengan benar. Namun, ketika saya menjalankan ggplotly, area di bawah kurva menjadi terbalik

ggplotly(p2)

Adakah cara agar hal ini dapat dihindari. Area yang diarsir tampaknya bergerak di luar area di bawah kurva dalam beberapa kasus dan dalam kasus ini tampaknya bergerak ke kebalikan dari kurva. saya meminta seseorang untuk melihatnya.

Jawaban

1 AllanCameron Aug 16 2020 at 19:25

Saya pikir Anda hanya menginginkan, geom_areabukan geom_ribbon. Anda juga dapat menyetel nilai pertama menjadi 0 daripada melewatinya untuk mencegah pengisian terbalik yang dimiliki poligon yang dihasilkan.

library(ggplot2)
library(plotly)

DF <- read.csv("Random3.csv")

DF$Col2[DF$Col1 == 0] <- 0

p2 <- ggplot(DF, aes(x = Col1, y = Col2, group = ID)) +
        geom_line(size = 0.5) +  
        geom_area(aes(x = Col1, fill = ID), alpha = 0.3, 
                  position = "identity") +
        scale_fill_manual(name = 'Legend', 
                          values = c("green4", "red"), 
                          labels = c("A", "B")) + 
        labs(x = "Col1", y = "Col2") + 
        xlim(0, 10000) + 
        theme_bw()

p2 

ggplotly(p2)