Eğri altındaki alan ggplotly R beklentiye göre oluşturulmuyor

Aug 16 2020

Aşağıdaki veri kümesi ve ggplot2 ile bir arsa oluşturdum

Veri kümesini CSV olarak aşağıdaki bağlantıdan indirdim

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

Kullandığım kod aşağıdaki gibidir

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

Daha sonra, veri çerçevesini CSV dosyasından oluşturuyorum

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

Şimdi ggplot kullanarak bir arsa oluşturuyorum

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

Yukarıdaki grafik, eğrilerin altındaki alanı doğru şekilde göstermektedir. Ancak ggplotly çalıştırdığımda, eğrilerin altındaki alan tersine dönüyor

ggplotly(p2)

Bundan kaçınmanın bir yolu var mı? Gölgeli alan bazı durumlarda eğrilerin altındaki alanın ötesine geçiyor gibi görünmektedir ve bu durumda eğrinin tersine hareket ediyor gibi görünmektedir. Birinden bakmasını rica ediyorum.

Yanıtlar

1 AllanCameron Aug 16 2020 at 19:25

Sanırım bunun geom_areayerine istiyorsun geom_ribbon. Sonuçta oluşan çokgenin sahip olduğu ters dolguyu önlemek için ilk değeri atlamak yerine 0 olarak da ayarlayabilirsiniz.

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)