首页 > 解决方案 > 叠加两个 stat_density 图

问题描述

我想从两个一维数组中叠加两个密度图。我需要它们都以对数为单位。这些文件仅包含数字列表 (1.000.000),它们都是由非常相似的特定分布生成的,在 4000 附近有一个小峰值,因此是一个或两个轴上的对数刻度。

> prova
   [1]    1.106172    2.617064    1.778360    1.372890    5.334664    2.019493
   [7]    1.174879    1.371897    4.018011    1.220845    3.631309    1.437586 ...

两个文件之一,它们都非常相似

https://drive.google.com/file/d/1HEHWZR0Gl6YB1tLFF4WjXFp5ZoB-DrlW/view?usp=drivesdk

这是我只用于一个数组的:

#Packages
library(tidyverse)
library(plotly)
library(ggplot2)
library(scales)
library(ggforce)

prova <-readRDS("probcond1.rds")
prova1 <-readRDS("probpoly.rds")
dfGamma <-data.frame(prova)

g <- ggplot(dfGamma, aes(x=prova)) +
  stat_density(aes(y=..count..), color="black", fill="blue", alpha=0.3) + scale_x_continuous(breaks=c(0,1,2,3,4,5,10,30,100,300,1000,2000,3000,4000,5000), trans="log1p", expand=c(0,0)) + scale_y_continuous(expand=c(0,0), trans="log1p") + theme_bw()

我试图复制另一个答案中看到的解决方案,但在这种情况下,奇怪的是,图表不是对数比例。

x <- data.frame(v1=prova,v2=prova1)
data<- melt(x)
ggplot(data,aes(x=value, fill=variable)) + stat_density(alpha=0.3) +
scale_x_continuous(breaks=c(0,1,2,3,4,5,10,30,100,300,1000,2000,3000,4000,5000), trans="log1p", expand=c(0,0)) +
  scale_y_continuous(expand=c(0,0), trans="log1p") +
  theme_bw()

我对 R 很陌生,我不确定如何从我的两个列表中构建一个 data.frame 以及如何操作它。谢谢你的耐心。

标签: rggplot2

解决方案


推荐阅读