Отобразите нули другим цветом в ggplot geom_bar - PullRequest
0 голосов
/ 30 марта 2020

В ggplot (geom_bar) я хочу построить нулевые значения другим цветом.

Код для самой гистограммы:

ggplot(Rodeococha, aes(x=Age ,y=Quantity)) + 
geom_bar(color="dark red", stat = "identity")

И используя инструкции по окраске, определяющие c значения, найденные на другой странице, которые я пробовал , разделяя мои значения на интервалы и создавая:

 ggplot(data= Rodeococha, aes(x= Age ,y= Quantity)) + 
 geom_bar(aes(colour = cut(qsec, c(-Inf,0,Inf))), stat = "identity") +
  scale_colour_manual(name = "qsec", values = c("(-Inf,0]" = "black",
                                                 "(0,Inf]" = "red"))

Атм, выдает ошибку

Ошибка обрезки (qse c, c (- Inf, 0, Inf)): объект 'qse c' не найден.

До этой ошибки он также выдал несколько других ошибок, поэтому вместо того, чтобы уделить еще больше времени решению этой одной ошибки, я подумал, почему бы не спросить совета, может быть, есть кто-то еще с лучшей идеей.

Редактировать: ответ от @Tjebo сработал.

Для разъяснения другим: на самом деле график представляет собой сложенный график с 7 осями X, каждый из которых содержит несколько столбцов. Этот код был просто первой осью X. Отображение нулей другим цветом облегчило интерпретацию.

1 Ответ

0 голосов
/ 30 марта 2020

Ваш код не воспроизводится, поэтому я использую другой набор данных. Во-первых, гистограммы могут не подходить здесь. Трудно показать «нули» с помощью гистограммы. Я увеличиваю размер линии, чтобы показать эффект , и вы увидите, что это имеет совершенно нежелательный побочный эффект .

Для вашего вопроса просто используйте условное выражение в качестве эстетики c. См. Ниже

Если это не то, что вам нужно, предоставьте лучшие образцы данных и желаемый результат.

library(ggplot2)
ggplot(mtcars, aes(x= cyl,y= vs)) + 
  geom_bar(stat = "identity", size = 3, aes(color = vs == 0)) +
  scale_colour_manual(name = "vs", values = c(`TRUE` = 'black',`FALSE` = "red"))

Создано в 2020- 03-30 представительный пакет (v0.3.0)

...