我正在尝试调整我的条形图,以便只有少数标签以不同的颜色显示。我知道之前有一个类似的问题(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) )
我现在想改变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"))
我真的无法理解。 (我应该在哪里插入?)
我希望有人可以帮助我,提前谢谢!
答案 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)
在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))
答案 1 :(得分:-1)
使用ggplot
比内置绘图库更容易,更优雅。可以在ggplot代码中插入scale_color_manual
和scale_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”参数用于图形对象,如直线和点。