我的数据框如下:
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()
答案 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
中使用end
和rangeslider
参数来选择x轴的限制。