在ggplot上绘制与折线图相交的vertical/horizontal条线
Plotting vertical/horizontal lines that intersect line graph on ggplot
以下代码生成以下图:
time_step <- c(1:5, 1:5)
perceived_signal_slow <- c(1:5, cumsum(1:5))
signal_name <- c("perceived","perceived","perceived","perceived","perceived","accumulated","accumulated","accumulated","accumulated","accumulated")
df <- cbind(perceived_signal_slow, signal_name, time_step)
df <- as.data.frame(df)
df$time_step <- as.numeric(as.character(df$time_step))
df$perceived_signal_slow <- as.numeric(as.character(df$perceived_signal_slow))
ggplot(df, aes(x = time_step, y = signal, colour = signal_name)) +
geom_line() +
geom_vline(xintercept = 4, colour = "black", size = 1, alpha = .4) +
geom_hline(yintercept = 10, colour = "black", size = 1, alpha = .4) +
geom_hline(yintercept = 4, colour = "black", size = 1, alpha = .4)
但是 我想限制垂直线和水平线 以便它们一旦触及我的图形的累积和感知线就不会再行进。有人知道我如何修改我的代码来做到这一点吗?
在此先感谢您的帮助!
我们可以使用 geom_segment
:
time_step <- c(1:5, 1:5)
perceived_signal_slow <- c(1:5, cumsum(1:5))
signal_name <- c("perceived","perceived","perceived","perceived","perceived","accumulated","accumulated","accumulated","accumulated","accumulated")
df <- cbind(perceived_signal_slow, signal_name, time_step)
df <- as.data.frame(df)
df$time_step <- as.numeric(as.character(df$time_step))
df$signal <- as.numeric(as.character(df$perceived_signal_slow))
library(ggplot2)
ggplot(df, aes(x = time_step, y = signal, colour = signal_name)) +
geom_line() +
geom_segment(x = 4, xend=4, y = -Inf, yend=10, colour = "black", size = 0.2) +
geom_segment(x= -Inf, xend=4, y = 10, yend = 10, colour = "black", size = 0.2) +
geom_segment(x= -Inf, xend=4, y = 4, yend = 4, colour = "black", size = 0.2)
这会产生:
以下代码生成以下图:
time_step <- c(1:5, 1:5)
perceived_signal_slow <- c(1:5, cumsum(1:5))
signal_name <- c("perceived","perceived","perceived","perceived","perceived","accumulated","accumulated","accumulated","accumulated","accumulated")
df <- cbind(perceived_signal_slow, signal_name, time_step)
df <- as.data.frame(df)
df$time_step <- as.numeric(as.character(df$time_step))
df$perceived_signal_slow <- as.numeric(as.character(df$perceived_signal_slow))
ggplot(df, aes(x = time_step, y = signal, colour = signal_name)) +
geom_line() +
geom_vline(xintercept = 4, colour = "black", size = 1, alpha = .4) +
geom_hline(yintercept = 10, colour = "black", size = 1, alpha = .4) +
geom_hline(yintercept = 4, colour = "black", size = 1, alpha = .4)
在此先感谢您的帮助!
我们可以使用 geom_segment
:
time_step <- c(1:5, 1:5)
perceived_signal_slow <- c(1:5, cumsum(1:5))
signal_name <- c("perceived","perceived","perceived","perceived","perceived","accumulated","accumulated","accumulated","accumulated","accumulated")
df <- cbind(perceived_signal_slow, signal_name, time_step)
df <- as.data.frame(df)
df$time_step <- as.numeric(as.character(df$time_step))
df$signal <- as.numeric(as.character(df$perceived_signal_slow))
library(ggplot2)
ggplot(df, aes(x = time_step, y = signal, colour = signal_name)) +
geom_line() +
geom_segment(x = 4, xend=4, y = -Inf, yend=10, colour = "black", size = 0.2) +
geom_segment(x= -Inf, xend=4, y = 10, yend = 10, colour = "black", size = 0.2) +
geom_segment(x= -Inf, xend=4, y = 4, yend = 4, colour = "black", size = 0.2)
这会产生: