我想使用facet_zoom,但由于某些原因,缩放区域为空。
我使用的两个数据集只是从一个修正的多项式分布生成的1.000.000数字的数值向量。我要显示在缩放区域中的一个小尖峰。
prova <-readRDS("probcond1.rds")
prova1 <-readRDS("probpoly.rds")
dfGamma <-data.frame(prova)
ggplot(dfGamma, aes(x=prova)) + stat_density(aes(y=..count..), color="black", fill="blue", alpha=0.3)
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,4000,5000), trans="log1p", expand=c(0,0)) +
theme_bw()
g+expand_limits(x = c(1, 6000)) +facet_zoom(xlim = c(4000,5000))
我真的很陌生。对不起,我很无知
答案 0 :(得分:2)
您的axis
的比例为log1p
,因此您的xlim
应该包裹在log1p
内以进行缩放。您可以执行以下操作:
g+expand_limits(x = c(1, 6000)) +facet_zoom(xlim = c(log1p(4000),log1p(5000)))
以下是使用mtcars
数据集的示例。
library(ggplot2)
library(ggforce)
g <- ggplot(mtcars, aes(x=hp)) +
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), trans="log1p", expand=c(0,0)) +
theme_bw()
如果您按以下方式使用facet_zoom(xlim = c(100,300))
,则会产生空的缩放输出(g的x轴上不存在100和300的平坦值):
g+expand_limits(x = c(1, 300)) +facet_zoom(xlim = c(100,300))
如果使用xlim
变换log1p
,则可以放大图x-axis
的{{1}}的相应值。您可以按照以下步骤进行操作:
g
如果要在轴上独立g+expand_limits(x = c(1, 300)) +facet_zoom(xlim = c(log1p(100),log1p(300)))
,则可以执行以下操作:
zoom
如您所见,我确实在g+expand_limits(x = c(1, 300)) +facet_zoom(xlim = c(log1p(100),log1p(300)), ylim = c(5,10), split = TRUE)
和ylim
之间缩放5
,而10
使缩放独立,并且您可以拥有缩放轴的多个视图或如果只需要一个视图,则可以将split = TRUE
保留为其默认值split
。手册中有很多信息可能需要您参考,以防万一Package ‘ggforce’
希望有帮助。