如何在R格子条形图中改变非分组因子的颜色?

时间:2013-01-28 15:30:24

标签: r plot lattice

我正在尝试使用点阵图形在条形图中绘制数据。我想用一个因子和另一个因子分组(即,第一个因子的位置和第二个因素的位置对比度)。但是,我想用第一个(即位置)系数对条形图进行着色。

在以下示例中,使用成对的红色和蓝色条渲染绘图。相反,我想要两个相邻的红色条,两个相邻的蓝色条和两个相邻的绿色条。

library(lattice)

data = runif( 6 )
facA = rep( c( "a", "b", "c" ), each = 2 )
facB = rep( c( "1", "2" ), 3 )
df = data.frame( "FactorA" = facA, "FactorB" = facB, "Data" = data )
df$FactorA = = as.factor( FactorA )
df$FactorB = = as.factor( FactorB )
test_colors = c( "red", "blue", "green" )
test_plot = barchart(FactorA ~ Data, groups = FactorB, data = df, 
                     horizontal = TRUE, col = test_colors, origin = 0 )
plot( test_plot )

提前致谢!

2 个答案:

答案 0 :(得分:2)

这不完美,但我认为这样做(如果我理解你的问题)。

barchart( FactorB ~ Data | FactorA, data = df, groups=FactorA, 
          horizontal = TRUE, col = test_colors, origin = 0,  layout=c(1,3))

Factor B ~ Data | FactorA表示它会将您的数据划分到与FactorA相对应的面板中,并在每个组内,根据FactorB进行拆分。颜色遵循已定义为groups的颜色。

enter image description here

答案 1 :(得分:0)

如果你想用'ggplot2'做这个,你会这样写:

ggplot(df, aes(x=FactorA, y=data, group=FactorB, fill=FactorA)) +
geom_bar(stat="identity", position="dodge") + 
coord_flip()

从那里开始,它只是化妆品剪裁,以满足您的口味,包括选择填充颜色。