Есть много способов сделать это. Вот график X
на оси X, сгруппированный по Y
с использованием facet_grid
.
library(ggplot2)
ggplot(data = HW1b, aes(x = factor(X), y = Z)) +
geom_bar(stat = "identity", color = "Black", fill = "steelblue", width = 0.5) +
scale_x_discrete(name = "X") +
facet_grid(Y ~ .)
![enter image description here](https://i.stack.imgur.com/Dx9T8.png)
Вы также можете переместить ось с помощью coord_flip
.
ggplot(data = HW1b, aes(x = factor(X), y = Z)) +
geom_bar(stat = "identity", color = "Black", fill = "steelblue", width = 0.5) +
scale_x_discrete(name = "X") +
coord_flip() +
facet_grid(Y ~ .)
![enter image description here](https://i.stack.imgur.com/kKZZn.png)
Или используйте facet_grid(Y ~ X, scales = "free_x)
ggplot(data = HW1b, aes(x = factor(X), y = Z)) +
geom_bar(stat = "identity", color = "Black", fill = "steelblue", width = 0.5) +
scale_x_discrete(name = "") +
facet_grid(Y ~ X, scales = "free_x")
![enter image description here](https://i.stack.imgur.com/0Eodn.png)
Или карта Y
на fill
.
ggplot(data = HW1b, aes(x = factor(X), y = Z, fill = factor(Y))) +
geom_bar(stat = "identity", color = "Black", width = 0.5) +
scale_x_discrete(name = "X") +
scale_fill_viridis_d(name = "Y") +
coord_flip()
![enter image description here](https://i.stack.imgur.com/vR4Np.png)
Или используйте position = "dodge"
для создания гистограммы группы.
ggplot(data = HW1b, aes(x = factor(X), y = Z, fill = factor(Y))) +
geom_bar(stat = "identity", position = "dodge", color = "Black", width = 0.5) +
scale_x_discrete(name = "X") +
scale_fill_viridis_d(name = "Y")
![enter image description here](https://i.stack.imgur.com/Zo9qX.png)
И это не гистограмма, но вы также можете рассмотреть возможность использования geom_tile
для отображения Z
в качестве fill
.
ggplot(data = HW1b, aes(x = X, y = Y, fill = Z)) +
geom_tile(color = "Black") +
scale_fill_viridis_c()
![enter image description here](https://i.stack.imgur.com/U2fIQ.png)
DATA
HW1b <- structure(list(X = c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 4L,
4L, 4L, 5L, 5L, 5L, 6L, 6L, 6L, 7L, 7L, 7L), Y = c(1L, 2L, 3L,
1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L,
2L, 3L), Z = c(113L, 109L, 105L, 80L, 122L, 88L, 104L, 98L, 93L,
105L, 99L, 105L, 99L, 105L, 94L, 104L, 110L, 109L, 106L, 93L,
125L)), row.names = c(NA, -21L), class = c("tbl_df", "tbl", "data.frame"
))