决定scale_y_continuous比例因子的密度函数ggplot2

问题描述 投票:0回答:1

因此,我一直试图将直方图的KDE函数放到上面,但是我设法做到了,但是当我尝试缩放sec.axis = sec_axis(〜./# number)时,我似乎无法匹配它直方图是否可以让我自动选择应该显示的数字以获得最佳匹配。

我使用的代码是

a <- ggplot(birds, aes(birds$`Log10(Total Average)`))+
  geom_histogram(col = 'black', fill = 'white', binwidth = 0.2)+
  labs(x = 'Log10 total body mass (kg)', y = 'Frequency', title = 'Average total body mass (kg) of bird species (male adn female) in KNP')
a + geom_density(aes(y=..count..), col=2, size=1)+
  scale_y_continuous(sec.axis = sec_axis(~./40, name = "Density"))

enter image description here

r ggplot2 kernel-density
1个回答
0
投票

就像您之前的文章一样,您没有提供可重复的数据集示例...因此很难提供适用于您的数据的解决方案。

一种方法是计算每个仓的最大计数和密度函数的最大值,然后可以进行比率并将其应用于geom_density

set.seed(123)
df <- data.frame(Total_average = rnorm(100,0,2))
binwidth = 0.2

Seq <- seq(floor(min(df$Total_average)), ceiling(max(df$Total_average)), by = binwidth)

# Determine max count per bins
Max_HIST <- max(hist(df$Total_average, breaks = Seq)$counts)

# Determine the max of the density
Max_Dens <- max(density(df$Total_average)$y)

Ratio <- Max_HIST / Max_Dens

library(ggplot2)
ggplot(df, aes(Total_average))+
  geom_histogram(col = 'black', fill = 'white',binwidth = binwidth)+
  geom_density(aes(y = ..density..*Ratio))+
  scale_y_continuous(sec.axis = sec_axis(~./Ratio, name = "Density"))

enter image description here

它回答了您的问题吗?

如果没有,请按照本教程提供的数据集的可复制示例:How to make a great R reproducible example


NB:由于某些原因,似乎geom_histogramhist函数没有以完全相同的方式对每个垃圾箱计数。...目前,我对此没有很好的解释。

© www.soinside.com 2019 - 2024. All rights reserved.