gpt4 book ai didi

r - 如何在R ggplot2中限制x轴后自动重新计算y轴比例

转载 作者:行者123 更新时间:2023-12-04 03:14:23 24 4
gpt4 key购买 nike

我正在使用 ggplot2 从大量数据框列表中绘制一些光谱数据。我想将图表限制在 400 到 900 nm 之间的波长范围内。我知道如何使用 scale_x_continuous() 或 xlim() 设置 x 轴限制。问题是,在我完成此操作后,y 轴不会自动重新调整为显示的最小值/最大值。我不想手动设置它,因为我的循环处理的每个数据帧都有不同的范围。

哪里summary是我的数据框列表,然后这段代码给了我一个图表列表,没有调整轴:

plotlist <- list()
for(i in 1:length(summary)){
plotlist[[length(plotlist)+1]] <- ggplot(summary[[i]], aes(Wavelength, average)) +
geom_line(aes(color=Sample)) +
geom_linerange(aes(ymin=average-sem, ymax=average+sem, color=Sample), alpha=0.5) +
ylab("Absorbance (AU)") + ggtitle(names(summary)[i]) +
theme_classic()
}
plotlist[[33]]

这给了我:
Plot without axis adjustment

如果我像这样将 x 轴调整为 400 - 900:
plotlist <- list()
for(i in 1:length(summary)){
plotlist[[length(plotlist)+1]] <- ggplot(summary[[i]], aes(Wavelength, average)) +
scale_x_continuous(name="Wavelength (nm)", limits=c(400, 900), expand=c(0,0)) +
geom_line(aes(color=Sample), na.rm=TRUE) +
geom_linerange(aes(ymin=average-sem, ymax=average+sem, color=Sample), alpha=0.5, na.rm=TRUE) +
ylab("Absorbance (AU)") + ggtitle(names(summary)[i]) +
theme_classic()
}
plotlist[[33]]

然后我得到这个图,x 轴是正确的,但是 y 轴的比例现在对于显示的数据来说太大了:
Plot with correct x-axis, but wrong y-axis

如何自动将 y 轴调整到适当的最小值/最大值,但仅在 x 轴的 400-900 nm 范围内?

最佳答案

这是一个可能的解决方案。但是,由于我无权访问您的数据,因此无法测试它是否确实有效。

您可以在构建绘图之前定义波长范围的最大平均值,然后在 ylim 函数中调用该值。

我添加的两行是:

 y_scale <- max(summary[[i]]$average[summary[[i]]$Wavelength >= 400 & summary[[i]]$Wavelength <= 900])

和,
ylim(0, (y_scale + 0.5))+

最终代码如下所示:
plotlist <- list()
for(i in 1:length(summary)){
y_scale <- max(summary[[i]]$average[summary[[i]]$Wavelength >= 400 & summary[[i]]$Wavelength <= 900])
plotlist[[length(plotlist)+1]] <- ggplot(summary[[i]], aes(Wavelength, average)) +
scale_x_continuous(name="Wavelength (nm)", limits=c(400, 900), expand=c(0,0)) +
ylim(0, (y_scale + 0.5))+
geom_line(aes(color=Sample), na.rm=TRUE) +
geom_linerange(aes(ymin=average-sem, ymax=average+sem, color=Sample), alpha=0.5, na.rm=TRUE) +
ylab("Absorbance (AU)") + ggtitle(names(summary)[i]) +
theme_classic()
}
plotlist[[33]]

希望这可以帮助!

关于r - 如何在R ggplot2中限制x轴后自动重新计算y轴比例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42416002/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com