Как покрасить весь сегментированный столбец в один и тот же цвет - PullRequest
0 голосов
/ 19 сентября 2019

Использование данных mtcars:

example<-as.matrix(mtcars)
barplot(example)

Предоставляет многосегментную полосу.

enter image description here Теперь я хочу сделать каждую полосу одного цвета.

Итак, я использую:

barplot(example,col=c("red","blue"))

В результате я чередую каждый сегмент красного и синего.То, что я хочу, - это весь столбик одного цвета, а каждый столбец - разного цвета.enter image description here

1 Ответ

0 голосов
/ 19 сентября 2019

Ответ в том, что вы не можете сделать это с barplot.Если вы посмотрите на исходный код штрихового графика, вы обнаружите следующие соответствующие строки:

for (i in 1L:NC) {
  xyrect(height[1L:NR, i] + offset[i], w.l[i], 
         height[-1, i] + offset[i], w.r[i], horizontal = horiz, 
         angle = angle, density = density, col = col, 
         border = border)
[...]

То есть каждый столбец создается в цикле с использованием набора того же цветов.Таким образом, без переписывания барплота вы не сможете добиться того, что хотите.

Решение ggplot2 будет выглядеть следующим образом:

library(ggplot2)
library(tidyr)

ggplot(mtcars %>% gather(), 
        aes(key, value, fill = key)) +
   geom_col(color = "black")

Barplot

...