y 轴上的不等间隔
Unequal intervals on y-axis
我想根据已发布的汇总数据绘制风险比 (hr) 和置信区间,其中我在 x 轴上有相应的出版物,在 y 轴上有风险比。
目前,我的 y 轴显示为:(-3, -2, -1, 0, 1, 2, 3),这给出了小时的“不对称”缩放。
如何将 y 轴编程为:(0.3, 0.2, 0.1, 0, 1, 2, 3),这将给出“正确”的小时比例?
#require(plotrix)
#Create a data frame containing hr and confidence intervals
mean <- c(0.73, 0.7, 0.6, 0.74, 0.9, 0.96, 0.87, 0.74)
lowerlimit <- c(0.1, 0.4, 0.34, 0.29, 0.79, 0.86, 0.72, 0.57)
upperlimit <- c(5.55, 1.16, 0.99, 1.85, 1.03, 1.17, 1.04, 1.12)
df <- data.frame(cbind(upperlimit,lowerlimit, mean))
#Create a plot of the hr and CI for the respective publications
plot(df$mean, ylim = c(-3, 3), xlim = c(1,8), xaxt="n")
axis(1, at=seq(1:8), las=2,
labels=c("study1", "study2", "study3", "study4", "study5", "study6", "study7", "study8"))
plotCI(df$mean, y=NULL, uiw=df$upperlimit, liw=df$lowerlimit, err="y", pch=20, slty=3, scol = "blue", add=TRUE)
Ps。如果无法修改间隔,则有一个中间步骤,其中 (1/lowerlimit)
将给出正确的缩放比例,但给出“错误的数字”。然后,硬编码 y 轴可能被证明是一个解决方案(尝试过但没有成功)。
可能有几种方法可以做到这一点。这是我的 ggplot
方法。你可以相应地打扮它。
您的数据
mean <- c(0.73, 0.7, 0.6, 0.74, 0.9, 0.96, 0.87, 0.74)
lowerlimit <- c(0.1, 0.4, 0.34, 0.29, 0.79, 0.86, 0.72, 0.57)
upperlimit <- c(5.55, 1.16, 0.99, 1.85, 1.03, 1.17, 1.04, 1.12)
study <- c(1:8)
df <- data.frame(cbind(upperlimit,lowerlimit, mean, study))
我的ggplot
方法:
library(ggplot2)
labels <- paste("Study", c(1:8))
df %>%
ggplot(aes(x = study, y= mean)) +
geom_point() +
geom_errorbar(aes(ymin = lowerlimit, ymax = upperlimit), width = 0.1) +
scale_y_log10() +
scale_x_continuous(breaks = c(1:8), labels = labels)
你得到:
我想根据已发布的汇总数据绘制风险比 (hr) 和置信区间,其中我在 x 轴上有相应的出版物,在 y 轴上有风险比。
目前,我的 y 轴显示为:(-3, -2, -1, 0, 1, 2, 3),这给出了小时的“不对称”缩放。
如何将 y 轴编程为:(0.3, 0.2, 0.1, 0, 1, 2, 3),这将给出“正确”的小时比例?
#require(plotrix)
#Create a data frame containing hr and confidence intervals
mean <- c(0.73, 0.7, 0.6, 0.74, 0.9, 0.96, 0.87, 0.74)
lowerlimit <- c(0.1, 0.4, 0.34, 0.29, 0.79, 0.86, 0.72, 0.57)
upperlimit <- c(5.55, 1.16, 0.99, 1.85, 1.03, 1.17, 1.04, 1.12)
df <- data.frame(cbind(upperlimit,lowerlimit, mean))
#Create a plot of the hr and CI for the respective publications
plot(df$mean, ylim = c(-3, 3), xlim = c(1,8), xaxt="n")
axis(1, at=seq(1:8), las=2,
labels=c("study1", "study2", "study3", "study4", "study5", "study6", "study7", "study8"))
plotCI(df$mean, y=NULL, uiw=df$upperlimit, liw=df$lowerlimit, err="y", pch=20, slty=3, scol = "blue", add=TRUE)
Ps。如果无法修改间隔,则有一个中间步骤,其中 (1/lowerlimit)
将给出正确的缩放比例,但给出“错误的数字”。然后,硬编码 y 轴可能被证明是一个解决方案(尝试过但没有成功)。
可能有几种方法可以做到这一点。这是我的 ggplot
方法。你可以相应地打扮它。
您的数据
mean <- c(0.73, 0.7, 0.6, 0.74, 0.9, 0.96, 0.87, 0.74)
lowerlimit <- c(0.1, 0.4, 0.34, 0.29, 0.79, 0.86, 0.72, 0.57)
upperlimit <- c(5.55, 1.16, 0.99, 1.85, 1.03, 1.17, 1.04, 1.12)
study <- c(1:8)
df <- data.frame(cbind(upperlimit,lowerlimit, mean, study))
我的ggplot
方法:
library(ggplot2)
labels <- paste("Study", c(1:8))
df %>%
ggplot(aes(x = study, y= mean)) +
geom_point() +
geom_errorbar(aes(ymin = lowerlimit, ymax = upperlimit), width = 0.1) +
scale_y_log10() +
scale_x_continuous(breaks = c(1:8), labels = labels)
你得到: