更改条形图R

时间:2018-06-07 11:51:16

标签: r plot colors label customization

我正在尝试调整我的条形图,以便只有少数标签以不同的颜色显示。我知道之前有一个类似的问题(Change the color of a subset of group labels in a boxplot in R),但答案并没有帮助我和我在网上找到的其他所有东西,所以我真的非常感谢你的帮助。

我的数据如下:

trait2 <- c('A','B','C','D')
rg <- c (0.5480, 0.4801, 0.2805, -0.2480)
se <- c(0.0495, 0.0908, 0.0548, 0.0957)
data <- data.frame(trait2,rg,se)
data
 trait2   rg      se
 A       0.5480  0.0495
 B       0.4801  0.0908
 C       0.2805  0.0548
 D       -0.2480  0.0957

并且barplot的代码如下所示:

barplot1 <- barplot(data$rg,
main="correlation between traits",
xlab="rG",  
border="blue", 
las=1, 
horiz=TRUE, 
names.arg=data$trait2, 
font.axis=2
cex.names=0.5,
xlim=range(-0.4,0.6,0.1) )

enter image description here

我现在想改变A和C标签的颜色,但B和D应保持黑色。

我试过这个,正如我在上面提到的链接中描述的那样:

mtext(barplot1$trait2, at = 1:length(barplot1$trait2, side=1, line=1,  
col=ifelse(barplot$trait1=="A", "red", "black")))

然后我得到错误&#34; barplot $ trait2中的错误:$运算符对原子向量无效。这是有道理的,但我仍然不知道如何解决它。

还有另一个使用

的建议
 + scale_colour_manual(values = c("B" = "red"))

我真的无法理解。 (我应该在哪里插入?)

我希望有人可以帮助我,提前谢谢!

2 个答案:

答案 0 :(得分:1)

你可以尝试

barplot1 <- barplot(data$rg,
                    main="correlation between traits",
                    xlab="rG",  
                    border="blue", 
                    las=1, 
                    horiz=TRUE, 
                    font.axis=2,
                    cex.names=0.5,
                    xlim=range(-0.4,0.6,0.1))

axis(2, at = barplot1[c(1,3)], labels = data$trait2[c(1,3)], col.axis = 2)
axis(2, at = barplot1[c(2,4)], labels = data$trait2[c(2,4)], col.axis = 1)

enter image description here

在ggplot中你可以尝试

 ggplot(data, aes(trait2, rg)) + 
   geom_col(colour="blue", fill="grey") +
   coord_flip() +
   theme_bw() +
   theme(axis.text.y = element_text(colour = rep(c(2,1),2), size=20))

enter image description here

答案 1 :(得分:-1)

使用ggplot比内置绘图库更容易,更优雅。可以在ggplot代码中插入scale_color_manualscale_fill_manual。请在此处阅读(http://r4ds.had.co.nz/data-visualisation.html)。

以下是为条形图上色的示例。

library(tidyverse) #this package contains many other useful packages included ggplot    

data <- tibble(total = c(5, 6, 4, 3), month = c("april", "may", "june", "july")  
# tibble is used to create a type of data.frame object.

ggplot(data = data, aes(x = month, y = total, fill = type)) +
  geom_col()  

它改变了颜色的“填充”论证。 “color”参数用于图形对象,如直线和点。