Tôi có câu hỏi liên quan đến trường điền trong geom_bar
của gói ggplot2.đặt hàng và điền vào với 2 biến khác nhau geom_bar ggplot2 R
Tôi muốn điền vào geom_bar của tôi với một biến (trong ví dụ tiếp theo biến được gọi là var_fill
) nhưng đặt hàng geom_plot
với biến khác (được gọi là clarity
trong ví dụ).
Tôi có thể làm như thế nào?
Cảm ơn bạn rất nhiều!
Ví dụ:
rm(list=ls())
set.seed(1)
library(dplyr)
data_ex <- diamonds %>%
group_by(cut, clarity) %>%
summarise(count = n()) %>%
ungroup() %>%
mutate(var_fill= LETTERS[sample.int(3, 40, replace = TRUE)])
head(data_ex)
# A tibble: 6 x 4
cut clarity count var_fill
<ord> <ord> <int> <chr>
1 Fair I1 210 A
2 Fair SI2 466 B
3 Fair SI1 408 B
4 Fair VS2 261 C
5 Fair VS1 170 A
6 Fair VVS2 69 C
Tôi muốn lệnh này trong những hộp [rõ ràng]:
library(ggplot2)
ggplot(data_ex) +
geom_bar(aes(x = cut, y = count, fill=clarity),stat = "identity", position = "fill", color="black")
với điền này (màu sắc) của hộp [var_fill] :
ggplot(data_ex) +
geom_bar(aes(x = cut, y = count, fill=var_fill),stat = "identity", position = "fill", color="black")
EDIT1: Câu trả lời được tìm thấy bởi missuse:
p1 <- ggplot(data_ex) + geom_bar(aes(x = cut, y = count, group = clarity, fill = var_fill), stat = "identity", position = "fill", color="black")+ ggtitle("var fill")
p2 <- ggplot(data_ex) + geom_bar(aes(x = cut, y = count, fill = clarity), stat = "identity", position = "fill", color = "black")+ ggtitle("clarity")
library(cowplot)
cowplot::plot_grid(p1, p2)
EDIT2: Bây giờ tôi đã cố gắng để làm điều này với phần mở rộng ggmosaic với sự giúp đỡ của missuse
rm(list=ls())
set.seed(1)
library(ggplot2)
library(dplyr)
library(ggmosaic)
data_ex <- diamonds %>%
group_by(cut, clarity) %>%
summarise(count = n()) %>%
ungroup() %>%
mutate(residu= runif(nrow(.), min=-4.5, max=5)) %>%
mutate(residu_classe = case_when(residu < -4~"< -4 (p<0.001)",(residu >= -4 & residu < -2)~"[-4;-2[ (p<0.05)",(residu >= -2 & residu < 2)~"[-2;2[ non significatif",(residu >= 2 & residu < 4)~"[2;4[ (p<0.05)",residu >= 4~">= 4 (p<0.001)")) %>%
mutate(residu_color = case_when(residu < -4~"#D04864",(residu >= -4 & residu < -2)~"#E495A5",(residu >= -2 & residu < 2)~"#CCCCCC",(residu >= 2 & residu < 4)~"#9DA8E2",residu >= 4~"#4A6FE3"))
ggplot(data_ex) +
geom_mosaic(aes(weight= count, x=product(clarity, cut)), fill = data_ex$residu_color, na.rm=T)+
scale_y_productlist() +
theme_classic() +
theme(axis.ticks=element_blank(), axis.line=element_blank())+
labs(x = "cut",y="clarity")
Nhưng tôi muốn thêm huyền thoại này (dưới đây) ở phía bên phải của cốt truyện nhưng tôi không biết làm thế nào tôi có thể làm điều đó bởi vì lĩnh vực điền là aes bên ngoài để scale_fill_manual không hoạt động ...
Cảm ơn bạn nhưng tôi nghĩ để được hoặc sẽ được khấu hao? nó không làm việc với tôi với phiên bản thực tế của ggplot2 trên github – antuki
chắc chắn, phiên bản dev_tools có thể có nhưng bạn cũng có thể quay trở lại phiên bản nếu bạn chỉ cần điều này (google là bạn của bạn trên phiên bản trở lại) – ike