删除由 lty 引起的行中断
remove the break in the line being caused by lty
我有一个时间序列,我想在 ggplot 中绘制。我想表明数据在某一点出现了中断。我相信一个好的方法是改变线型(即 lty
)。然而,这样做会使情节出现恼人的中断。有没有办法连接这些线?
这是时间序列的一些示例代码,其中 "break" 其中 year == 0
:
df = tibble(year = -5:5, value=runif(11))
df$lty = df$year <= 0
ggplot(data=df, aes(x=year, y=value, lty=lty)) + geom_line()
我在上传生成的图像时遇到困难,但它制作了一个在 year == 0
和 year == 1
之间跳跃的折线图,这是我不想要的。
谢谢互联网的聪明人!!!
这个怪癖是由 ggplot 基于 colour
、linetype
等的数据点隐式分组引起的。手动将组设置为某些东西并不能解决这个问题,因为有一个 1- line-1-look 规则。
这里有两个选项。
选项 1:只需复制数据点并就地修改:
library(tidyverse)
df = tibble(year = -5:5, value=runif(11))
df$lty = df$year <= 0
df <- rbind(df, df[df$year == 0,])
df$lty[nrow(df)] <- FALSE
ggplot(data=df, aes(x=year, y=value, lty=lty)) + geom_line()
选项 2:将您的数据参数化为分段
df = tibble(year = -5:5, value=runif(11))
df = cbind(head(df, -1),
tail(df, -1)) %>%
setNames(c("year0", "value0", "year1", "value1"))
df$lty <- df$year0 <= 0 & df$year1 <= 0
ggplot(df, aes(x = year0, y = value0, xend = year1, yend = value1, linetype = lty)) +
geom_segment()
由 reprex package (v0.3.0)
于 2020-05-27 创建
我有一个时间序列,我想在 ggplot 中绘制。我想表明数据在某一点出现了中断。我相信一个好的方法是改变线型(即 lty
)。然而,这样做会使情节出现恼人的中断。有没有办法连接这些线?
这是时间序列的一些示例代码,其中 "break" 其中 year == 0
:
df = tibble(year = -5:5, value=runif(11))
df$lty = df$year <= 0
ggplot(data=df, aes(x=year, y=value, lty=lty)) + geom_line()
我在上传生成的图像时遇到困难,但它制作了一个在 year == 0
和 year == 1
之间跳跃的折线图,这是我不想要的。
谢谢互联网的聪明人!!!
这个怪癖是由 ggplot 基于 colour
、linetype
等的数据点隐式分组引起的。手动将组设置为某些东西并不能解决这个问题,因为有一个 1- line-1-look 规则。
这里有两个选项。
选项 1:只需复制数据点并就地修改:
library(tidyverse)
df = tibble(year = -5:5, value=runif(11))
df$lty = df$year <= 0
df <- rbind(df, df[df$year == 0,])
df$lty[nrow(df)] <- FALSE
ggplot(data=df, aes(x=year, y=value, lty=lty)) + geom_line()
选项 2:将您的数据参数化为分段
df = tibble(year = -5:5, value=runif(11))
df = cbind(head(df, -1),
tail(df, -1)) %>%
setNames(c("year0", "value0", "year1", "value1"))
df$lty <- df$year0 <= 0 & df$year1 <= 0
ggplot(df, aes(x = year0, y = value0, xend = year1, yend = value1, linetype = lty)) +
geom_segment()
由 reprex package (v0.3.0)
于 2020-05-27 创建