我是stackoverflow的新手,需要一些幫助。我想將 y(值)資料著色到 1.35 以上的水平,但似乎無法讓它作業。低于 1.35 時想要 Steelblue,高于 1.35 時想要李子。下面是作業圖減去顏色變化。
我擁有的資料框是
Timestamp Value
20/10/2021 1.56
21/10/2021 1.426
22/10/2021 1.344
23/10/2022 1.23
24/10/2022 1.11
water$Timestamp <- water$Timestamp %>% dmy
river <- ggplot()
coord_cartesian()
layer(
data = water,
mapping = aes(x = Timestamp, y = Value),
stat = "identity",
geom ="point",
position = position_identity()
)
layer(
data = riverwater,
mapping = aes(x = Timestamp, y = Value),
stat ="identity",
geom ="line",
position = position_identity()
)
ggplotly(river)
這是 2 個圖、一條線和另一點的非連續圖的示例

uj5u.com熱心網友回復:
我在這里模擬了一些資料,以幫助使情節更像您的真實案例。
要獲得由 分配的顏色,Value您需要在color內部分配aes()。geom_line()采用group美學定義連接哪些資料點。如果你指定一個分類美學,color = Value > 1.35那么group美學將從那里繼承并分成兩行。如果您想連接所有資料點,您只需設定group = 1以指定您希望它們全部連接在一起。
我還建議您更改代碼中的一些風格方面的內容:
- 看起來您正在將兩個單獨的資料繪制
data.frames成一個圖表。通常,在嘗試合并到單個圖之前,最好將這些資料merge/rbind這些資料以某種方式合并到一個圖中。data.frame - 您的 {ggplot2} 語法有點不尋常。通常,如果您在多個層中使用相同的美學,那么在
ggplot(aes(x = ..., y = ..., color = ...))呼叫中指定這些美學以避免重復自己會更有效。此外,通常通過顯式呼叫geom_*感興趣的或 stat_*` 來添加層(如您在我的代碼中所見)。也就是說,您的代碼在技術上是正確的,并且會通過一些小的調整來生成所需的圖。
library(tidyverse)
library(lubridate)
set.seed(8)
d <- data.frame(Timestamp = seq(ymd("2021-10-20"), ymd("2022-10-24"), by = "days"),
Value = 1.35 cumsum(runif(370, -1, 1)))
d %>%
ggplot(aes(x = Timestamp, y = Value, color = Value > 1.35))
geom_point()
geom_line(aes(group = 1))
scale_color_manual(values=c("Steel blue","plum"))

使用reprex v2.0.2創建于 2022-10-26
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/523477.html
下一篇:堆疊條形圖的ggplot分組圖例
