使用 scale_x_discrete() 删除图的左侧(从 0 到 13)

标签 r graphics ggplot2

数据可以在这里下载:https://docs.google.com/spreadsheets/d/1McbcquHdsdlEM_yPfBQHeX_CpUcARAm1I3VtASNsY3k/edit?usp=sharing

这是我的代码

# load data
raw_data <- read.csv("Sleep vs reaction time (Responses) - Form Responses 1.csv")

library(ggplot2)

#histogram
qplot(x = Age, data = raw_data, xlim = c(13,43), geom = "histogram") + scale_x_continuous()


qplot(x = Age, data = raw_data, xlim = c(13,43), geom = "histogram") + scale_x_discrete()

我想按年龄绘制直方图。 它是离散值(年龄是整数)所以我使用 scale_x_discrete 来分隔条形图。然而,它看起来像 discrete
左边有空格。

如果我使用 scale_x_continuous(),左边的空间将消失,但条形之间的分隔也消失了。 continue

我想摆脱左侧的空间,从 0 到 13,但保留栏之间的分隔。请告诉我怎么做。

谢谢。

我的解决方案:
感谢@Gregor,这是我的解决方案:

raw_data$Age = factor(raw_data$Age) #convert Age column to factor
qplot(x = Age, data = raw_data, geom = "histogram") + scale_x_discrete()

结果:
age_hist

最佳答案

您应该让数据的类别决定尺度是离散的还是连续的。 ggplot 没有对整数尺度的内置支持,因为它不同于数字尺度,所以如果你想要一个离散尺度,你应该将你的年龄数据转换为 factor (如果还没有的话):

raw_data$Age_factor = factor(raw_data$Age)

如果您指定xlim,那么默认值将为您提供您想要的。

qplot(x = Age_factor, data = raw_data, geom = "histogram")

这有点令人困惑,但实际上是您的 xlim = c(13, 43) 将您的图形向右移动。在离散尺度上,13 和 43 指的是第 13 和 43 个离散级别,因此通过设置这些 xlim,您可以强制数据向右移动。

关于使用 scale_x_discrete() 删除图的左侧(从 0 到 13),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32799688/

相关文章:

r - 调整条形图ggplot2中的轴限制

R Shiny 在加载 UI 之前观察运行,这会导致 Null 参数

r - 为什么 Facebook 'post date' 大于 R 中的 'post commented date'?

c++ - 光线追踪阴影错误

java - 如何在java中垂直绘制图形?

r - 在构面的第一个情节中的位置图例

r - 如何使用 stat ="identity"ggplot 躲避条形图?

r - 根据行和列指定添加矩阵

javascript - 如何在不使用外部库的情况下使用 JavaScript 绘制折线图

r - 为 R 图中的每个因子水平分配颜色