Моя цель - воспроизвести этот сюжет, и моя проблема заключается в воспроизведении градиентной заливки в каждом баре.
ДОБАВЛЕНО после COMMENT Хороший комментарий @PavoDive направляет нас к вопросу, который в основном говорит: "Вы не можете сделать это с ggplot2, и, кроме того, это плохая идея, даже если вы можете это сделать". Согласился, что это плохой графический выбор, но для дидактических целей я хотел воссоздать оригинал, а затем показать улучшения. Итак, есть ли программное решение?
С данными, которые следуют за кодом ggplot
, я закрылся, за исключением последовательной градиентной раскраски, которая одинакова для каждого бара (и крошечных меток). Но мои усилия приводят к заполнению баров, чтобы они соответствовали значению y, в то время как на исходном графике каждая панель заполнена одним и тем же шаблоном. Как достичь этого эффекта?
ggplot(df, aes(x = x, y = y, fill = y)) +
geom_hline(yintercept = seq(0, .35, .05), color = "grey30", size = 0.5, linetype = "solid") +
geom_bar(stat = "identity", width = 0.4) +
scale_fill_gradient(low='green4', high='green1', guide = FALSE) +
theme(legend.position = "none") +
theme_minimal() +
geom_text(data = df, aes(label = scales::percent(y), vjust = -.5)) +
theme(axis.text.y = element_blank()) +
theme(axis.ticks = element_blank()) +
labs(y = "", x = "") +
ggtitle("Question 15: Do you feel prepared to comply with the upcoming December
2015 updated requirements of the FRCP that relate to ediscovery") +
theme(plot.title = element_text(face = "bold", size = 18)) +
theme(panel.border = element_blank())
Данные
df <- data.frame(x = c("Prepared", "Somewhat\nprepared", "Not prepared", "Very prepared"),
y = c(.32, .31, .20, .17))
df$x <- factor(df$x, levels = c("Prepared", "Somewhat\nPrepared", "Not Prepared", "Very Prepared"))