在ggplot,R中更改离散轴刻度线

时间:2015-04-09 17:52:28

标签: r ggplot2

我正在创建一个图表,显示每个因子的两个模型的置信区间。因此,如果我的因素是' A' B' C' 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()  

1 个答案:

答案 0 :(得分:0)

我认为您最好的选择是更改数据框,以便因子和模型是单独的列。

这样,滴答声会自动按照你想要的方式出现。默认情况下,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')

enter image description here