首页 > 解决方案 > R:使用ggplot在x轴上连续缩放

问题描述

我正在尝试在 x 轴上绘制每小时值(从 00 到 23)。

但是,当尝试下面的代码时,它最终会导致我的 R Studio 崩溃。我想知道我是否缺少一个步骤,或者我是否使用了错误的代码来实现这一点。

> glimpse(df_temp$Start.Hour)
 int [1:496728] 18 17 9 8 20 20 0 21 13 16 ...
# Trip distance by time of the day
p5 <- ggplot(df_temp, aes(x=Start.Hour, y=Trip.Distance)) +
  geom_col(fill="salmon") +
  labs(title="Trip Distance by Time of the Day",
      x="Hour of the Day",
      y="Distance (km)") +
      theme_bw() +
  theme(plot.title=element_text(size=14, face="bold")) +
  theme(axis.title.x=element_text(size = 12, face = "bold")) +
  theme(axis.text.x=element_text(size=10, face = "bold")) + 
  theme(axis.title.y=element_text(size=12, face = "bold")) +
  theme(axis.text.y=element_text(size=10, face = "bold")) +
  scale_x_continuous(labels = as.character(df_temp$Start.Hour), breaks = df_temp$Start.Hour)
  
p5

这就是我在没有 scale_x_continuous() 的情况下得到的

在此处输入图像描述

这就是我想要实现的目标: 在此处输入图像描述

注意:两个图中都使用了不同的数据集。

标签: rggplot2axis-labelsgeom-col

解决方案


在 scale_x_continuous 函数中,标签和中断不应引用整个值向量。相反,您应该尝试:标签 = 0:23 和休息 = 0:23

p5 <- ggplot(df_temp, aes(x=Start.Hour, y=Trip.Distance)) +
  geom_col(fill="salmon") +
  labs(title="Trip Distance by Time of the Day",
       x="Hour of the Day",
       y="Distance (km)") +
  theme_bw() +
  theme(plot.title=element_text(size=14, face="bold")) +
  theme(axis.title.x=element_text(size = 12, face = "bold")) +
  theme(axis.text.x=element_text(size=10, face = "bold")) + 
  theme(axis.title.y=element_text(size=12, face = "bold")) +
  theme(axis.text.y=element_text(size=10, face = "bold")) +
  scale_x_continuous(labels = 0:23, breaks = 0:23)       # changes only here !

推荐阅读