Изменить цвет поднабора меток в графике R - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь настроить барплот так, чтобы только несколько этикеток отображались другим цветом.Я знаю, что раньше был похожий вопрос ( Измените цвет подмножества групповых меток в блокпосте в 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

, а код для барплота выглядит так:

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")))

, но затем я получаю ошибку «Ошибка в barplot $ trait2: $ оператор недопустим для атомарных векторов. Это имеет смысл, но я все еще не знаю, какрешите это.

Было еще одно предложение использовать

 + scale_colour_manual(values = c("B" = "red"))

, которое я не могу понять. (Где я должен вставить это?)

Я надеюсь, что кто-то можетпомогите, заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

вы можете попробовать

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

0 голосов
/ 07 июня 2018

Использовать ggplot гораздо проще и элегантнее, чем встроенная библиотека черчения.scale_color_manual и scale_fill_manual могут быть вставлены в код ggplot.Читайте об этом здесь (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()  

Это аргумент "заливки", который изменяет цвет. Используется аргумент "цвета"для графических объектов, таких как линии и точки.

...