用异常值连续缩放GGR图中的y轴
我有一个关于在用异常值连续缩放GGR图中的y轴,r,ggplot2,scale,R,Ggplot2,Scale,我有一个关于在R中使用ggplot可视化数据的问题。具体而言,关于异常值情况下y轴的缩放 让我们从一个样本数据集开始,该数据集包含来自31个ID的观察结果。30个ID在预期范围内,有一个异常值: # Load libraries library(tidyverse) library(ggbeeswarm) library(data.table) # Set seed set.seed(123) # Create dataset ID <- sprintf("ID-%s",seq(1:3
R
中使用ggplot
可视化数据的问题。具体而言,关于异常值情况下y轴的缩放
让我们从一个样本数据集开始,该数据集包含来自31个ID的观察结果。30个ID在预期范围内,有一个异常值:
# Load libraries
library(tidyverse)
library(ggbeeswarm)
library(data.table)
# Set seed
set.seed(123)
# Create dataset
ID <- sprintf("ID-%s",seq(1:30))
baseline <- rnorm(30, mean = 50, sd = 3)
df <- data.frame(ID, baseline) %>%
mutate(`1` = baseline - rnorm(1, mean = 5, sd = 4),
`2` = `1` - rnorm(1, mean = 3, sd = 5),
`3` = `2` - rnorm(1, mean = 1, sd = 3))
# Add outlier
df <- as.data.frame(rbindlist(list(df, list("ID-31", 0.01, 0.02, 0.03 ,1))))
df <- df %>%
pivot_longer(-ID) %>%
rename(time = name) %>%
mutate(time = as.factor(time))
#Plot
ggplot(data = df, aes(x=time, y = value)) +
geom_quasirandom() +
theme_classic() +
scale_x_discrete(limits = c("baseline", "1", "2", "3") ) +
labs(x = "Time", y = "Value")
#加载库
图书馆(tidyverse)
图书馆(ggbeeswarm)
库(数据表)
#播种
种子集(123)
#创建数据集
ID我不知道任何关于使用ggplot的y轴断裂的情况,但是如果您可以提前指定哪个ID将是异常值,那么这将实现类似的效果
library(tidyverse)
library(ggbeeswarm)
library(data.table)
# Set seed
set.seed(123)
# Create dataset
ID <- sprintf("ID-%s",seq(1:30))
baseline <- rnorm(30, mean = 50, sd = 3)
df <- data.frame(ID, baseline) %>%
mutate(`1` = baseline - rnorm(1, mean = 5, sd = 4),
`2` = `1` - rnorm(1, mean = 3, sd = 5),
`3` = `2` - rnorm(1, mean = 1, sd = 3))
# Add outlier
df <- as.data.frame(rbindlist(list(df, list("ID-31", 0.01, 0.02, 0.03 ,1))))
df <- df %>%
pivot_longer(-ID) %>%
rename(time = name) %>%
mutate(time = as.factor(time),
is_outlier = (as.character(ID) == "ID-31"))
ggplot(data = df, aes(x=time, y = value)) +
geom_point() +
facet_grid(rows = vars(is_outlier),
scales = "free_y",
switch = "y") +
theme_classic() +
scale_x_discrete(limits = c("baseline", "1", "2", "3") ) +
labs(x = "Time", y = "Value")
库(tidyverse)
图书馆(ggbeeswarm)
库(数据表)
#播种
种子集(123)
#创建数据集
ID我不知道任何关于使用ggplot的y轴断裂的情况,但是如果您可以提前指定哪个ID将是异常值,那么这将实现类似的效果
library(tidyverse)
library(ggbeeswarm)
library(data.table)
# Set seed
set.seed(123)
# Create dataset
ID <- sprintf("ID-%s",seq(1:30))
baseline <- rnorm(30, mean = 50, sd = 3)
df <- data.frame(ID, baseline) %>%
mutate(`1` = baseline - rnorm(1, mean = 5, sd = 4),
`2` = `1` - rnorm(1, mean = 3, sd = 5),
`3` = `2` - rnorm(1, mean = 1, sd = 3))
# Add outlier
df <- as.data.frame(rbindlist(list(df, list("ID-31", 0.01, 0.02, 0.03 ,1))))
df <- df %>%
pivot_longer(-ID) %>%
rename(time = name) %>%
mutate(time = as.factor(time),
is_outlier = (as.character(ID) == "ID-31"))
ggplot(data = df, aes(x=time, y = value)) +
geom_point() +
facet_grid(rows = vars(is_outlier),
scales = "free_y",
switch = "y") +
theme_classic() +
scale_x_discrete(limits = c("baseline", "1", "2", "3") ) +
labs(x = "Time", y = "Value")
库(tidyverse)
图书馆(ggbeeswarm)
库(数据表)
#播种
种子集(123)
#创建数据集
在这种情况下,IDcoord\u cartesian()
可能比scale\u y\u continuous()
更可取,但0处的值仍然不可见。使用包放大上限范围可能是一个选项。或scale\u y\u log10()
。还是两个方面?在这种情况下,coord\u cartesian()
可能比scale\u y\u continuous()
更可取,但0处的值仍然不可见。使用包放大上限范围可能是一个选项。或scale\u y\u log10()
。还是两个方面?或者是一个断裂的轴,这通常是理所当然地被阻止的。