【问题标题】:ggplot: line plot for discrete x-axisggplot:离散x轴的线图
【发布时间】:2016-05-14 13:05:09
【问题描述】:

我有下表,但经过多次尝试后无法绘制数据,因此 x 轴刻度线与 year 对齐。我找到了箱线图的解决方案,但不是geom_line()

如何制作年份的离散标签?

以下解决方案无效

g + scale_x_discrete(limits=c("2013","2014","2015"))
g + scale_x_discrete(labels=c("2013","2014","2015"))
distance_of_moves 距离移动年份 1 2.914961 2013 2 2.437516 2014 3 2.542500 2015 ggplot(data = distance_of_moves, aes(x = year, y = `距离移动`, group = 1)) + geom_line(color = "red", linetype = "dashed", size = 1.5) + geom_point(color = "red", size = 4, shape = 21, fill = "white") + ylab("平均移动距离") + xlab("年")

【问题讨论】:

  • 您是否打算在标签中两次列出 2014 年?
  • aes()中使用as.factor(year)
  • 不,只有一次,那是个错误
  • 现在你有一个连续的比例,因为你的year 列是数字的。您可以 (a) 将该列转换为 factor 或 (b) 指定所需的间隔并继续使用连续刻度:+ scale_x_continuous(breaks = 2013:2015)
  • @JabroJacob 在 R(和 ggplot 中)分类/数字通常是有意义的区别。年份,即使它们是时间的离散度量,也是“连续的”,因为它们存储为数字(并且年份之间的距离之类的东西是明确定义的)。离散(整数)与连续(实数)数值之间很少有重要区别。

标签: r ggplot2


【解决方案1】:

可重现的例子:

data <- data.frame(dist=c(2.914, 2.437, 2.542), year=c(2013, 2014, 2015))
# this ensures that stuff will be ordered appropriately
data$year <- ordered(data$year, levels=c(2013, 2014, 2015))
ggplot(data, aes(x=factor(year), y=dist, group=1)) +
  geom_line() +
  geom_point()

将年份指定为有序因子将确保 x 轴正确排序,而不管级别出现的顺序如何(而在绘图美学中仅使用“因子(年份)”可能会导致问题)。

【讨论】:

  • “group=1”有什么作用?顺便说一句,在这个论坛上一定时间后应该有一些自动接受答案。
  • 你需要在 ggplot2 中有线条的群体美学; ggplot2 的编写方式,您选择的特定几何图形应用于所有相关分类变量的组合(即,在这种情况下,x 轴的因子)。这不适用于线条,因为它会导致每点有 1 条线(这不是一回事)。因此,指定 group=1 告诉 ggplot 每个点都将与单个线组连接。
  • stackoverflow.com/questions/10357768/…这篇文章提供了详细信息
  • 哦!非常感谢!!?
猜你喜欢
  • 2021-11-01
  • 2010-12-22
  • 2018-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-27
相关资源
最近更新 更多