在以下示例中,如何根据每个面板中的数据获取y轴限制?
mt <- ggplot(mtcars, aes(mpg, wt, colour = factor(cyl))) + geom_point()
Run Code Online (Sandbox Code Playgroud)
这些都不会这样做:
mt + facet_grid(. ~ cyl, scales="free")
mt + facet_grid(. ~ cyl, scales="free_y")
Run Code Online (Sandbox Code Playgroud) 我会给你一个关于数据的想法,我认为这样应该更容易理解我想要实现的目标。
复制品:
ID <- c(1, 1, 2, 3, 3, 3)
cat <- c("Others", "Others", "Population", "Percentage", "Percentage", "Percentage")
logT <- c(2.7, 2.9, 1.5, 4.3, 3.7, 3.3)
m <- c(1.7, 1.9, 1.1, 4.8, 3.2, 3.5)
aggr <- c("median", "median", "geometric mean", "mean", "mean", "mean")
over.under <- c("overestimation", "overestimation", "underestimation", "underestimation", "underestimation", "underestimation")
data <- cbind(ID, cat, logT, m, aggr, over.under)
data <- data.frame(data)
data$ID <- as.numeric(data$ID)
data$logT<- as.numeric(data$logT)
data$m<- as.numeric(data$m)
Run Code Online (Sandbox Code Playgroud)
代码:
Fig <- data %>% ggplot(aes(x = logT, y = m, …Run Code Online (Sandbox Code Playgroud) 上下文:我有一个数据框,其中Type记录了两个类别的数字列(conc在uptake下面的示例中)。根据我的真实数据,我需要绘制如下所示的多面图。
问题:设置scales = "free_y"不会“释放”同一行的各个面的 y 比例,事实上,当类别的值conc远大于类别的值时uptake,后者会被“压垮”。
问题:是否可以使用facet_grid()或更改facet-label来释放同一行的facet的y轴刻度facet_wrap()以匹配那些facet_grid()?
试验和错误:我已经尝试过facet_wrap(),但没有实现facet_grid()y 轴刻度良好的整齐布局。也许有一种方法可以定义facet_wrap()分面标签,但使用switch(即 strip_position)参数并没有成功。
我知道一些SO帖子已经在寻找类似的东西(参见如何在facet_wrap中定位条带标签,就像在facet_grid中一样),但也许(我希望^^)另一个,也许“更简单”的解决方案出现了。
library(magrittr) # for %>%
library(tidyr) # for pivot longer
library(ggplot2)
df <- CO2 %>% pivot_longer(cols = c("conc", "uptake"))
# nice facet labels but bad y-axis
ggplot(data = df, aes(x = Type, y = …Run Code Online (Sandbox Code Playgroud)