【问题标题】:How do you change the X axis number? [duplicate]如何更改 X 轴编号? [复制]
【发布时间】:2019-11-23 00:58:05
【问题描述】:
p = ggplot() + 
  geom_line(data = Month_time, aes(x = Month, y = CarrierDelay), color = "red") +
  geom_line(data = Month_time, aes(x = Month, y = WeatherDelay), color = "purple") +
  geom_line(data = Month_time, aes(x = Month, y = NASDelay), color = "yellow") +
  geom_line(data = Month_time, aes(x = Month, y = SecurityDelay), color = "green") +
  geom_line(data = Month_time, aes(x = Month, y = LateAircraftDelay), color = "blue") +
  xlab('Month') +
  ylab('Delay Types [min]')
print(p)

Q 如何将月份的 X 轴更改为 1、2、3、4 ...? Q 另外,如何为每个图表添加标签?

【问题讨论】:

  • 如果您要制作多个相同的几何图形和硬编码颜色,您很可能没有适合 ggplot 形状的数据。重塑为长格式,然后将颜色分配给任何将一种颜色与另一种颜色分开的变量,这将为您提供一个图例。有很多关于这个的帖子。您还可以在scale_x_continuous 通话中设置休息时间

标签: r ggplot2 plot graph


【解决方案1】:

您可以使用scale_x_continuous。此外,您可以通过在开头指定一次数据源来获得所需的绘图:

ggplot(month_time) + 
  geom_line(aes(x = Month, y = WeatherDelay), color = "purple") +
  geom_line(aes(x = Month, y = NASDelay), color = "yellow") + 
  scale_x_continuous(breaks = 1:12)

【讨论】:

  • 我收到了这个错误。 FUN(X[[i]], ...) 中的错误:找不到对象“CarrierDelay”
  • @loms 这意味着month_time 不包含名为CarrierDelay 的列。您能否检查一下是否确实如此,并分享dput(Month_time) 的输出,以便我们也可以查看一下?
  • @loms 如果你想要“轴标签”,你可以使用xlabylab,对于图例条目,这里发布的答案很有帮助:stackoverflow.com/questions/10349206/…
【解决方案2】:

这里是一个代码示例,它应该重新组织您的数据以准备好由 ggplot2 绘制:

library(tidyr)
library(dplyr)
library(ggplot2)

Month_subset = Month_time %>% select(., Month, CarrierDelay, WeatherDelay, NASDelay, SecurityDelay, LateAircraftDelay) %>%
  pivot_longer(-Month,names_to = "Conditions", values_to = "Value") 

ggplot(Month_subset, aes(x = Month, y = Value, color = Conditions)) + 
         geom_line() +
         ylab("Delay Types [min]") +
         scale_x_continuous(breaks = 1:12)

基本上,使用dplyrtidyr,我们将转到select 感兴趣的列,然后使用pivot_longer 以长格式重新组织数据。最后,我们将使用ggplot2 一次性绘制所有内容。像这样,您的每个条件都将以不同的颜色绘制,并且将添加一个提及每个标签的图例。

警告此代码基于我对您正在尝试执行的操作的理解,但我无法验证它,因为您没有提供数据集的 reproducible example。如果您在问题中添加一个,我很乐意测试我的代码并根据您的真实数据更新它

【讨论】:

  • 错误:意外的 '=' in: " xlab('Month') + scale_x_continuous(break ="
  • 抱歉,我弄错了,是breaks 而不是break ;) 我正在纠正我的答案
  • 它现在确实有效非常感谢!您能否给我一个添加标签的想法?
  • 对于添加标签,如果您更改@camille 提到的数据结构会更好。我编辑了我的答案,为您提供了一些代码来做到这一点
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-13
  • 2017-06-26
  • 1970-01-01
  • 1970-01-01
  • 2020-02-04
  • 1970-01-01
相关资源
最近更新 更多