在ggplot线形图和滑块范围中设置x轴的限制

时间:2019-05-13 15:16:05

标签: r ggplot2

我的数据框如下:

df <- data.frame(x=sample(1:3, 10, replace=TRUE), y=sample(20:30, 10, replace=TRUE))
df$x <- as.factor(df$x)
我要从中创建

折线图,该折线图将从x的最小值开始,到x中的x-axis的最大值结束。问题是,当我使用limits时,我仍然在情节的x-axis中得到小于1且大于3的值。我试图删除滑块范围,但问题仍然存在。

library(ggplot2)
library(plotly)
ggplotly(ggplot(data = df, aes(x = x, y = y))  + geom_line( colour="#00A0BD")+scale_x_discrete(limits=c("1", "2", "3")) + xlab("Year") + ylab("Total Headcount") + ylim(0, 50)) %>% 
  rangeslider()

1 个答案:

答案 0 :(得分:1)

调试起来很有趣-之前我没有使用过ggplotly和rangelider。

df <- data.frame(x=sample(1:3, 10, replace=TRUE), y=sample(20:30, 10, replace=TRUE))

df_new <-
  df %>% 
  group_by(x) %>% 
  summarize(
    ymin = min(y),
    ymax = max(y)
  )

p <- 
  df_new %>% 
  ggplot(aes(x = x, xend = x, y = ymin, yend = ymax)) +
  geom_segment() +
  scale_x_continuous(breaks = c(1, 2, 3)) +
  scale_y_continuous(limits = c(0, 50))

ggplotly(p) %>% 
  rangeslider(start = 0.5, end = 3.5)

首先,您需要在x轴上进行因子调用。在为每个x创建最小和最大y值的汇总表后,可以使用geom_segment来绘制线条。然后可以在start中使用endrangeslider参数来选择x轴的限制。