我正在嘗試繪制一個圖表,其中一個系列是一列,另一個是帶點的線。當我使用下面的代碼繪制資料時,它以我想要的方式繪制。但是,圖表中沒有圖例。有沒有辦法強制傳說出現?
添加show.legend = T和group = xxx沒有區別。
data <- data.frame(
A = c(1, 2, 3),
B = c(1, 2, 3),
C = c(2, 3, 4)
)
ggplot(data, aes(x = A))
geom_line(aes(y = C))
geom_point(aes(y = C))
geom_col(aes(y = B))

uj5u.com熱心網友回復:
我找到了一個不太優雅但適用于我的案例的解決方案。
data.2 <- data.frame(
A = c(1, 2, 3, 1, 2, 3),
D = c('B', 'B', 'B', 'C', 'C', 'C'),
B = c(1, 2, 3, NA, NA, NA),
C = c(NA, NA, NA, 2, 3, 4)
)
data.2 %>%
ggplot(aes(x = A, y = C, col = D, fill = D))
geom_line()
geom_point()
geom_col(aes(y = B))
scale_color_manual(values = c('black', 'red'), breaks = c('B', 'C'))
scale_fill_manual(values = c('grey', 'transparent'), breaks = c('B', 'C'))

uj5u.com熱心網友回復:
你可以保持相同的資料結構,但它仍然很尷尬,因為 ggplot 并不真正“想要”你這樣做(將美學映射到不是真正“真實”美學的事物);
ggplot(data = data,aes(x = A))
geom_line(aes(y = C,color = "C"))
geom_col(aes(y = B,color = "B",fill = "B"),fill = "blue")
scale_color_manual(values = c("C" = "red","B" = "blue"))
scale_fill_manual(values = c("C" = "red","B" = "blue"))
guides(color = guide_legend(override.aes = list(fill = "white")))
您在這里嘗試完成的作業更接近于 ggplot 考慮的“注釋”,即您有兩個非常不同的元素(一條線和一些條),我通常會在圖表中添加注釋來標記它們。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/315836.html
