#r #ggplot2
Вопрос:
Как удалить лишнее пространство на графике? scale_y_continuous также не работает.
ggplot(data = data_div_1, aes(x = Initiative, y = Record, fill = Type))
geom_bar(stat = "identity")
geom_hline(yintercept = 0, size = 2, colour = 'gray50')
scale_x_discrete(limits = rev(data_div_1$Initiative))
scale_y_continuous(breaks = breaks_values, labels = abs(breaks_values))
coord_flip()
theme_economist_white(gray_bg = FALSE)
scale_fill_manual(values = c("#1A476F", "#2D6D66"))
labs(title = "Theme 1", x = "", y = "", fill = "")
theme(legend.position = "none")
break_values
-15 -10 -5 0 5 10 15
Я должен переделать этот расходящийся график для семи предметов, и все они имеют одинаковые результаты.
Если scale_x_discrete()
удалено, показывает правильную посадку, но перевернутые метки.
dput(data_div_1)
structure(list(Theme = c("Theme 1", "Theme 1", "Theme 1", "Theme 1",
"Theme 1", "Theme 1", "Theme 1", "Theme 1", "Theme 1", "Theme 1"
), Initiative = c("Initiative 1", "Initiative 2", "Initiative 3",
"Initiative 4", "Initiative 5", "Initiative 1", "Initiative 2",
"Initiative 3", "Initiative 4", "Initiative 5"), Type = c("Desirability",
"Desirability", "Desirability", "Desirability", "Desirability",
"Feasibility", "Feasibility", "Feasibility", "Feasibility", "Feasibility"
), Record = c(10, 9.5, 11, 11.5, 7.5, -9, -8.5, -9, -8.5, -8.5
), Label = c("Theme 1: Initiative 1", "Theme 1: Initiative 2",
"Theme 1: Initiative 3", "Theme 1: Initiative 4", "Theme 1: Initiative 5",
"Theme 1: Initiative 1", "Theme 1: Initiative 2", "Theme 1: Initiative 3",
"Theme 1: Initiative 4", "Theme 1: Initiative 5")), class = "data.frame", row.names = c(NA,
-10L))
Комментарии:
1. Если
Initiative
это фактор, попробуйте?droplevels
, кажется, что есть уровни без фактических данных, отсюда и пробелы. Что касается пределов оси y, задайтеscale_y_continuous
аргументlimits = range(break_values)
.2. Автозаполнение разрешается, когда я удаляю scale_x_discrete. Как я могу изменить порядок оси y без искажения графика, перевернутого при coord_flip()
3. Не могли бы вы привести пример рабочих данных
dput(data_div_1)
?
Ответ №1:
Это может быть достигнуто с помощью rev(unique(...))
вот так:
library(ggplot2)
library(ggthemes)
breaks_values <- c(-15L, -10L, -5L, 0L, 5L, 10L, 15L)
ggplot(data = data_div_1, aes(x = Initiative, y = Record, fill = Type))
geom_bar(stat = "identity")
geom_hline(yintercept = 0, size = 2, colour = 'gray50')
scale_x_discrete(limits = rev(unique(data_div_1$Initiative)))
scale_y_continuous(breaks = breaks_values, labels = abs(breaks_values))
coord_flip()
theme_economist_white(gray_bg = FALSE)
scale_fill_manual(values = c("#1A476F", "#2D6D66"))
labs(title = "Theme 1", x = "", y = "", fill = "")
theme(legend.position = "none")