ggplotly中的曲线下面积不符合预期

3
我已经使用以下数据集和ggplot2创建了一个图表。
我从下面的链接中以CSV格式下载了数据集。 https://www.kaggle.com/dataset/e392d3cfbb5749653d5c82f4bec1daa03628fb06d374fad84eac319f1b3f982422 我所使用的代码如下。
 library(readr)
 library(ggplot2)
 library(plotly)

接下来,我将从CSV文件创建数据框。

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

现在我使用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') 

上图正确显示了曲线下的面积。但是当我运行ggplotly时,曲线下的面积会被反转。
ggplotly(p2)

有没有办法避免这种情况。在某些情况下,阴影区域似乎会超出曲线下的区域,在这种情况下,它似乎会移动到曲线的相反面。我请求有人来看一下。

1个回答

1
我认为你只需要使用geom_area而不是geom_ribbon。你也可以将第一个值设为0,而不是跳过它,以防止结果多边形的反向填充。
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)

enter image description here


这确实有所帮助。但是绿色阴影溢出线的问题仍然存在。这在此图表的其他版本中也会发生。 - Raghavan vmvs
1
@Raghavanvmvs 我认为你只需要添加 position = "identity",因为默认情况下区域是堆叠的。 - Allan Cameron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接