這是一些制作分類條形圖并在圖表上放置平均線的代碼。問題是圖例是分開的,我不知道如何將它們粘在一起。我想我過去制作了一個虛擬變數并將其包含在 scale_manual 引數中,但 geom_vline 不處理“填充”映射。有任何想法嗎?
library(tidyverse)
data(mtcars)
y = mean(mtcars$mpg)
x = unique(mtcars$cyl)
meanDf <-
data.frame(x, y )
mtcars$mean = y
mtcars$group = "mean"
mtcars %>%
ggplot(aes(x = factor(cyl), y = mpg, fill = factor(carb)))
geom_col(position = "dodge")
geom_hline(data = meanDf, aes(yintercept = y, color = ""))
scale_fill_manual(name = "", values = c("blue", "red", "green", "white", "black", "yellow"), labels = paste("myLabel", 1:6))
scale_color_manual(name = "", values = "red", label = "myLabel")
theme(panel.background = element_rect(fill = "white"))
theme(legend.background = element_rect(color = "black", fill = "white"))
uj5u.com熱心網友回復:
我認為為了可讀性,最好將它們分開。但是,出于格式化目的,您可以通過洗掉legend.title(而不僅僅是為其分配一個空字串)并調整legend.marginand來使它們盡可能接近legned.spacing。例如,
library(tidyverse)
data(mtcars)
y = mean(mtcars$mpg)
x = unique(mtcars$cyl)
meanDf <-
data.frame(x, y )
mtcars$mean = y
mtcars$group = "mean"
mtcars %>%
ggplot(aes(x = factor(cyl), y = mpg, fill = factor(carb)))
geom_col(position = "dodge")
geom_hline(data = meanDf, aes(yintercept = y, color = ""))
scale_fill_manual(name = "", values = c("blue", "red", "green", "white", "black", "yellow"), labels = paste("myLabel", 1:6))
scale_color_manual(name = "", values = "red", label = "myLabel")
theme(
legend.title = element_blank(),
legend.margin = margin(t = 0, b = 0, r = 2, l = 2),
legend.spacing.y = unit(.5, "pt")
)
輸出

uj5u.com熱心網友回復:
一種選擇是僅使用fill比例并使用自定義鍵字形。
- 將顏色設定為引數,而不是在aes
geom_hline上映射。color而是""在fillaes 上映射一個常量,例如。缺點是我們會收到警告。 - 為 . 添加額外的顏色和標簽
scale_fill_manual。 - 為了獲得一條線作為 的鍵字形,
geom_hline我使用了一個自定義鍵字形,它有條件地在顏色和默認鍵字形fill之間切換。為了完成這項作業,我使用 a作為我在自定義鍵字形函式內部切換到的 hline 的附加填充顏色。draw_key_pathgeom_col"red2""red"
library(tidyverse)
data(mtcars)
y = mean(mtcars$mpg)
x = unique(mtcars$cyl)
meanDf <- data.frame(x, y )
mtcars$mean = y
mtcars$group = "mean"
draw_key_cust <- function(data, params, size) {
if (data$fill %in% c("red2")){
data$colour <- "red"
data$fill <- NA
draw_key_path(data, params, size)
} else
GeomCol$draw_key(data, params, size)
}
mtcars %>%
ggplot(aes(x = factor(cyl), y = mpg, fill = factor(carb)))
geom_hline(data = meanDf, aes(yintercept = y, fill = ""), color = "red")
geom_col(key_glyph = "cust")
scale_fill_manual(name = NULL, values = c("red2", "blue", "red", "green", "white", "black", "yellow"), labels = c("label", paste("myLabel", 1:6)))
theme(panel.background = element_rect(fill = "white"))
theme(legend.background = element_rect(color = "black", fill = "white"))
#> Warning: Ignoring unknown aesthetics: fill

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/417430.html
標籤:
