如何在 ggplot2::geom_step() 中居中线类似于 highcharter
How to center line in ggplot2::geom_step() similar to highcharter
对于我的情节,我希望 ggplot2::geom_step()
线对齐以我的点为中心,而不是向左对齐
在 highcharter::hc_add_series(type = "line")
中有一个名为 step = "center"
的选项。请参阅我的 jsfiddle 了解我在 ggplot2
中想要的外观。
library(ggplot2)
#> Warning: package 'ggplot2' was built under R version 3.5.1
my_data <-
data.frame(
x = c("2015-06", "2015-07", "2015-08", "2015-09",
"2015-10", "2015-11", "2015-12", "2016"),
y = c(35, 41, 40, 45, 56, 54, 60, 57),
cl = c(37, 37, 37, 37, 59, 59, 59, 59),
ucl = c(48, 47, 47, 47, 69, 69, 68, 68),
lcl = c(26, 27, 27, 27, 48, 49, 49, 49)
)
# Minimal ggplot
ggplot(my_data, aes(x = x, y = y, group = 1)) +
geom_line() +
geom_point() +
geom_step(aes(y = cl), linetype = "dashed") +
geom_step(aes(y = ucl), linetype = "dotted") +
geom_step(aes(y = lcl), linetype = "dotted")
由 reprex package (v0.2.1)
创建于 2019-05-02
您可以使用position = position_nudge(x = -0.5)
我调整了您的 lcl 和 ucl 值以使更改更容易看到。
my_data <-
data.frame(
x = as.Date(c("2015-06-01", "2015-07-01", "2015-08-01", "2015-09-01",
"2015-10-01", "2015-11-01", "2015-12-01", "2016-01-01")),
y = c(35, 41, 40, 45, 56, 54, 60, 57),
cl = c(37, 37, 37, 37, 59, 59, 59, 59),
ucl = c(48, 47, 42, 47, 70, 69, 68, 68),
lcl = c(26, 27, 30, 27, 48, 49, 50, 49)
)
ggplot(my_data, aes(x = x, y = y, group = 1)) +
geom_line() +
geom_point() +
geom_step(aes(y = cl), position = position_nudge(x = -15)) +
geom_step(aes(y = ucl), position = position_nudge(x = -15)) +
geom_step(aes(y = lcl), position = position_nudge(x = -15))
对于我的情节,我希望 ggplot2::geom_step()
线对齐以我的点为中心,而不是向左对齐
在 highcharter::hc_add_series(type = "line")
中有一个名为 step = "center"
的选项。请参阅我的 jsfiddle 了解我在 ggplot2
中想要的外观。
library(ggplot2)
#> Warning: package 'ggplot2' was built under R version 3.5.1
my_data <-
data.frame(
x = c("2015-06", "2015-07", "2015-08", "2015-09",
"2015-10", "2015-11", "2015-12", "2016"),
y = c(35, 41, 40, 45, 56, 54, 60, 57),
cl = c(37, 37, 37, 37, 59, 59, 59, 59),
ucl = c(48, 47, 47, 47, 69, 69, 68, 68),
lcl = c(26, 27, 27, 27, 48, 49, 49, 49)
)
# Minimal ggplot
ggplot(my_data, aes(x = x, y = y, group = 1)) +
geom_line() +
geom_point() +
geom_step(aes(y = cl), linetype = "dashed") +
geom_step(aes(y = ucl), linetype = "dotted") +
geom_step(aes(y = lcl), linetype = "dotted")
由 reprex package (v0.2.1)
创建于 2019-05-02您可以使用position = position_nudge(x = -0.5)
我调整了您的 lcl 和 ucl 值以使更改更容易看到。
my_data <-
data.frame(
x = as.Date(c("2015-06-01", "2015-07-01", "2015-08-01", "2015-09-01",
"2015-10-01", "2015-11-01", "2015-12-01", "2016-01-01")),
y = c(35, 41, 40, 45, 56, 54, 60, 57),
cl = c(37, 37, 37, 37, 59, 59, 59, 59),
ucl = c(48, 47, 42, 47, 70, 69, 68, 68),
lcl = c(26, 27, 30, 27, 48, 49, 50, 49)
)
ggplot(my_data, aes(x = x, y = y, group = 1)) +
geom_line() +
geom_point() +
geom_step(aes(y = cl), position = position_nudge(x = -15)) +
geom_step(aes(y = ucl), position = position_nudge(x = -15)) +
geom_step(aes(y = lcl), position = position_nudge(x = -15))