在ggplot,R中更改离散轴刻度线
Changing discrete axis tick marks in ggplot, R
我正在创建一个图来显示每个因素的两个模型的置信区间。因此,如果我的因子是 'A'、'B'、'C',我有六个置信区间 CI1.A、CI2.A、CI1.B、CI2.B、CI1.C、CI2.C。我正在使用一个简单的森林图,但希望 y 轴标签为 A、B、C,其中 A 位于 CI1.A 和 CI2.A 的中间。我怎样才能重新排列刻度线,使它们出现在两个因素的中间?
这是一个玩具示例。我有 49 个因子,所以我需要一种能够读取所有标签的方法。
factors <- c('A1', 'A2', 'B1', 'B2', 'C1', 'C2')
y <- c(1:6)
yhi <- y + .5
ylo <- y - .5
df <- data.frame(factors = factors, y = y, yhi =yhi,
ylo = ylo)
ggplot(df, aes(x=factors, y=y, ymin=ylo, ymax=yhi)) +
geom_linerange() +
coord_flip()
我认为最好的办法是更改数据框,使因子和模型分开列。
这样,刻度会自动按照您想要的方式出现。默认情况下,geom_linerange()
会将两个不同模型的线性范围放置在彼此之上,但您可以使用 position=position_dodge(width=<<NUMBER>>)
更改它。我使用 0.1 将线条几乎但不完全放在彼此之上。如果您希望它们相距更远,请增加该值。我认为您最初的想法是 width=1
.
#load package
require(ggplot2)
#make toy data
models <- rep(c(1,2), 3)
factors <- c('A', 'A', 'B', 'B', 'C', 'C')
df <- data.frame(factors=factors, models=factor(models),
y=1:6, yhi=1:6+0.5, ylo=1:6-0.5)
#do graphing
quartz(height=3, width=6)
ggplot(df, aes(x=factors, y=y, ymin=ylo, ymax=yhi, color=models)) +
geom_linerange(size=2, position=position_dodge(width=0.1)) +
coord_flip() +
theme_bw()
quartz.save('SO_29545579.png')
我正在创建一个图来显示每个因素的两个模型的置信区间。因此,如果我的因子是 'A'、'B'、'C',我有六个置信区间 CI1.A、CI2.A、CI1.B、CI2.B、CI1.C、CI2.C。我正在使用一个简单的森林图,但希望 y 轴标签为 A、B、C,其中 A 位于 CI1.A 和 CI2.A 的中间。我怎样才能重新排列刻度线,使它们出现在两个因素的中间?
这是一个玩具示例。我有 49 个因子,所以我需要一种能够读取所有标签的方法。
factors <- c('A1', 'A2', 'B1', 'B2', 'C1', 'C2')
y <- c(1:6)
yhi <- y + .5
ylo <- y - .5
df <- data.frame(factors = factors, y = y, yhi =yhi,
ylo = ylo)
ggplot(df, aes(x=factors, y=y, ymin=ylo, ymax=yhi)) +
geom_linerange() +
coord_flip()
我认为最好的办法是更改数据框,使因子和模型分开列。
这样,刻度会自动按照您想要的方式出现。默认情况下,geom_linerange()
会将两个不同模型的线性范围放置在彼此之上,但您可以使用 position=position_dodge(width=<<NUMBER>>)
更改它。我使用 0.1 将线条几乎但不完全放在彼此之上。如果您希望它们相距更远,请增加该值。我认为您最初的想法是 width=1
.
#load package
require(ggplot2)
#make toy data
models <- rep(c(1,2), 3)
factors <- c('A', 'A', 'B', 'B', 'C', 'C')
df <- data.frame(factors=factors, models=factor(models),
y=1:6, yhi=1:6+0.5, ylo=1:6-0.5)
#do graphing
quartz(height=3, width=6)
ggplot(df, aes(x=factors, y=y, ymin=ylo, ymax=yhi, color=models)) +
geom_linerange(size=2, position=position_dodge(width=0.1)) +
coord_flip() +
theme_bw()
quartz.save('SO_29545579.png')