В искусственных данных, которые я создал для MWE ниже, я попытался продемонстрировать сущность скрипта, который я создал в R. Как видно из графика, полученного из этого кода, при одном из моих условий я не имеют значение «Нет», чтобы завершить серию.
Мне сказали, что если я не смогу сделать этот последний столбец, в котором, к сожалению, нет дополнительных рядов, таких же тонких, как столбцы в других местах графика, мне не будет разрешено использовать эти графики. К сожалению, это проблема, потому что сценарий, который я написал, создает сотни графиков одновременно со статистикой, индикаторами значимости, распространенными планками погрешностей и интеллектуальными настройками оси Y (эти функции, конечно, отсутствуют в MWE).
Несколько других комментариев:
Не гарантируется, что этот столбец исключений будет в конце графика... поэтому ручная настройка, чтобы заставить серию изменить цвет и инвертировать порядок, оставив дополнительное пространство в правой части, ненадежна.
Я попытался смоделировать данные как константу 0, чтобы серия «присутствовала», но была невидима, но, как и следовало ожидать, порядок серии c (Нет, Да) делает этот пропуск пробела, что также неприемлемо. Вот как здесь был дан ответ на этот же вопрос, но, к сожалению, он не работает для меня с моими ограничениями: Постоянная ширина для geom_bar в случае отсутствия данных и Включить пробел для отсутствующего уровня фактора, используемого в эстетике заливки в geom_boxplot
Я также пытался сделать это с фасетами, но там возникло множество проблем, включая разрывы строк и ошибки в аннотациях, которые я добавляю к оси x.
MWE:
library(ggplot2)
print("Program started")
x <- c("1","2","3","1","2","3","4")
s <- c("No","No","No","Yes","Yes","Yes","Yes")
y <- c(1,2,3,2,3,4,5)
df <- as.data.frame(cbind(x,s,y))
print(df)
gg <- ggplot(data = df, aes_string(x="x", y="y", weight="y", ymin=paste0("y"), ymax=paste0("y"), fill="s"));
dodge_str <- position_dodge(width = NULL, height = NULL);
gg <- gg + geom_bar(position=dodge_str, stat="identity", size=.3, colour = "black")
print(gg)
print("Program complete - a graph should be visible.")
a
отсутствует, и его место сохранено, а здесьNo
отсутствует, и его место сдвинуто. Странно, я не могу сказать, почему это происходит. - person tonytonov   schedule 06.03.2015