我有一個包含日期和值的資料框:
n = 1000
date = seq(as.Date("2022/1/1"), by = "day", length.out = n)
value = rnorm(n,0,1)
df = tibble(date,value);df
我如何繪制此資料框并在 geom_line 或 geom_point 中繪制兩個指向值變數的最大值和最小值的箭頭?
ggplot(data =df, aes(x = date,y=value))
geom_point()
ggplot(data =df, aes(x = date,y=value))
geom_line()
有什么幫助嗎?
uj5u.com熱心網友回復:
更新:一種方法是使用額外的包,如 ``ggpmisc orgghighlight`:
ggpmisc
library(ggplot2)
library(ggpmisc)
ggplot(data =df, aes(x = date,y=value))
geom_point()
geom_point(data = df[which.max(df$value), ], color="red",
size=3)
stat_peaks(span = NULL,
geom = "text_s",
x.label.fmt = "my text",
segment.colour = "blue",
arrow = grid::arrow(length = unit(0.1, "inches")),
position = position_nudge_keep(x = 90, y = 0.1),
hjust = 0)

或者
gghighlight:
library(gghighlight)
library(dplyr)
library(ggplot2)
df %>%
mutate(my_label = ifelse(value == max(value), "my text", "")) %>%
ggplot(aes(x = date,y=value))
geom_point()
gghighlight(value == max(value),
use_direct_label = TRUE,
label_key = my_label,
label_params = list(size=3,
color="red"))
geom_point(col = "red", size = 3)

通過添加 unhighlighted_colour = alpha("black", 1),我們可以保持原始 geom_point 的顏色:

第一個答案: 也許這個也有幫助:將最大值著色為紅色:
library(ggplot2)
ggplot(data =df, aes(x = date,y=value))
geom_point()
geom_point(data = df[which.max(df$value), ], color="red",
size=3)

uj5u.com熱心網友回復:
最簡單的方法是為注釋創建一個資料框,然后將其添加到繪圖中。
這里我制作了maxmin_df,里面包含了最大值和最小值的詳細資訊,然后添加一個geom_segment()將它們添加到ggplot().
您需要決定線條和箭頭的外觀。
max_df <- tibble(y = max(df$value),
yend = y,
x = df$date[which(df$value == y)] lubridate::days(5),
xend = x lubridate::days(50))
minmax_df <- bind_rows(max_df,
c(tibble(y = min(df$value),
yend = y,
x = df$date[which(df$value == y)] lubridate::days(5),
xend = x lubridate::days(50))
)
)
ggplot(data = df, aes(x = date,y=value))
geom_point()
geom_segment(data = minmax_df, aes(x = xend, xend = x, y = y, yend = yend), colour = "red", arrow = arrow())

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/535926.html
標籤:r数据框图表2
