首页 > 解决方案 > 如何在ggplot线图中将y轴从负值固定为正值

问题描述

我有以下代码

library(tidyverse)

dat <- structure(list(gene = c("Ahr", "Ahr", "Ahr", "Ahr", "Ahr", "Ahr", 
"Ahr", "Ahr", "Ahr", "Ahr", "Ahr", "Ahr", "Ahr", "Ahr", "Ahr", 
"Ahr", "Ahr", "Ahr", "Ahr", "Ahr", "Ahr", "Ahr", "Ahr", "Ahr", 
"Ahr", "Ahr", "Ahr", "Ahr", "Ahr", "Ahr"), ct = c("A", 
"A", "A", "A", "A", "A", 
"B", "B", "B", 
"B", "B", "B", 
"C", "C", "C", "C", "C", 
"C", "D ", "D ", "D ", 
"D ", "D ", "D ", "E", 
"E", "E", "E", "E", "E"), tc = c("CONTROL", 
"DAY03", "DAY06", "DAY09", "DAY12", "DAY15", "CONTROL", "DAY03", 
"DAY06", "DAY09", "DAY12", "DAY15", "CONTROL", "DAY03", "DAY06", 
"DAY09", "DAY12", "DAY15", "CONTROL", "DAY03", "DAY06", "DAY09", 
"DAY12", "DAY15", "CONTROL", "DAY03", "DAY06", "DAY09", "DAY12", 
"DAY15"), zs = c(-0.408248, -0.408248, -0.408248, -0.408248, 
2.041241, -0.408248, -0.408248, -0.408248, -0.408248, -0.408248, 
-0.408248, 2.041241, -0.908633, 0.996489, 0.732923, -0.908633, 
0.996489, -0.908633, -0.408248, 2.041241, -0.408248, -0.408248, 
-0.408248, -0.408248, -0.408248, -0.408248, -0.408248, -0.408248, 
2.041241, -0.408248)), row.names = c(NA, -30L), class = c("tbl_df", 
"tbl", "data.frame"))


zslp <- ggplot(dat, aes(x = tc, y = zs, group = 1)) +
  geom_line() +
  # ylim(c(-2, 2)) + # to be uncomment
  facet_wrap(~ct) +
  theme_bw() + 
  theme(axis.text.x=element_text(angle = 90, hjust = 1, vjust = 0.5)) +
  xlab("") 

zslp

这产生了这个情节:

在此处输入图像描述

请注意,y 轴的范围从 -1 到 2。我想要做的是将它从 -2 修复到 2。

所以我取消了这一行的注释:

ylim(c(-2, 2)) +

但它产生的情节是这样的:

在此处输入图像描述

请注意,A、B、D、E 面板是平的。我该如何解决这个问题?

标签: rggplot2

解决方案


使用coord_cartesian代替ylim

zslp <- ggplot(dat, aes(x = tc, y = zs, group = 1)) +
  geom_line() +
  coord_cartesian(ylim=c(-2,2)) +
  facet_wrap(~ct) +
  theme_bw() + 
  theme(axis.text.x=element_text(angle = 90, hjust = 1, vjust = 0.5)) +
  xlab("") 

zslp

诀窍是,如果您使用ylim, ggplot 将忽略所有不在限制之间的值(并且您确实有一些高于 2 的值)。coord_cartesian无论如何都绘制了这些值


推荐阅读